equal
deleted
inserted
replaced
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 |