equal
deleted
inserted
replaced
394 (* merge with previous tactic *) |
394 (* merge with previous tactic *) |
395 Cong_Tac.cong_tac ctxt @{thm cong} THEN' |
395 Cong_Tac.cong_tac ctxt @{thm cong} THEN' |
396 RANGE [quot_true_tac ctxt (fst o dest_comb), quot_true_tac ctxt (snd o dest_comb)], |
396 RANGE [quot_true_tac ctxt (fst o dest_comb), quot_true_tac ctxt (snd o dest_comb)], |
397 |
397 |
398 (* resolving with R x y assumptions *) |
398 (* resolving with R x y assumptions *) |
399 atac, |
399 assume_tac ctxt, |
400 |
400 |
401 (* (op =) (%x...) (%y...) ----> (op =) (...) (...) *) |
401 (* (op =) (%x...) (%y...) ----> (op =) (...) (...) *) |
402 rtac @{thm ext} THEN' quot_true_tac ctxt unlam, |
402 rtac @{thm ext} THEN' quot_true_tac ctxt unlam, |
403 |
403 |
404 (* reflexivity of the basic relations *) |
404 (* reflexivity of the basic relations *) |
558 val vrs = Term.add_frees concl [] |
558 val vrs = Term.add_frees concl [] |
559 val cvrs = map (cterm_of thy o Free) vrs |
559 val cvrs = map (cterm_of thy o Free) vrs |
560 val concl' = apply_under_Trueprop (all_list vrs) concl |
560 val concl' = apply_under_Trueprop (all_list vrs) concl |
561 val goal = Logic.mk_implies (concl', concl) |
561 val goal = Logic.mk_implies (concl', concl) |
562 val rule = Goal.prove ctxt [] [] goal |
562 val rule = Goal.prove ctxt [] [] goal |
563 (K (EVERY1 [inst_spec_tac (rev cvrs), atac])) |
563 (K (EVERY1 [inst_spec_tac (rev cvrs), assume_tac ctxt])) |
564 in |
564 in |
565 rtac rule i |
565 rtac rule i |
566 end) |
566 end) |
567 |
567 |
568 |
568 |