src/Provers/simplifier.ML
changeset 15735 953f188e16c6
parent 15531 08c8dad8e399
--- a/src/Provers/simplifier.ML	Thu Apr 14 19:30:57 2005 +0200
+++ b/src/Provers/simplifier.ML	Fri Apr 15 12:00:00 2005 +0200
@@ -321,32 +321,38 @@
 
 (* Jia: added DeltaSimpsetArgs and DeltaSimpset for delta_simpset
 	also added methods to retrieve them. *)
+(* CB: changed "delta simpsets" to context data,
+       moved counter to here, it is no longer a ref *)
 
 structure DeltaSimpsetArgs =
 struct
-  val name = "delta_simpset";
-  type T = Thm.thm list; (*the type is thm list*)
-  val empty = [];
+  val name = "Provers/delta_simpset";
+  type T = Thm.thm list * int;  (*the type is thm list * int*)
+  fun init _ = ([], 0);
+  fun print ctxt thms = ();
 end;
 
-structure DeltaSimpset = DeltaDataFun(DeltaSimpsetArgs);
-val get_delta_simpset = DeltaSimpset.get;
-val put_delta_simpset = DeltaSimpset.put;
+structure DeltaSimpsetData = ProofDataFun(DeltaSimpsetArgs);
 
-val get_new_thm_id = ProofContext.get_delta_count_incr;
+val get_delta_simpset = #1 o DeltaSimpsetData.get;
+fun put_delta_simpset ss = DeltaSimpsetData.map (fn (_, i) => (ss, i));
+fun delta_increment ctxt =
+  let val ctxt' = DeltaSimpsetData.map (fn (ss, i) => (ss, i+1)) ctxt
+  in (ctxt', #2 (DeltaSimpsetData.get ctxt'))
+  end;
 
 (* Jia: added to rename a local thm if necessary *) 
 local 
 fun rename_thm' (ctxt,thm) =
-  let val new_id = get_new_thm_id ctxt
-      val new_name = "anon_" ^ (string_of_int new_id)
+  let val (new_ctxt, new_id) = delta_increment ctxt
+      val new_name = "anon_simp_" ^ (string_of_int new_id)
   in
-  Thm.name_thm(new_name,thm)
+    (new_ctxt, Thm.name_thm(new_name,thm))
 end;
 
 in
 
-fun rename_thm (ctxt,thm) = if (!Proof.call_atp) then rename_thm' (ctxt,thm) else thm;
+fun rename_thm (ctxt,thm) = if (!Proof.call_atp) then rename_thm' (ctxt,thm) else (ctxt, thm);
 
 end
 
@@ -371,11 +377,12 @@
 fun simp_add_local (ctxt,th) = 
     let val delta_ss = get_delta_simpset ctxt
 	val thm_name = Thm.name_of_thm th
-        val th' = if (thm_name = "") then rename_thm (ctxt,th)  else th
+        val (ctxt', th') =
+          if (thm_name = "") then rename_thm (ctxt,th)  else (ctxt, th)
 	val new_dss = th'::delta_ss
-	val ctxt' = put_delta_simpset new_dss ctxt 
+	val ctxt'' = put_delta_simpset new_dss ctxt' 
     in
-	change_local_ss (op addsimps) (ctxt',th)
+	change_local_ss (op addsimps) (ctxt'',th)
     end;
 
 val simp_del_local = change_local_ss (op delsimps);
@@ -523,7 +530,8 @@
 
 (** theory setup **)
 
-val setup = [GlobalSimpset.init, LocalSimpset.init, setup_attrs];
+val setup = [GlobalSimpset.init, LocalSimpset.init, DeltaSimpsetData.init,
+  setup_attrs];
 fun method_setup mods = [setup_methods mods];
 
 fun easy_setup reflect trivs =