src/HOL/Tools/BNF/bnf_fp_def_sugar_tactics.ML
changeset 60757 c09598a97436
parent 60752 b48830b670a1
child 60784 4f590c08fd5d
equal deleted inserted replaced
60756:f122140b7195 60757:c09598a97436
   126   let
   126   let
   127     fun last_disc_tac iffD =
   127     fun last_disc_tac iffD =
   128       HEADGOAL (rtac ctxt (rotate_prems ~1 exhaust_disc) THEN' assume_tac ctxt THEN'
   128       HEADGOAL (rtac ctxt (rotate_prems ~1 exhaust_disc) THEN' assume_tac ctxt THEN'
   129       REPEAT_DETERM o (rotate_tac ~1 THEN' dtac ctxt (rotate_prems 1 iffD) THEN'
   129       REPEAT_DETERM o (rotate_tac ~1 THEN' dtac ctxt (rotate_prems 1 iffD) THEN'
   130         assume_tac ctxt THEN' rotate_tac ~1 THEN'
   130         assume_tac ctxt THEN' rotate_tac ~1 THEN'
   131         etac ctxt (rotate_prems 1 notE) THEN' eresolve0_tac distinct_disc));
   131         etac ctxt (rotate_prems 1 notE) THEN' eresolve_tac ctxt distinct_disc));
   132   in
   132   in
   133     HEADGOAL Goal.conjunction_tac THEN
   133     HEADGOAL Goal.conjunction_tac THEN
   134     REPEAT_DETERM (HEADGOAL (rtac ctxt rel_funI THEN' dtac ctxt (rel_sel RS iffD1) THEN'
   134     REPEAT_DETERM (HEADGOAL (rtac ctxt rel_funI THEN' dtac ctxt (rel_sel RS iffD1) THEN'
   135       REPEAT_DETERM o (etac ctxt conjE) THEN' (assume_tac ctxt ORELSE' rtac ctxt iffI))) THEN
   135       REPEAT_DETERM o (etac ctxt conjE) THEN' (assume_tac ctxt ORELSE' rtac ctxt iffI))) THEN
   136     TRY (last_disc_tac iffD2) THEN TRY (last_disc_tac iffD1)
   136     TRY (last_disc_tac iffD2) THEN TRY (last_disc_tac iffD1)