equal
deleted
inserted
replaced
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 |
|