src/HOL/Tools/BNF/bnf_tactics.ML
changeset 55067 a452de24a877
parent 55061 a0adf838e2d1
child 55197 5a54ed681ba2
equal deleted inserted replaced
55066:4e5ddf3162ac 55067:a452de24a877
    56 
    56 
    57 (* Theorems for open typedefs with UNIV as representing set *)
    57 (* Theorems for open typedefs with UNIV as representing set *)
    58 
    58 
    59 fun mk_Abs_inj_thm inj = inj OF (replicate 2 UNIV_I);
    59 fun mk_Abs_inj_thm inj = inj OF (replicate 2 UNIV_I);
    60 fun mk_Abs_bij_thm ctxt Abs_inj_thm surj = rule_by_tactic ctxt ((rtac surj THEN' etac exI) 1)
    60 fun mk_Abs_bij_thm ctxt Abs_inj_thm surj = rule_by_tactic ctxt ((rtac surj THEN' etac exI) 1)
    61   (Abs_inj_thm RS @{thm bijI});
    61   (Abs_inj_thm RS @{thm bijI'});
    62 
    62 
    63 
    63 
    64 
    64 
    65 (* General tactic generators *)
    65 (* General tactic generators *)
    66 
    66 
    93     @{thms pair_collapse Collect_mem_eq mem_Collect_eq prod.cases fst_conv snd_conv
    93     @{thms pair_collapse Collect_mem_eq mem_Collect_eq prod.cases fst_conv snd_conv
    94       split_conv}) THEN
    94       split_conv}) THEN
    95   rtac refl 1;
    95   rtac refl 1;
    96 
    96 
    97 fun mk_map_comp_id_tac map_comp0 =
    97 fun mk_map_comp_id_tac map_comp0 =
    98   (rtac trans THEN' rtac map_comp0 THEN' REPEAT_DETERM o stac @{thm o_id} THEN' rtac refl) 1;
    98   (rtac trans THEN' rtac map_comp0 THEN' REPEAT_DETERM o stac @{thm comp_id} THEN' rtac refl) 1;
    99 
    99 
   100 fun mk_map_cong0_tac m map_cong0 {context = ctxt, prems = _} =
   100 fun mk_map_cong0_tac m map_cong0 {context = ctxt, prems = _} =
   101   EVERY' [rtac mp, rtac map_cong0,
   101   EVERY' [rtac mp, rtac map_cong0,
   102     CONJ_WRAP' (K (rtac ballI THEN' Goal.assume_rule_tac ctxt)) (1 upto m)] 1;
   102     CONJ_WRAP' (K (rtac ballI THEN' Goal.assume_rule_tac ctxt)) (1 upto m)] 1;
   103 
   103