equal
deleted
inserted
replaced
36 | _$(Const("op =",_)$_$_) => mk_meta_eq th |
36 | _$(Const("op =",_)$_$_) => mk_meta_eq th |
37 | _$(Const("Not",_)$_) => th RS Eq_FalseI |
37 | _$(Const("Not",_)$_) => th RS Eq_FalseI |
38 | _ => th RS Eq_TrueI; |
38 | _ => th RS Eq_TrueI; |
39 (* last 2 lines requires all formulae to be of the from Trueprop(.) *) |
39 (* last 2 lines requires all formulae to be of the from Trueprop(.) *) |
40 |
40 |
41 fun mk_eq_True r = Some(r RS meta_eq_to_obj_eq RS Eq_TrueI); |
41 fun mk_eq_True r = |
|
42 Some (r RS meta_eq_to_obj_eq RS Eq_TrueI) handle Thm.THM _ => None; |
42 |
43 |
43 (*Congruence rules for = (instead of ==)*) |
44 (*Congruence rules for = (instead of ==)*) |
44 fun mk_meta_cong rl = |
45 fun mk_meta_cong rl = |
45 standard(mk_meta_eq(replicate (nprems_of rl) meta_eq_to_obj_eq MRS rl)) |
46 standard(mk_meta_eq(replicate (nprems_of rl) meta_eq_to_obj_eq MRS rl)) |
46 handle THM _ => |
47 handle THM _ => |
350 | None => [th]) |
351 | None => [th]) |
351 | _ => [th]) |
352 | _ => [th]) |
352 | _ => [th]) |
353 | _ => [th]) |
353 in atoms end; |
354 in atoms end; |
354 |
355 |
355 fun mksimps pairs = (map mk_eq o mk_atomize pairs o forall_elim_vars_safe); |
356 fun mksimps pairs = |
|
357 (mapfilter (try mk_eq) o mk_atomize pairs o forall_elim_vars_safe); |
356 |
358 |
357 fun unsafe_solver_tac prems = |
359 fun unsafe_solver_tac prems = |
358 FIRST'[resolve_tac(reflexive_thm::TrueI::refl::prems), atac, etac FalseE]; |
360 FIRST'[resolve_tac(reflexive_thm::TrueI::refl::prems), atac, etac FalseE]; |
359 val unsafe_solver = mk_solver "HOL unsafe" unsafe_solver_tac; |
361 val unsafe_solver = mk_solver "HOL unsafe" unsafe_solver_tac; |
360 |
362 |