discontinued experimental support for Alice -- too hard to maintain its many language incompatibilities, never really worked anyway;
authorwenzelm
Sun, 01 Mar 2009 16:48:06 +0100
changeset 30189 3633f560f4c3
parent 30188 82144a95f9ec
child 30190 479806475f3c
child 30192 51e3e0e821c5
discontinued experimental support for Alice -- too hard to maintain its many language incompatibilities, never really worked anyway;
Admin/CHECKLIST
etc/settings
src/Pure/IsaMakefile
src/Pure/Isar/calculation.ML
src/Pure/Isar/expression.ML
src/Pure/Isar/isar_syn.ML
src/Pure/ML-Systems/alice.ML
src/Pure/Syntax/parser.ML
src/Pure/Syntax/syn_ext.ML
src/Pure/Syntax/syntax.ML
--- a/Admin/CHECKLIST	Sun Mar 01 16:22:37 2009 +0100
+++ b/Admin/CHECKLIST	Sun Mar 01 16:48:06 2009 +0100
@@ -1,7 +1,7 @@
 Checklist for official releases
 ===============================
 
-- test alice, mosml, polyml-5.0, polyml-4.1.3, polyml-4.1.4, polyml-4.2.0, x86-solaris, x86-cygwin;
+- test mosml, polyml-5.0, polyml-4.1.3, polyml-4.1.4, polyml-4.2.0, x86-solaris, x86-cygwin;
 
 - test ProofGeneral;
 
--- a/etc/settings	Sun Mar 01 16:22:37 2009 +0100
+++ b/etc/settings	Sun Mar 01 16:48:06 2009 +0100
@@ -60,12 +60,6 @@
 #ML_OPTIONS=""
 #ML_PLATFORM=""
 
-# Alice 1.4 (experimental!)
-#ML_SYSTEM=alice
-#ML_HOME="/usr/local/alice/bin"
-#ML_OPTIONS=""
-#ML_PLATFORM=""
-
 
 ###
 ### JVM components (Scala or Java)
--- a/src/Pure/IsaMakefile	Sun Mar 01 16:22:37 2009 +0100
+++ b/src/Pure/IsaMakefile	Sun Mar 01 16:48:06 2009 +0100
@@ -19,14 +19,14 @@
 
 ## Pure
 
-BOOTSTRAP_FILES = ML-Systems/alice.ML ML-Systems/exn.ML			\
-  ML-Systems/ml_name_space.ML ML-Systems/mosml.ML			\
-  ML-Systems/multithreading.ML ML-Systems/multithreading_polyml.ML	\
-  ML-Systems/overloading_smlnj.ML ML-Systems/polyml-4.1.3.ML		\
-  ML-Systems/polyml-4.1.4.ML ML-Systems/polyml-4.2.0.ML			\
-  ML-Systems/polyml-5.0.ML ML-Systems/polyml-5.1.ML			\
-  ML-Systems/polyml-experimental.ML ML-Systems/polyml.ML		\
-  ML-Systems/polyml_common.ML ML-Systems/polyml_old_compiler4.ML	\
+BOOTSTRAP_FILES = ML-Systems/exn.ML ML-Systems/ml_name_space.ML		\
+  ML-Systems/mosml.ML ML-Systems/multithreading.ML			\
+  ML-Systems/multithreading_polyml.ML ML-Systems/overloading_smlnj.ML	\
+  ML-Systems/polyml-4.1.3.ML ML-Systems/polyml-4.1.4.ML			\
+  ML-Systems/polyml-4.2.0.ML ML-Systems/polyml-5.0.ML			\
+  ML-Systems/polyml-5.1.ML ML-Systems/polyml-experimental.ML		\
+  ML-Systems/polyml.ML ML-Systems/polyml_common.ML			\
+  ML-Systems/polyml_old_compiler4.ML					\
   ML-Systems/polyml_old_compiler5.ML ML-Systems/proper_int.ML		\
   ML-Systems/smlnj.ML ML-Systems/system_shell.ML			\
   ML-Systems/thread_dummy.ML ML-Systems/time_limit.ML			\
--- a/src/Pure/Isar/calculation.ML	Sun Mar 01 16:22:37 2009 +0100
+++ b/src/Pure/Isar/calculation.ML	Sun Mar 01 16:48:06 2009 +0100
@@ -15,7 +15,7 @@
   val symmetric: attribute
   val also: (Facts.ref * Attrib.src list) list option -> bool -> Proof.state -> Proof.state Seq.seq
   val also_i: thm list option -> bool -> Proof.state -> Proof.state Seq.seq
