equal
deleted
inserted
replaced
78 resolve_tac @{thms TrueI conjI disjI1 disjI2} ORELSE' |
78 resolve_tac @{thms TrueI conjI disjI1 disjI2} ORELSE' |
79 dresolve_tac discIs THEN' atac ORELSE' |
79 dresolve_tac discIs THEN' atac ORELSE' |
80 etac notE THEN' atac ORELSE' |
80 etac notE THEN' atac ORELSE' |
81 etac disjE)))); |
81 etac disjE)))); |
82 |
82 |
83 val ss_fst_snd_conv = simpset_of (ss_only @{thms fst_conv snd_conv} @{context}); |
83 fun ss_fst_snd_conv ctxt = simpset_of (ss_only @{thms fst_conv snd_conv} ctxt); |
84 |
84 |
85 fun case_atac ctxt = simp_tac (put_simpset ss_fst_snd_conv ctxt); |
85 fun case_atac ctxt = simp_tac (put_simpset (ss_fst_snd_conv ctxt) ctxt); |
86 |
86 |
87 fun same_case_tac ctxt m = |
87 fun same_case_tac ctxt m = |
88 HEADGOAL (if m = 0 then rtac TrueI |
88 HEADGOAL (if m = 0 then rtac TrueI |
89 else REPEAT_DETERM_N (m - 1) o (rtac conjI THEN' case_atac ctxt) THEN' case_atac ctxt); |
89 else REPEAT_DETERM_N (m - 1) o (rtac conjI THEN' case_atac ctxt) THEN' case_atac ctxt); |
90 |
90 |