equal
deleted
inserted
replaced
151 fun mk_case_distinct_ctrs_tac ctxt distincts = |
151 fun mk_case_distinct_ctrs_tac ctxt distincts = |
152 REPEAT_DETERM o etac ctxt exE THEN' etac ctxt conjE THEN' full_simp_tac (ss_only distincts ctxt); |
152 REPEAT_DETERM o etac ctxt exE THEN' etac ctxt conjE THEN' full_simp_tac (ss_only distincts ctxt); |
153 |
153 |
154 fun mk_case_tac ctxt n k case_def injects distinctss = |
154 fun mk_case_tac ctxt n k case_def injects distinctss = |
155 let |
155 let |
156 val case_def' = mk_unabs_def (n + 1) (case_def RS meta_eq_to_obj_eq); |
156 val case_def' = mk_unabs_def (n + 1) (HOLogic.mk_obj_eq case_def); |
157 val ks = 1 upto n; |
157 val ks = 1 upto n; |
158 in |
158 in |
159 HEADGOAL (rtac ctxt (case_def' RS trans) THEN' rtac ctxt @{thm the_equality} THEN' |
159 HEADGOAL (rtac ctxt (case_def' RS trans) THEN' rtac ctxt @{thm the_equality} THEN' |
160 rtac ctxt (mk_disjIN n k) THEN' REPEAT_DETERM o rtac ctxt exI THEN' rtac ctxt conjI THEN' |
160 rtac ctxt (mk_disjIN n k) THEN' REPEAT_DETERM o rtac ctxt exI THEN' rtac ctxt conjI THEN' |
161 rtac ctxt refl THEN' rtac ctxt refl THEN' |
161 rtac ctxt refl THEN' rtac ctxt refl THEN' |