-  val finally_: (Facts.ref * Attrib.src list) list option -> bool ->
+  val finally: (Facts.ref * Attrib.src list) list option -> bool ->
     Proof.state -> Proof.state Seq.seq
   val finally_i: thm list option -> bool -> Proof.state -> Proof.state Seq.seq
   val moreover: bool -> Proof.state -> Proof.state
@@ -150,7 +150,7 @@
 
 val also = calculate Proof.get_thmss false;
 val also_i = calculate (K I) false;
-val finally_ = calculate Proof.get_thmss true;
+val finally = calculate Proof.get_thmss true;
 val finally_i = calculate (K I) true;
 
 
--- a/src/Pure/Isar/expression.ML	Sun Mar 01 16:22:37 2009 +0100
+++ b/src/Pure/Isar/expression.ML	Sun Mar 01 16:48:06 2009 +0100
@@ -726,14 +726,14 @@
   | defines_to_notes _ e = e;
 
 fun gen_add_locale prep_decl
-    bname raw_predicate_bname raw_imprt raw_body thy =
+    bname raw_predicate_bname raw_import raw_body thy =
   let
     val name = Sign.full_bname thy bname;
     val _ = Locale.defined thy name andalso
       error ("Duplicate definition of locale " ^ quote name);
 
     val ((fixed, deps, body_elems), (parms, ctxt')) =
-      prep_decl raw_imprt I raw_body (ProofContext.init thy);
+      prep_decl raw_import I raw_body (ProofContext.init thy);
     val text as (((_, exts'), _), defs) = eval ctxt' deps body_elems;
 
     val predicate_bname = if raw_predicate_bname = "" then bname
--- a/src/Pure/Isar/isar_syn.ML	Sun Mar 01 16:22:37 2009 +0100
+++ b/src/Pure/Isar/isar_syn.ML	Sun Mar 01 16:48:06 2009 +0100
@@ -693,7 +693,7 @@
 val _ =
   OuterSyntax.command "finally" "combine calculation and current facts, exhibit result"
     (K.tag_proof K.prf_chain)
-    (calc_args >> (Toplevel.proofs' o Calculation.finally_));
+    (calc_args >> (Toplevel.proofs' o Calculation.finally));
 
 val _ =
   OuterSyntax.command "moreover" "augment calculation by current facts"
--- a/src/Pure/ML-Systems/alice.ML	Sun Mar 01 16:22:37 2009 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,220 +0,0 @@
-(*  Title:      Pure/ML-Systems/alice.ML
-
-Compatibility file for Alice 1.4.
-
-NOTE: there is no wrapper script; may run it interactively as follows:
-
-$ cd Isabelle/src/Pure
-$ env ALICE_JIT_MODE=0 ISABELLE_HOME=$(cd ../..; pwd) alice
-- val ml_system = "alice";
-- use "ML-Systems/exn.ML";
-- use "ML-Systems/universal.ML";
-- use "ML-Systems/multithreading.ML";
-- use "ML-Systems/time_limit.ML";
-- use "ML-Systems/alice.ML";
-- use "ROOT.ML";
-- Session.finish ();
-*)
-
-val ml_system_fix_ints = false;
-
-fun forget_structure _ = ();
-
-fun exit 0 = (OS.Process.exit OS.Process.success): unit
-  | exit _ = OS.Process.exit OS.Process.failure;
-
-
-(** ML system related **)
-
-(*low-level pointer equality*)
-fun pointer_eq (_: 'a, _: 'a) = false;
-
-
-(* integer compatibility -- downgraded IntInf *)
-
-structure Time =
-struct
-  open Time;
-  val fromMilliseconds = Time.fromMilliseconds o IntInf.fromInt;
-  val fromSeconds = Time.fromSeconds o IntInf.fromInt;
-end;
-
-structure IntInf =
-struct
-  fun divMod (x, y) = (x div y, x mod y);
-  open Int;
-end;
-
-
-(* restore old-style character / string functions *)
-
-exception Ord;
-fun ord "" = raise Ord
-  | ord s = Char.ord (String.sub (s, 0));
-
-val chr = String.str o chr;
-val explode = map String.str o String.explode;
-val implode = String.concat;
-
-
-(* Poly/ML emulation *)
-
-fun quit () = exit 0;
-
-fun get_print_depth () = ! Print.depth;
-fun print_depth n = Print.depth := n;
-
-
-(* compiler-independent timing functions *)
-
-structure Timer =
-struct
-  open Timer;
-  type cpu_timer = unit;
-  fun startCPUTimer () = ();
-  fun checkCPUTimer () = {sys = Time.zeroTime, usr = Time.zeroTime};
-  fun checkGCTime () = Time.zeroTime;
-end;
-
-fun start_timing () =
-  let val CPUtimer = Timer.startCPUTimer();
-      val time = Timer.checkCPUTimer(CPUtimer)
-  in  (CPUtimer,time)  end;
-
-fun end_timing (CPUtimer, {sys,usr}) =
-  let open Time  (*...for Time.toString, Time.+ and Time.- *)
-      val {sys=sys2,usr=usr2} = Timer.checkCPUTimer(CPUtimer)
-  in  "User " ^ toString (usr2-usr) ^
-      "  All "^ toString (sys2-sys + usr2-usr) ^
-      " secs"
-      handle Time => ""
-  end;
-
-fun check_timer timer =
-  let
-    val {sys, usr} = Timer.checkCPUTimer timer;
-    val gc = Timer.checkGCTime timer;    (* FIXME already included in usr? *)
-  in (sys, usr, gc) end;
-
-
-(*prompts*)
-fun ml_prompts p1 p2 = ();
-
-(*dummy implementation*)
-fun profile (n: int) f x = f x;
-
-(*dummy implementation*)
-fun exception_trace f = f ();
-
-(*dummy implementation*)
-fun print x = x;
-
-
-(* toplevel pretty printing (see also Pure/pure_setup.ML) *)
-
-fun make_pp path pprint = (path, pprint);
-fun install_pp (path, pp) = ();
-
-
-(* ML command execution *)
-
-fun use_text _ _ _ _ _ txt = (Compiler.eval txt; ());
-fun use_file _ _ _ _ name = use name;
-
-
-
-(** interrupts **)
-
-exception Interrupt;
-
-fun interruptible f x = f x;
-fun uninterruptible f x = f (fn (g: 'c -> 'd) => g) x;
-
-
-(* basis library fixes *)
-
-structure TextIO =
-struct
-  open TextIO;
-  fun inputLine is = TextIO.inputLine is
-    handle IO.Io _ => raise Interrupt;
-end;
-
-
-
-(** OS related **)
-
-structure OS =
-struct
-  open OS;
-  structure FileSys =
-  struct
-    open FileSys;
-    fun tmpName () =
-      let val name = FileSys.tmpName () in
-        if String.isSuffix "\000" name
-        then String.substring (name, 0, size name - 1)
-        else name
-      end;
-  end;
-end;
-
-val cd = OS.FileSys.chDir;
-val pwd = OS.FileSys.getDir;
-
-local
-
-fun read_file name =
-  let val is = TextIO.openIn name
-  in Exn.release (Exn.capture TextIO.inputAll is before TextIO.closeIn is) end;
-
-fun write_file name txt =
-  let val os = TextIO.openOut name
-  in Exn.release (Exn.capture TextIO.output (os, txt) before TextIO.closeOut os) end;
-
-in
-
-fun system_out script =
-  let
-    val script_name = OS.FileSys.tmpName ();
-    val _ = write_file script_name script;
-
-    val output_name = OS.FileSys.tmpName ();
-
-    val status =
-      OS.Process.system ("perl -w \"$ISABELLE_HOME/lib/scripts/system.pl\" nogroup " ^
-        script_name ^ " /dev/null " ^ output_name);
-    val rc = if OS.Process.isSuccess status then 0 else 1;
-
-    val output = read_file output_name handle IO.Io _ => "";
-    val _ = OS.FileSys.remove script_name handle OS.SysErr _ => ();
-    val _ = OS.FileSys.remove output_name handle OS.SysErr _ => ();
-  in (output, rc) end;
-
-end;
-
-structure OS =
-struct
-  open OS;
-  structure FileSys =
-  struct
-    fun fileId name =
-      (case system_out ("perl -e '@_ = stat(q:" ^ name ^ ":); print $_[1]'") of
-        ("", _) => raise Fail "OS.FileSys.fileId"   (* FIXME IO.Io!? *)
-      | (s, _) => (case Int.fromString s of NONE => raise Fail "OS.FileSys.fileId" | SOME i => i));
-    val compare = Int.compare;
-    fun fullPath name =
-      (case system_out ("FILE='" ^ name ^
-        "' && cd \"$(dirname \"$FILE\")\" && echo -n \"$(pwd -P)/$(basename \"$FILE\")\"") of
-        ("", _) => raise SysErr ("Bad file", NONE)
-      | (s, _) => s);
-    open FileSys;
-  end;
-end;
-
-fun process_id () = raise Fail "process_id undefined";
-
-fun getenv var =
-  (case OS.Process.getEnv var of
-    NONE => ""
-  | SOME txt => txt);
--- a/src/Pure/Syntax/parser.ML	Sun Mar 01 16:22:37 2009 +0100
+++ b/src/Pure/Syntax/parser.ML	Sun Mar 01 16:48:06 2009 +0100
@@ -73,10 +73,10 @@
       val chain_from = case (pri, rhs) of (~1, [Nonterminal (id, ~1)]) => SOME id | _ => NONE;
 
       (*store chain if it does not already exist*)
-      val (new_chain, chains') = case chain_from of NONE => (NONE, chains) | SOME from_ =>
-        let val old_tos = these (AList.lookup (op =) chains from_) in
+      val (new_chain, chains') = case chain_from of NONE => (NONE, chains) | SOME from =>
+        let val old_tos = these (AList.lookup (op =) chains from) in
           if member (op =) old_tos lhs then (NONE, chains)
-          else (SOME from_, AList.update (op =) (from_, insert (op =) lhs old_tos) chains)
+          else (SOME from, AList.update (op =) (from, insert (op =) lhs old_tos) chains)
         end;
 
       (*propagate new chain in lookahead and lambda lists;
@@ -410,7 +410,7 @@
 
     fun pretty_nt (name, tag) =
       let
-        fun prod_of_chain from_ = ([Nonterminal (from_, ~1)], "", ~1);
+        fun prod_of_chain from = ([Nonterminal (from, ~1)], "", ~1);
 
         val nt_prods =
           Library.foldl (gen_union op =) ([], map snd (snd (Array.sub (prods, tag)))) @
@@ -552,8 +552,8 @@
           val to_tag = convert_tag to;
 
           fun make [] result = result
-            | make (from_ :: froms) result = make froms ((to_tag,
-                ([Nonterminal (convert_tag from_, ~1)], "", ~1)) :: result);
+            | make (from :: froms) result = make froms ((to_tag,
+                ([Nonterminal (convert_tag from, ~1)], "", ~1)) :: result);
         in mk_chain_prods cs (make froms [] @ result) end;
 
     val chain_prods = mk_chain_prods chains2 [];
--- a/src/Pure/Syntax/syn_ext.ML	Sun Mar 01 16:22:37 2009 +0100
+++ b/src/Pure/Syntax/syn_ext.ML	Sun Mar 01 16:48:06 2009 +0100
@@ -26,7 +26,7 @@
   val logic: string
   val args: string
   val cargs: string
-  val any_: string
+  val any: string
   val sprop: string
   val typ_to_nonterm: typ -> string
   datatype xsymb =
@@ -108,8 +108,8 @@
 val sprop = "#prop";
 val spropT = Type (sprop, []);
 
-val any_ = "any";
-val anyT = Type (any_, []);
+val any = "any";
+val anyT = Type (any, []);
 
 
 
@@ -181,7 +181,7 @@
   | typ_to_nt default _ = default;
 
 (*get nonterminal for rhs*)
-val typ_to_nonterm = typ_to_nt any_;
+val typ_to_nonterm = typ_to_nt any;
 
 (*get nonterminal for lhs*)
 val typ_to_nonterm1 = typ_to_nt logic;
--- a/src/Pure/Syntax/syntax.ML	Sun Mar 01 16:22:37 2009 +0100
+++ b/src/Pure/Syntax/syntax.ML	Sun Mar 01 16:48:06 2009 +0100
@@ -390,7 +390,7 @@
 val basic_nonterms =
   (Lexicon.terminals @ [SynExt.logic, "type", "types", "sort", "classes",
     SynExt.args, SynExt.cargs, "pttrn", "pttrns", "idt", "idts", "aprop",
-    "asms", SynExt.any_, SynExt.sprop, "num_const", "float_const",
+    "asms", SynExt.any, SynExt.sprop, "num_const", "float_const",
     "index", "struct"]);