src/HOL/Codatatype/Tools/bnf_fp_sugar_tactics.ML
changeset 50377 1271aca16aed
parent 50291 59fa53ed7507
child 50378 8fc53d925629
     1.1 --- a/src/HOL/Codatatype/Tools/bnf_fp_sugar_tactics.ML	Fri Sep 14 12:09:27 2012 +0200
     1.2 +++ b/src/HOL/Codatatype/Tools/bnf_fp_sugar_tactics.ML	Fri Sep 14 12:09:27 2012 +0200
     1.3 @@ -13,6 +13,7 @@
     1.4    val mk_fld_iff_unf_tac: Proof.context -> ctyp option list -> cterm -> cterm -> thm -> thm
     1.5      -> tactic
     1.6    val mk_half_distinct_tac: Proof.context -> thm -> thm list -> tactic
     1.7 +  val mk_induct_tac: Proof.context -> tactic
     1.8    val mk_inject_tac: Proof.context -> thm -> thm -> tactic
     1.9    val mk_iter_like_tac: thm list -> thm list -> thm list -> thm -> thm -> Proof.context -> tactic
    1.10  end;
    1.11 @@ -51,6 +52,9 @@
    1.12    Local_Defs.unfold_tac ctxt [ctr_def] THEN rtac (fld_inject RS ssubst) 1 THEN
    1.13    Local_Defs.unfold_tac ctxt @{thms sum.inject Pair_eq conj_assoc} THEN rtac refl 1;
    1.14  
    1.15 +fun mk_induct_tac ctxt =
    1.16 +  Skip_Proof.cheat_tac (Proof_Context.theory_of ctxt)(*###*);
    1.17 +
    1.18  val iter_like_thms =
    1.19    @{thms case_unit comp_def convol_def id_apply map_pair_def sum.simps(5,6) sum_map.simps
    1.20        split_conv};
    1.21 @@ -67,6 +71,6 @@
    1.22    subst_tac ctxt [fld_unf_coiter_like] 1 THEN asm_simp_tac coiter_like_ss 1 THEN
    1.23    Local_Defs.unfold_tac ctxt (pre_map_def :: coiter_like_thms @ map_ids) THEN
    1.24    Local_Defs.unfold_tac ctxt @{thms id_def} THEN
    1.25 -  (rtac refl ORELSE' subst_tac ctxt @{thms unit_eq} THEN' rtac refl) 1;
    1.26 +  TRY ((rtac refl ORELSE' subst_tac ctxt @{thms unit_eq} THEN' rtac refl) 1);
    1.27  
    1.28  end;