src/Tools/Metis/make_metis
author haftmann
Sat, 19 Jul 2025 18:41:55 +0200
changeset 82886 8d1e295aab70
parent 73705 ac07f6be27ea
permissions -rwxr-xr-x
clarified name and status of auxiliary operation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
     1
#!/usr/bin/env bash
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
     2
#
39413
blanchet
parents: 39412
diff changeset
     3
# make_metis - turn original Metis files into Isabelle ML source.
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
     4
#
39427
a28be69dcb68 update comment
blanchet
parents: 39415
diff changeset
     5
# Signatures, structures, and functors are renamed to have a "Metis_" prefix.
a28be69dcb68 update comment
blanchet
parents: 39415
diff changeset
     6
# A few other ad hoc transformations are performed to ensure that the sources
a28be69dcb68 update comment
blanchet
parents: 39415
diff changeset
     7
# compile within Isabelle on Poly/ML and SML/NJ.
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
     8
73705
ac07f6be27ea avoid unexpected output+behaviour when CDPATH is set
kleing
parents: 72004
diff changeset
     9
unset CDPATH
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    10
THIS=$(cd "$(dirname "$0")"; echo $PWD)
39433
3e41c9d29769 make "metis.ML" building process slightly more robust by eliminating the need for "FILES";
blanchet
parents: 39427
diff changeset
    11
make -f Makefile.FILES refresh_FILES
39448
64639ff50fcd streamlined "make_metis"
blanchet
parents: 39433
diff changeset
    12
FILES=$(cat "$THIS/FILES")
39433
3e41c9d29769 make "metis.ML" building process slightly more robust by eliminating the need for "FILES";
blanchet
parents: 39427
diff changeset
    13
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    14
(
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    15
  cat <<EOF
39411
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    16
(*
39413
blanchet
parents: 39412
diff changeset
    17
   This file was generated by the "make_metis" script. The BSD License is used
72004
913162a47d9f Update Metis to 2.4
desharna
parents: 56281
diff changeset
    18
   with Joe Leslie-Hurd's kind permission. Extract from a September 13, 2010
913162a47d9f Update Metis to 2.4
desharna
parents: 56281
diff changeset
    19
   email written by him:
39411
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    20
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    21
       I hereby give permission to the Isabelle team to release Metis as part
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    22
       of Isabelle, with the Metis code covered under the Isabelle BSD
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    23
       license.
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    24
*)
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    25
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    26
(******************************************************************)
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    27
(* GENERATED FILE -- DO NOT EDIT -- GENERATED FILE -- DO NOT EDIT *)
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    28
(* GENERATED FILE -- DO NOT EDIT -- GENERATED FILE -- DO NOT EDIT *)
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    29
(* GENERATED FILE -- DO NOT EDIT -- GENERATED FILE -- DO NOT EDIT *)
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    30
(******************************************************************)
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    31
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    32
EOF
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    33
39448
64639ff50fcd streamlined "make_metis"
blanchet
parents: 39433
diff changeset
    34
  for FILE in $FILES
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    35
  do
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    36
    echo
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    37
    echo "(**** Original file: $FILE ****)"
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    38
    echo
39411
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    39
    echo -e "$FILE" >&2
39448
64639ff50fcd streamlined "make_metis"
blanchet
parents: 39433
diff changeset
    40
    "$THIS/scripts/mlpp" -c polyml "$FILE" | \
39411
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    41
    perl -p -e \
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    42
's/\bref\b/Unsynchronized.ref/g;'\
39448
64639ff50fcd streamlined "make_metis"
blanchet
parents: 39433
diff changeset
    43
"`grep "^\(signature\|structure\|functor\)" $FILES | \
39411
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    44
  sed "s/[^:]*:[a-z]* \([A-Za-z0-9_]*\).*/\1/" | \
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    45
  tr " " "\n" | \
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    46
  sort | \
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    47
  uniq | \
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    48
  sed 's/\(.*\)/s\/\\\\b\1\\\\b\/Metis_\1\/g;/'`"
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    49
  done
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    50
39411
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    51
  cat <<EOF
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    52
;
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    53
EOF
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    54
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    55
) > metis.ML