src/HOL/BNF/Tools/bnf_wrap_tactics.ML
changeset 49667 44d85dc8ca08
parent 49641 9b831f93d4e8
child 51686 532e0ac5a66d
equal deleted inserted replaced
49666:5eb0b0d389ea 49667:44d85dc8ca08
    11   val mk_case_cong_tac: thm -> thm list -> tactic
    11   val mk_case_cong_tac: thm -> thm list -> tactic
    12   val mk_case_conv_tac: Proof.context -> int -> thm -> thm list -> thm list list -> thm list list ->
    12   val mk_case_conv_tac: Proof.context -> int -> thm -> thm list -> thm list list -> thm list list ->
    13     tactic
    13     tactic
    14   val mk_collapse_tac: Proof.context -> int -> thm -> thm list -> tactic
    14   val mk_collapse_tac: Proof.context -> int -> thm -> thm list -> tactic
    15   val mk_disc_exhaust_tac: int -> thm -> thm list -> tactic
    15   val mk_disc_exhaust_tac: int -> thm -> thm list -> tactic
    16   val mk_expand_tac: Proof.context -> int -> int list -> thm -> thm -> thm list ->
    16   val mk_expand_tac: int -> int list -> thm -> thm -> thm list -> thm list list list ->
    17     thm list list list -> thm list list list -> tactic
    17     thm list list list -> tactic
    18   val mk_half_disc_exclude_tac: int -> thm -> thm -> tactic
    18   val mk_half_disc_exclude_tac: int -> thm -> thm -> tactic
    19   val mk_nchotomy_tac: int -> thm -> tactic
    19   val mk_nchotomy_tac: int -> thm -> tactic
    20   val mk_other_half_disc_exclude_tac: thm -> tactic
    20   val mk_other_half_disc_exclude_tac: thm -> tactic
    21   val mk_split_tac: thm -> thm list -> thm list list -> thm list list list -> tactic
    21   val mk_split_tac: thm -> thm list -> thm list list -> thm list list list -> tactic
    22   val mk_split_asm_tac: Proof.context -> thm -> tactic
    22   val mk_split_asm_tac: Proof.context -> thm -> tactic
    64       atac
    64       atac
    65     else
    65     else
    66       REPEAT_DETERM_N m o etac exE THEN' hyp_subst_tac THEN'
    66       REPEAT_DETERM_N m o etac exE THEN' hyp_subst_tac THEN'
    67       SELECT_GOAL (unfold_thms_tac ctxt sels) THEN' rtac refl)) 1;
    67       SELECT_GOAL (unfold_thms_tac ctxt sels) THEN' rtac refl)) 1;
    68 
    68 
    69 fun mk_expand_tac ctxt n ms udisc_exhaust vdisc_exhaust uncollapses disc_excludesss
    69 fun mk_expand_tac n ms udisc_exhaust vdisc_exhaust uncollapses disc_excludesss disc_excludesss' =
    70     disc_excludesss' =
       
    71   if ms = [0] then
    70   if ms = [0] then
    72     rtac (@{thm trans_sym} OF (replicate 2 (the_single uncollapses RS sym))) 1
    71     rtac (@{thm trans_sym} OF (replicate 2 (the_single uncollapses RS sym))) 1
    73   else
    72   else
    74     let
    73     let
    75       val ks = 1 upto n;
    74       val ks = 1 upto n;