equal
deleted
inserted
replaced
56 (* Tailoring chain_mono2 of Pcpo.ML to Undef *) |
56 (* Tailoring chain_mono2 of Pcpo.ML to Undef *) |
57 |
57 |
58 goal Lift2.thy |
58 goal Lift2.thy |
59 "!!Y. [|? j.~Y(j)=Undef;is_chain(Y::nat=>('a)lift)|] \ |
59 "!!Y. [|? j.~Y(j)=Undef;is_chain(Y::nat=>('a)lift)|] \ |
60 \ ==> ? j.!i.j<i-->~Y(i)=Undef"; |
60 \ ==> ? j.!i.j<i-->~Y(i)=Undef"; |
61 by (safe_tac HOL_cs); |
61 by Safe_tac; |
62 by (step_tac HOL_cs 1); |
62 by (Step_tac 1); |
63 by (strip_tac 1); |
63 by (strip_tac 1); |
64 by (rtac notUndef_I 1); |
64 by (rtac notUndef_I 1); |
65 by (atac 2); |
65 by (atac 2); |
66 by (etac (chain_mono RS mp) 1); |
66 by (etac (chain_mono RS mp) 1); |
67 by (atac 1); |
67 by (atac 1); |
83 by (etac spec 1); |
83 by (etac spec 1); |
84 |
84 |
85 by (subgoal_tac "!x y.x<<(y::('a)lift) --> x=Undef | x=y" 1); |
85 by (subgoal_tac "!x y.x<<(y::('a)lift) --> x=Undef | x=y" 1); |
86 by (simp_tac (!simpset addsimps [inst_lift_po]) 2); |
86 by (simp_tac (!simpset addsimps [inst_lift_po]) 2); |
87 by (rtac (chain_mono2_po RS exE) 1); |
87 by (rtac (chain_mono2_po RS exE) 1); |
88 by (fast_tac HOL_cs 1); |
88 by (Fast_tac 1); |
89 by (atac 1); |
89 by (atac 1); |
90 by (res_inst_tac [("x","Suc(x)")] exI 1); |
90 by (res_inst_tac [("x","Suc(x)")] exI 1); |
91 by (strip_tac 1); |
91 by (strip_tac 1); |
92 by (rtac disjE 1); |
92 by (rtac disjE 1); |
93 by (atac 3); |
93 by (atac 3); |
110 (* Main Lemma: cpo_lift *) |
110 (* Main Lemma: cpo_lift *) |
111 |
111 |
112 goal Lift2.thy |
112 goal Lift2.thy |
113 "!!Y. is_chain(Y::nat=>('a)lift) ==> ? x.range(Y) <<|x"; |
113 "!!Y. is_chain(Y::nat=>('a)lift) ==> ? x.range(Y) <<|x"; |
114 by (cut_inst_tac [] flat_imp_chain_finite_poo 1); |
114 by (cut_inst_tac [] flat_imp_chain_finite_poo 1); |
115 by (step_tac HOL_cs 1); |
115 by (Step_tac 1); |
116 by (safe_tac HOL_cs); |
116 by Safe_tac; |
117 by (step_tac HOL_cs 1); |
117 by (Step_tac 1); |
118 by (rtac exI 1); |
118 by (rtac exI 1); |
119 by (rtac lub_finch1 1); |
119 by (rtac lub_finch1 1); |
120 by (atac 1); |
120 by (atac 1); |
121 by (atac 1); |
121 by (atac 1); |
122 qed"cpo_lift"; |
122 qed"cpo_lift"; |