src/HOL/Tools/Ctr_Sugar/ctr_sugar_tactics.ML
changeset 67710 cc2db3239932
parent 64430 1d85ac286c72
equal deleted inserted replaced
67709:3c9e0b4709e7 67710:cc2db3239932
   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'