186 by (etac CollectD1 1); |
186 by (etac CollectD1 1); |
187 qed "mono_map_is_fun"; |
187 qed "mono_map_is_fun"; |
188 |
188 |
189 goalw Order.thy [mono_map_def, inj_def] |
189 goalw Order.thy [mono_map_def, inj_def] |
190 "!!f. [| linear(A,r); wf[B](s); f: mono_map(A,r,B,s) |] ==> f: inj(A,B)"; |
190 "!!f. [| linear(A,r); wf[B](s); f: mono_map(A,r,B,s) |] ==> f: inj(A,B)"; |
191 by (step_tac (!claset) 1); |
191 by (Clarify_tac 1); |
192 by (linear_case_tac 1); |
192 by (linear_case_tac 1); |
193 by (REPEAT |
193 by (REPEAT |
194 (EVERY [eresolve_tac [wf_on_not_refl RS notE] 1, |
194 (EVERY [eresolve_tac [wf_on_not_refl RS notE] 1, |
195 etac ssubst 2, |
195 etac ssubst 2, |
196 Fast_tac 2, |
196 Fast_tac 2, |
540 \ domain(ord_iso_map(A,r,B,s)) = A | \ |
540 \ domain(ord_iso_map(A,r,B,s)) = A | \ |
541 \ (EX x:A. domain(ord_iso_map(A,r,B,s)) = pred(A,x,r))"; |
541 \ (EX x:A. domain(ord_iso_map(A,r,B,s)) = pred(A,x,r))"; |
542 by (forward_tac [well_ord_is_wf] 1); |
542 by (forward_tac [well_ord_is_wf] 1); |
543 by (rewrite_goals_tac [wf_on_def, wf_def]); |
543 by (rewrite_goals_tac [wf_on_def, wf_def]); |
544 by (dres_inst_tac [("x", "A-domain(ord_iso_map(A,r,B,s))")] spec 1); |
544 by (dres_inst_tac [("x", "A-domain(ord_iso_map(A,r,B,s))")] spec 1); |
545 by (step_tac (!claset) 1); |
545 by Safe_tac; |
546 (*The first case: the domain equals A*) |
546 (*The first case: the domain equals A*) |
547 by (rtac (domain_ord_iso_map RS equalityI) 1); |
547 by (rtac (domain_ord_iso_map RS equalityI) 1); |
548 by (etac (Diff_eq_0_iff RS iffD1) 1); |
548 by (etac (Diff_eq_0_iff RS iffD1) 1); |
549 (*The other case: the domain equals an initial segment*) |
549 (*The other case: the domain equals an initial segment*) |
550 by (swap_res_tac [bexI] 1); |
550 by (swap_res_tac [bexI] 1); |