src/Provers/classical.ML
changeset 6556 daa00919502b
parent 6502 bc30e13b36a8
child 6955 9e2d97ef55d2
--- 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;