equal
deleted
inserted
replaced
208 fun in_tac nthO_in = rtac ctxt @{thm CollectI} THEN' |
208 fun in_tac nthO_in = rtac ctxt @{thm CollectI} THEN' |
209 CONJ_WRAP' (fn thm => EVERY' [rtac ctxt (thm RS ord_eq_le_trans), |
209 CONJ_WRAP' (fn thm => EVERY' [rtac ctxt (thm RS ord_eq_le_trans), |
210 rtac ctxt @{thm image_subsetI}, rtac ctxt nthO_in, etac ctxt set_mp, assume_tac ctxt]) set_maps; |
210 rtac ctxt @{thm image_subsetI}, rtac ctxt nthO_in, etac ctxt set_mp, assume_tac ctxt]) set_maps; |
211 val rel_OO_Grps_tac = if null rel_OO_Grps then K all_tac |
211 val rel_OO_Grps_tac = if null rel_OO_Grps then K all_tac |
212 else rtac ctxt (hd rel_OO_Grps RS ord_eq_le_trans) THEN' |
212 else rtac ctxt (hd rel_OO_Grps RS ord_eq_le_trans) THEN' |
213 rtac ctxt (@{thm arg_cong2[of _ _ _ _ "op OO"]} OF (replicate 2 (hd rel_OO_Grps RS sym)) RSN |
213 rtac ctxt (@{thm arg_cong2[of _ _ _ _ "(OO)"]} OF (replicate 2 (hd rel_OO_Grps RS sym)) RSN |
214 (2, ord_le_eq_trans)); |
214 (2, ord_le_eq_trans)); |
215 in |
215 in |
216 if null set_maps then rtac ctxt (rel_eq RS @{thm leq_OOI}) 1 |
216 if null set_maps then rtac ctxt (rel_eq RS @{thm leq_OOI}) 1 |
217 else |
217 else |
218 EVERY' [rel_OO_Grps_tac, rtac ctxt @{thm predicate2I}, |
218 EVERY' [rel_OO_Grps_tac, rtac ctxt @{thm predicate2I}, |
407 fun mk_pred_transfer_tac ctxt n in_rel pred_map pred_cong = |
407 fun mk_pred_transfer_tac ctxt n in_rel pred_map pred_cong = |
408 HEADGOAL (EVERY' [REPEAT_DETERM_N (n + 1) o rtac ctxt rel_funI, dtac ctxt (in_rel RS iffD1), |
408 HEADGOAL (EVERY' [REPEAT_DETERM_N (n + 1) o rtac ctxt rel_funI, dtac ctxt (in_rel RS iffD1), |
409 REPEAT_DETERM o eresolve_tac ctxt @{thms exE conjE CollectE}, hyp_subst_tac ctxt, |
409 REPEAT_DETERM o eresolve_tac ctxt @{thms exE conjE CollectE}, hyp_subst_tac ctxt, |
410 rtac ctxt (box_equals OF [@{thm _}, pred_map RS sym, pred_map RS sym]), |
410 rtac ctxt (box_equals OF [@{thm _}, pred_map RS sym, pred_map RS sym]), |
411 rtac ctxt (refl RS pred_cong), REPEAT_DETERM_N n o |
411 rtac ctxt (refl RS pred_cong), REPEAT_DETERM_N n o |
412 (etac ctxt @{thm rel_fun_Collect_case_prodD[where B="op ="]} THEN_ALL_NEW assume_tac ctxt)]); |
412 (etac ctxt @{thm rel_fun_Collect_case_prodD[where B="(=)"]} THEN_ALL_NEW assume_tac ctxt)]); |
413 |
413 |
414 end; |
414 end; |