equal
deleted
inserted
replaced
257 (fn (prem,i) => |
257 (fn (prem,i) => |
258 let val hyps = map discard_proof (Logic.strip_assums_hyp prem) |
258 let val hyps = map discard_proof (Logic.strip_assums_hyp prem) |
259 and concl = discard_proof (Logic.strip_assums_concl prem) |
259 and concl = discard_proof (Logic.strip_assums_concl prem) |
260 in |
260 in |
261 if exists (fn hyp => hyp aconv concl) hyps |
261 if exists (fn hyp => hyp aconv concl) hyps |
262 then case distinct (op =) (filter (fn hyp => Term.could_unify (hyp, concl)) hyps) of |
262 then case distinct (=) (filter (fn hyp => Term.could_unify (hyp, concl)) hyps) of |
263 [_] => assume_tac ctxt i |
263 [_] => assume_tac ctxt i |
264 | _ => no_tac |
264 | _ => no_tac |
265 else no_tac |
265 else no_tac |
266 end); |
266 end); |
267 end; |
267 end; |
520 done |
520 done |
521 |
521 |
522 lemmas pred_congs = pred1_cong pred2_cong pred3_cong |
522 lemmas pred_congs = pred1_cong pred2_cong pred3_cong |
523 |
523 |
524 (*special case for the equality predicate!*) |
524 (*special case for the equality predicate!*) |
525 lemmas eq_cong = pred2_cong [where P = "op ="] |
525 lemmas eq_cong = pred2_cong [where P = "(=)"] |
526 |
526 |
527 |
527 |
528 (*** Simplifications of assumed implications. |
528 (*** Simplifications of assumed implications. |
529 Roy Dyckhoff has proved that conj_impE, disj_impE, and imp_impE |
529 Roy Dyckhoff has proved that conj_impE, disj_impE, and imp_impE |
530 used with mp_tac (restricted to atomic formulae) is COMPLETE for |
530 used with mp_tac (restricted to atomic formulae) is COMPLETE for |