equal
deleted
inserted
replaced
184 end; |
184 end; |
185 |
185 |
186 fun mk_rel_mono_strong_tac in_rel set_maps {context = ctxt, prems = _} = |
186 fun mk_rel_mono_strong_tac in_rel set_maps {context = ctxt, prems = _} = |
187 if null set_maps then atac 1 |
187 if null set_maps then atac 1 |
188 else |
188 else |
189 unfold_tac [in_rel] ctxt THEN |
189 unfold_tac ctxt [in_rel] THEN |
190 REPEAT_DETERM (eresolve_tac [exE, CollectE, conjE] 1) THEN |
190 REPEAT_DETERM (eresolve_tac [exE, CollectE, conjE] 1) THEN |
191 hyp_subst_tac ctxt 1 THEN |
191 hyp_subst_tac ctxt 1 THEN |
192 unfold_tac set_maps ctxt THEN |
192 unfold_tac ctxt set_maps THEN |
193 EVERY' [rtac exI, rtac @{thm conjI[OF CollectI conjI[OF refl refl]]}, |
193 EVERY' [rtac exI, rtac @{thm conjI[OF CollectI conjI[OF refl refl]]}, |
194 CONJ_WRAP' (K (etac @{thm Collect_split_mono_strong} THEN' atac)) set_maps] 1; |
194 CONJ_WRAP' (K (etac @{thm Collect_split_mono_strong} THEN' atac)) set_maps] 1; |
195 |
195 |
196 fun mk_map_transfer_tac rel_mono in_rel set_maps map_cong0 map_comp |
196 fun mk_map_transfer_tac rel_mono in_rel set_maps map_cong0 map_comp |
197 {context = ctxt, prems = _} = |
197 {context = ctxt, prems = _} = |