src/HOL/Tools/BNF/bnf_tactics.ML
changeset 55756 565a20b22f09
parent 55569 0d0e19e9505e
child 55990 41c6b99c5fb7
equal deleted inserted replaced
55755:e5128a9c4311 55756:565a20b22f09
    18   val mk_pointfree: Proof.context -> thm -> thm
    18   val mk_pointfree: Proof.context -> thm -> thm
    19 
    19 
    20   val mk_Abs_bij_thm: Proof.context -> thm -> thm -> thm
    20   val mk_Abs_bij_thm: Proof.context -> thm -> thm -> thm
    21   val mk_Abs_inj_thm: thm -> thm
    21   val mk_Abs_inj_thm: thm -> thm
    22 
    22 
    23   val mk_map_comp_id_tac: thm -> tactic
    23   val mk_map_comp_id_tac: Proof.context -> thm -> tactic
    24   val mk_map_cong0_tac: Proof.context -> int -> thm -> tactic
    24   val mk_map_cong0_tac: Proof.context -> int -> thm -> tactic
    25   val mk_map_cong0L_tac: int -> thm -> thm -> tactic
    25   val mk_map_cong0L_tac: int -> thm -> thm -> tactic
    26 end;
    26 end;
    27 
    27 
    28 structure BNF_Tactics : BNF_TACTICS =
    28 structure BNF_Tactics : BNF_TACTICS =
    80       | gen_tac _ _ = error "mk_rotate_eq_tac: different lists";
    80       | gen_tac _ _ = error "mk_rotate_eq_tac: different lists";
    81   in
    81   in
    82     gen_tac
    82     gen_tac
    83   end;
    83   end;
    84 
    84 
    85 fun mk_map_comp_id_tac map_comp0 =
    85 fun mk_map_comp_id_tac ctxt map_comp0 =
    86   (rtac trans THEN' rtac map_comp0 THEN' REPEAT_DETERM o stac @{thm comp_id} THEN' rtac refl) 1;
    86   (rtac trans THEN' rtac map_comp0 THEN' K (unfold_thms_tac ctxt @{thms comp_id}) THEN' rtac refl) 1;
    87 
    87 
    88 fun mk_map_cong0_tac ctxt m map_cong0 =
    88 fun mk_map_cong0_tac ctxt m map_cong0 =
    89   EVERY' [rtac mp, rtac map_cong0,
    89   EVERY' [rtac mp, rtac map_cong0,
    90     CONJ_WRAP' (K (rtac ballI THEN' Goal.assume_rule_tac ctxt)) (1 upto m)] 1;
    90     CONJ_WRAP' (K (rtac ballI THEN' Goal.assume_rule_tac ctxt)) (1 upto m)] 1;
    91 
    91