theory data: copy;
authorwenzelm
Fri, 30 Apr 1999 18:10:03 +0200
changeset 6556 daa00919502b
parent 6555 17b7b88a8e3c
child 6557 d7e7532c128a
theory data: copy;
src/HOL/Tools/datatype_package.ML
src/HOL/Tools/inductive_package.ML
src/HOL/Tools/record_package.ML
src/Provers/classical.ML
src/Provers/simplifier.ML
src/ZF/Tools/induct_tacs.ML
src/ZF/Tools/typechk.ML
--- a/src/HOL/Tools/datatype_package.ML	Fri Apr 30 18:09:33 1999 +0200
+++ b/src/HOL/Tools/datatype_package.ML	Fri Apr 30 18:10:03 1999 +0200
@@ -86,6 +86,7 @@
   type T = datatype_info Symtab.table;
 
   val empty = Symtab.empty;
+  val copy = I;
   val prep_ext = I;
   val merge: T * T -> T = Symtab.merge (K true);
 
--- a/src/HOL/Tools/inductive_package.ML	Fri Apr 30 18:09:33 1999 +0200
+++ b/src/HOL/Tools/inductive_package.ML	Fri Apr 30 18:10:03 1999 +0200
@@ -161,6 +161,7 @@
   type T = inductive_info Symtab.table;
 
   val empty = Symtab.empty;
+  val copy = I;
   val prep_ext = I;
   val merge: T * T -> T = Symtab.merge (K true);
 
--- a/src/HOL/Tools/record_package.ML	Fri Apr 30 18:09:33 1999 +0200
+++ b/src/HOL/Tools/record_package.ML	Fri Apr 30 18:10:03 1999 +0200
@@ -338,6 +338,7 @@
       (thm Symtab.table * Simplifier.simpset);          (*field split rules*)
 
   val empty = (Symtab.empty, (Symtab.empty, HOL_basic_ss));
+  val copy = I;
   val prep_ext = I;
   fun merge ((recs1, (sps1, ss1)), (recs2, (sps2, ss2))) =
     (Symtab.merge (K true) (recs1, recs2),
--- a/src/Provers/classical.ML	Fri Apr 30 18:09:33 1999 +0200
+++ b/src/Provers/classical.ML	Fri Apr 30 18:10:03 1999 +0200
@@ -31,7 +31,7 @@
   val clasetK: Object.kind
   exception ClasetData of Object.T ref
   val setup: (theory -> theory) list
-  val fix_methods: Object.T * (Object.T -> Object.T) *
+  val fix_methods: Object.T * (Object.T -> Object.T) * (Object.T -> Object.T) *
     (Object.T * Object.T -> Object.T) * (Sign.sg -> Object.T -> unit) -> unit
 end;
 
@@ -181,18 +181,20 @@
   fun undef _ = raise Match;
 
   val empty_ref = ref ERROR;
+  val copy_fn = ref (undef: Object.T -> Object.T);
   val prep_ext_fn = ref (undef: Object.T -> Object.T);
   val merge_fn = ref (undef: Object.T * Object.T -> Object.T);
   val print_fn = ref (undef: Sign.sg -> Object.T -> unit);
 
   val empty = ClasetData empty_ref;
+  fun copy exn = ! copy_fn exn;
   fun prep_ext exn = ! prep_ext_fn exn;
   fun merge exn = ! merge_fn exn;
   fun print sg exn = ! print_fn sg exn;
 in
-  val setup = [Theory.init_data clasetK (empty, prep_ext, merge, print)];
-  fun fix_methods (e, ext, mrg, prt) =
-    (empty_ref := e; prep_ext_fn := ext; merge_fn := mrg; print_fn := prt);
+  val setup = [Theory.init_data clasetK (empty, copy, prep_ext, merge, print)];
+  fun fix_methods (e, cp, ext, mrg, prt) =
+    (empty_ref := e; copy_fn := cp; prep_ext_fn := ext; merge_fn := mrg; print_fn := prt);
 end;
 
 
@@ -787,15 +789,16 @@
   val empty = CSData (ref empty_cs);
 
   (*create new references*)
-  fun prep_ext (ClasetData (ref (CSData (ref cs)))) =
+  fun copy (ClasetData (ref (CSData (ref cs)))) =
     ClasetData (ref (CSData (ref cs)));
+  val prep_ext = copy;
 
   fun merge (ClasetData (ref (CSData (ref cs1))), ClasetData (ref (CSData (ref cs2)))) =
     ClasetData (ref (CSData (ref (merge_cs (cs1, cs2)))));
 
   fun print (_: Sign.sg) (ClasetData (ref (CSData (ref cs)))) = print_cs cs;
 in
-  val _ = fix_methods (empty, prep_ext, merge, print);
+  val _ = fix_methods (empty, copy, prep_ext, merge, print);
 end;
 
 
--- a/src/Provers/simplifier.ML	Fri Apr 30 18:09:33 1999 +0200
+++ b/src/Provers/simplifier.ML	Fri Apr 30 18:10:03 1999 +0200
@@ -266,7 +266,8 @@
   type T = simpset ref;
 
   val empty = ref empty_ss;
-  fun prep_ext (ref ss) = (ref ss): T;            (*create new reference!*)
+  fun copy (ref ss) = (ref ss): T;            (*create new reference!*)
+  val prep_ext = copy;
   fun merge (ref ss1, ref ss2) = ref (merge_ss (ss1, ss2));
   fun print _ (ref ss) = print_ss ss;
 end;
--- a/src/ZF/Tools/induct_tacs.ML	Fri Apr 30 18:09:33 1999 +0200
+++ b/src/ZF/Tools/induct_tacs.ML	Fri Apr 30 18:10:03 1999 +0200
@@ -37,6 +37,7 @@
   type T = datatype_info Symtab.table;
 
   val empty = Symtab.empty;
+  val copy = I;
   val prep_ext = I;
   val merge: T * T -> T = Symtab.merge (K true);
 
@@ -63,6 +64,7 @@
   type T = constructor_info Symtab.table
 
   val empty = Symtab.empty
+  val copy = I;
   val prep_ext = I
   val merge: T * T -> T = Symtab.merge (K true)
 
--- a/src/ZF/Tools/typechk.ML	Fri Apr 30 18:09:33 1999 +0200
+++ b/src/ZF/Tools/typechk.ML	Fri Apr 30 18:10:03 1999 +0200
@@ -94,7 +94,8 @@
   val name = "ZF/type-checker";
   type T = tcset ref;
   val empty = ref (TC{rules=[], net=Net.empty});
-  fun prep_ext (ref ss) = (ref ss): T;            (*create new reference!*)
+  fun copy (ref tc) = ref tc;
+  val prep_ext = copy;
   fun merge (ref tc1, ref tc2) = ref (merge_tc (tc1, tc2));
   fun print _ (ref tc) = print_tc tc;
   end;