src/FOL/simpdata.ML
changeset 5219 924359415f09
parent 5115 caf39b7b7a12
child 5220 07f80f447b27
equal deleted inserted replaced
5218:1a49756a2e68 5219:924359415f09
   332 
   332 
   333 simpset_ref() := FOL_ss;
   333 simpset_ref() := FOL_ss;
   334 
   334 
   335 
   335 
   336 
   336 
   337 
   337 (*** integration of simplifier with classical reasoner ***)
   338 
       
   339 
       
   340 
       
   341 (*** Integration of simplifier with classical reasoner ***)
       
   342 
   338 
   343 (* rot_eq_tac rotates the first equality premise of subgoal i to the front,
   339 (* rot_eq_tac rotates the first equality premise of subgoal i to the front,
   344    fails if there is no equaliy or if an equality is already at the front *)
   340    fails if there is no equaliy or if an equality is already at the front *)
   345 local
   341 local
   346   fun is_eq (Const ("Trueprop", _) $ (Const("op ="  ,_) $ _ $ _)) = true
   342   fun is_eq (Const ("Trueprop", _) $ (Const("op ="  ,_) $ _ $ _)) = true
   351 val rot_eq_tac = 
   347 val rot_eq_tac = 
   352      SUBGOAL (fn (Bi,i) => let val n = find_eq (Logic.strip_assums_hyp Bi) in
   348      SUBGOAL (fn (Bi,i) => let val n = find_eq (Logic.strip_assums_hyp Bi) in
   353 		if n>0 then rotate_tac n i else no_tac end)
   349 		if n>0 then rotate_tac n i else no_tac end)
   354 end;
   350 end;
   355 
   351 
   356 use "$ISABELLE_HOME/src/Provers/clasimp.ML";
   352 
       
   353 structure Clasimp = ClasimpFun
       
   354  (structure Simplifier = Simplifier and Classical = Cla and Blast = Blast
       
   355   val addcongs = op addcongs and delcongs = op delcongs
       
   356   and addSaltern = op addSaltern and addbefore = op addbefore);
       
   357 
   357 open Clasimp;
   358 open Clasimp;
   358 
   359 
   359 val FOL_css = (FOL_cs, FOL_ss);
   360 val FOL_css = (FOL_cs, FOL_ss);
   360