src/Provers/clasimp.ML
changeset 8639 31bcb6b64d60
parent 8469 482c301041b4
child 9402 480a1b40fdd6
equal deleted inserted replaced
8638:21cb46716f32 8639:31bcb6b64d60
    43   val Auto_tac	  : tactic
    43   val Auto_tac	  : tactic
    44   val auto	  : unit -> unit
    44   val auto	  : unit -> unit
    45   val force_tac	  : clasimpset  -> int -> tactic
    45   val force_tac	  : clasimpset  -> int -> tactic
    46   val Force_tac	  : int -> tactic
    46   val Force_tac	  : int -> tactic
    47   val force	  : int -> unit
    47   val force	  : int -> unit
       
    48   val change_global_css: (clasimpset * thm list -> clasimpset) -> theory attribute
       
    49   val change_local_css: (clasimpset * thm list -> clasimpset) -> Proof.context attribute
    48   val setup	  : (theory -> theory) list
    50   val setup	  : (theory -> theory) list
    49 end;
    51 end;
    50 
    52 
    51 functor ClasimpFun(Data: CLASIMP_DATA): CLASIMP =
    53 functor ClasimpFun(Data: CLASIMP_DATA): CLASIMP =
    52 struct
    54 struct
   146 	ALLGOALS (Classical.best_tac cs')]) end;
   148 	ALLGOALS (Classical.best_tac cs')]) end;
   147 fun Force_tac i = force_tac (Classical.claset(), Simplifier.simpset()) i;
   149 fun Force_tac i = force_tac (Classical.claset(), Simplifier.simpset()) i;
   148 fun force i = by (Force_tac i);
   150 fun force i = by (Force_tac i);
   149 
   151 
   150 
   152 
       
   153 (* attributes *)
       
   154 
       
   155 fun change_global_css f (thy, th) =
       
   156   let
       
   157     val cs_ref = Classical.claset_ref_of thy;
       
   158     val ss_ref = Simplifier.simpset_ref_of thy;
       
   159     val (cs', ss') = f ((! cs_ref, ! ss_ref), [th]);
       
   160   in cs_ref := cs'; ss_ref := ss'; (thy, th) end;
       
   161 
       
   162 fun change_local_css f (ctxt, th) =
       
   163   let
       
   164     val cs = Classical.get_local_claset ctxt;
       
   165     val ss = Simplifier.get_local_simpset ctxt;
       
   166     val (cs', ss') = f ((cs, ss), [th]);
       
   167     val ctxt' =
       
   168       ctxt
       
   169       |> Classical.put_local_claset cs'
       
   170       |> Simplifier.put_local_simpset ss';
       
   171   in (ctxt', th) end;
       
   172 
       
   173 
   151 (* methods *)
   174 (* methods *)
   152 
   175 
   153 fun get_local_clasimpset ctxt =
   176 fun get_local_clasimpset ctxt =
   154   (Classical.get_local_claset ctxt, Simplifier.get_local_simpset ctxt);
   177   (Classical.get_local_claset ctxt, Simplifier.get_local_simpset ctxt);
   155 
   178