42 (res_inst_tac [("f","Iup")] arg_cong 1), |
42 (res_inst_tac [("f","Iup")] arg_cong 1), |
43 (rtac lub_equal 1), |
43 (rtac lub_equal 1), |
44 (atac 1), |
44 (atac 1), |
45 (rtac (monofun_Ilift2 RS ch2ch_monofun) 1), |
45 (rtac (monofun_Ilift2 RS ch2ch_monofun) 1), |
46 (etac (monofun_Iup RS ch2ch_monofun) 1), |
46 (etac (monofun_Iup RS ch2ch_monofun) 1), |
47 (asm_simp_tac Lift_ss 1) |
47 (Asm_simp_tac 1) |
48 ]); |
48 ]); |
49 |
49 |
50 qed_goal "cont_Iup" Lift3.thy "cont(Iup)" |
50 qed_goal "cont_Iup" Lift3.thy "cont(Iup)" |
51 (fn prems => |
51 (fn prems => |
52 [ |
52 [ |
68 (rtac trans 1), |
68 (rtac trans 1), |
69 (rtac (thelub_fun RS sym) 2), |
69 (rtac (thelub_fun RS sym) 2), |
70 (etac (monofun_Ilift1 RS ch2ch_monofun) 2), |
70 (etac (monofun_Ilift1 RS ch2ch_monofun) 2), |
71 (rtac ext 1), |
71 (rtac ext 1), |
72 (res_inst_tac [("p","x")] liftE 1), |
72 (res_inst_tac [("p","x")] liftE 1), |
73 (asm_simp_tac Lift_ss 1), |
73 (Asm_simp_tac 1), |
74 (rtac (lub_const RS thelubI RS sym) 1), |
74 (rtac (lub_const RS thelubI RS sym) 1), |
75 (asm_simp_tac Lift_ss 1), |
75 (Asm_simp_tac 1), |
76 (etac contlub_cfun_fun 1) |
76 (etac contlub_cfun_fun 1) |
77 ]); |
77 ]); |
78 |
78 |
79 |
79 |
80 qed_goal "contlub_Ilift2" Lift3.thy "contlub(Ilift(f))" |
80 qed_goal "contlub_Ilift2" Lift3.thy "contlub(Ilift(f))" |
84 (strip_tac 1), |
84 (strip_tac 1), |
85 (rtac disjE 1), |
85 (rtac disjE 1), |
86 (rtac (thelub_lift1a RS ssubst) 2), |
86 (rtac (thelub_lift1a RS ssubst) 2), |
87 (atac 2), |
87 (atac 2), |
88 (atac 2), |
88 (atac 2), |
89 (asm_simp_tac Lift_ss 2), |
89 (Asm_simp_tac 2), |
90 (rtac (thelub_lift1b RS ssubst) 3), |
90 (rtac (thelub_lift1b RS ssubst) 3), |
91 (atac 3), |
91 (atac 3), |
92 (atac 3), |
92 (atac 3), |
93 (fast_tac HOL_cs 1), |
93 (fast_tac HOL_cs 1), |
94 (asm_simp_tac Lift_ss 2), |
94 (Asm_simp_tac 2), |
95 (rtac (chain_UU_I_inverse RS sym) 2), |
95 (rtac (chain_UU_I_inverse RS sym) 2), |
96 (rtac allI 2), |
96 (rtac allI 2), |
97 (res_inst_tac [("p","Y(i)")] liftE 2), |
97 (res_inst_tac [("p","Y(i)")] liftE 2), |
98 (asm_simp_tac Lift_ss 2), |
98 (Asm_simp_tac 2), |
99 (rtac notE 2), |
99 (rtac notE 2), |
100 (dtac spec 2), |
100 (dtac spec 2), |
101 (etac spec 2), |
101 (etac spec 2), |
102 (atac 2), |
102 (atac 2), |
103 (rtac (contlub_cfun_arg RS ssubst) 1), |
103 (rtac (contlub_cfun_arg RS ssubst) 1), |
115 (atac 1), |
115 (atac 1), |
116 (rtac defined_Iup2 1), |
116 (rtac defined_Iup2 1), |
117 (rtac exI 1), |
117 (rtac exI 1), |
118 (strip_tac 1), |
118 (strip_tac 1), |
119 (res_inst_tac [("p","Y(i)")] liftE 1), |
119 (res_inst_tac [("p","Y(i)")] liftE 1), |
120 (asm_simp_tac Lift_ss 2), |
120 (Asm_simp_tac 2), |
121 (res_inst_tac [("P","Y(i) = UU")] notE 1), |
121 (res_inst_tac [("P","Y(i) = UU")] notE 1), |
122 (fast_tac HOL_cs 1), |
122 (fast_tac HOL_cs 1), |
123 (rtac (inst_lift_pcpo RS ssubst) 1), |
123 (rtac (inst_lift_pcpo RS ssubst) 1), |
124 (atac 1) |
124 (atac 1) |
125 ]); |
125 ]); |
146 (* ------------------------------------------------------------------------ *) |
146 (* ------------------------------------------------------------------------ *) |
147 |
147 |
148 qed_goalw "Exh_Lift1" Lift3.thy [up_def] "z = UU | (? x. z = up`x)" |
148 qed_goalw "Exh_Lift1" Lift3.thy [up_def] "z = UU | (? x. z = up`x)" |
149 (fn prems => |
149 (fn prems => |
150 [ |
150 [ |
151 (simp_tac (Lift_ss addsimps [cont_Iup]) 1), |
151 (simp_tac (!simpset addsimps [cont_Iup]) 1), |
152 (rtac (inst_lift_pcpo RS ssubst) 1), |
152 (rtac (inst_lift_pcpo RS ssubst) 1), |
153 (rtac Exh_Lift 1) |
153 (rtac Exh_Lift 1) |
154 ]); |
154 ]); |
155 |
155 |
156 qed_goalw "inject_up" Lift3.thy [up_def] "up`x=up`y ==> x=y" |
156 qed_goalw "inject_up" Lift3.thy [up_def] "up`x=up`y ==> x=y" |
157 (fn prems => |
157 (fn prems => |
158 [ |
158 [ |
159 (cut_facts_tac prems 1), |
159 (cut_facts_tac prems 1), |
160 (rtac inject_Iup 1), |
160 (rtac inject_Iup 1), |
161 (etac box_equals 1), |
161 (etac box_equals 1), |
162 (simp_tac (Lift_ss addsimps [cont_Iup]) 1), |
162 (simp_tac (!simpset addsimps [cont_Iup]) 1), |
163 (simp_tac (Lift_ss addsimps [cont_Iup]) 1) |
163 (simp_tac (!simpset addsimps [cont_Iup]) 1) |
164 ]); |
164 ]); |
165 |
165 |
166 qed_goalw "defined_up" Lift3.thy [up_def] " up`x ~= UU" |
166 qed_goalw "defined_up" Lift3.thy [up_def] " up`x ~= UU" |
167 (fn prems => |
167 (fn prems => |
168 [ |
168 [ |
169 (simp_tac (Lift_ss addsimps [cont_Iup]) 1), |
169 (simp_tac (!simpset addsimps [cont_Iup]) 1), |
170 (rtac defined_Iup2 1) |
170 (rtac defined_Iup2 1) |
171 ]); |
171 ]); |
172 |
172 |
173 qed_goalw "liftE1" Lift3.thy [up_def] |
173 qed_goalw "liftE1" Lift3.thy [up_def] |
174 "[| p=UU ==> Q; !!x. p=up`x==>Q|] ==>Q" |
174 "[| p=UU ==> Q; !!x. p=up`x==>Q|] ==>Q" |
176 [ |
176 [ |
177 (rtac liftE 1), |
177 (rtac liftE 1), |
178 (resolve_tac prems 1), |
178 (resolve_tac prems 1), |
179 (etac (inst_lift_pcpo RS ssubst) 1), |
179 (etac (inst_lift_pcpo RS ssubst) 1), |
180 (resolve_tac (tl prems) 1), |
180 (resolve_tac (tl prems) 1), |
181 (asm_simp_tac (Lift_ss addsimps [cont_Iup]) 1) |
181 (asm_simp_tac (!simpset addsimps [cont_Iup]) 1) |
182 ]); |
182 ]); |
183 |
183 |
184 |
184 |
185 qed_goalw "lift1" Lift3.thy [up_def,lift_def] "lift`f`UU=UU" |
185 qed_goalw "lift1" Lift3.thy [up_def,lift_def] "lift`f`UU=UU" |
186 (fn prems => |
186 (fn prems => |
190 (REPEAT (resolve_tac (cont_lemmas @ [cont_Iup,cont_Ilift1, |
190 (REPEAT (resolve_tac (cont_lemmas @ [cont_Iup,cont_Ilift1, |
191 cont_Ilift2,cont2cont_CF1L]) 1)), |
191 cont_Ilift2,cont2cont_CF1L]) 1)), |
192 (rtac (beta_cfun RS ssubst) 1), |
192 (rtac (beta_cfun RS ssubst) 1), |
193 (REPEAT (resolve_tac (cont_lemmas @ [cont_Iup,cont_Ilift1, |
193 (REPEAT (resolve_tac (cont_lemmas @ [cont_Iup,cont_Ilift1, |
194 cont_Ilift2,cont2cont_CF1L]) 1)), |
194 cont_Ilift2,cont2cont_CF1L]) 1)), |
195 (simp_tac (Lift_ss addsimps [cont_Iup,cont_Ilift1,cont_Ilift2]) 1) |
195 (simp_tac (!simpset addsimps [cont_Iup,cont_Ilift1,cont_Ilift2]) 1) |
196 ]); |
196 ]); |
197 |
197 |
198 qed_goalw "lift2" Lift3.thy [up_def,lift_def] "lift`f`(up`x)=f`x" |
198 qed_goalw "lift2" Lift3.thy [up_def,lift_def] "lift`f`(up`x)=f`x" |
199 (fn prems => |
199 (fn prems => |
200 [ |
200 [ |
203 (rtac (beta_cfun RS ssubst) 1), |
203 (rtac (beta_cfun RS ssubst) 1), |
204 (REPEAT (resolve_tac (cont_lemmas @ [cont_Iup,cont_Ilift1, |
204 (REPEAT (resolve_tac (cont_lemmas @ [cont_Iup,cont_Ilift1, |
205 cont_Ilift2,cont2cont_CF1L]) 1)), |
205 cont_Ilift2,cont2cont_CF1L]) 1)), |
206 (rtac (beta_cfun RS ssubst) 1), |
206 (rtac (beta_cfun RS ssubst) 1), |
207 (rtac cont_Ilift2 1), |
207 (rtac cont_Ilift2 1), |
208 (simp_tac (Lift_ss addsimps [cont_Iup,cont_Ilift1,cont_Ilift2]) 1) |
208 (simp_tac (!simpset addsimps [cont_Iup,cont_Ilift1,cont_Ilift2]) 1) |
209 ]); |
209 ]); |
210 |
210 |
211 qed_goalw "less_lift4b" Lift3.thy [up_def,lift_def] "~ up`x << UU" |
211 qed_goalw "less_lift4b" Lift3.thy [up_def,lift_def] "~ up`x << UU" |
212 (fn prems => |
212 (fn prems => |
213 [ |
213 [ |
214 (simp_tac (Lift_ss addsimps [cont_Iup]) 1), |
214 (simp_tac (!simpset addsimps [cont_Iup]) 1), |
215 (rtac less_lift3b 1) |
215 (rtac less_lift3b 1) |
216 ]); |
216 ]); |
217 |
217 |
218 qed_goalw "less_lift4c" Lift3.thy [up_def,lift_def] |
218 qed_goalw "less_lift4c" Lift3.thy [up_def,lift_def] |
219 "(up`x << up`y) = (x<<y)" |
219 "(up`x << up`y) = (x<<y)" |
220 (fn prems => |
220 (fn prems => |
221 [ |
221 [ |
222 (simp_tac (Lift_ss addsimps [cont_Iup]) 1), |
222 (simp_tac (!simpset addsimps [cont_Iup]) 1), |
223 (rtac less_lift2c 1) |
223 (rtac less_lift2c 1) |
224 ]); |
224 ]); |
225 |
225 |
226 qed_goalw "thelub_lift2a" Lift3.thy [up_def,lift_def] |
226 qed_goalw "thelub_lift2a" Lift3.thy [up_def,lift_def] |
227 "[| is_chain(Y); ? i x. Y(i) = up`x |] ==>\ |
227 "[| is_chain(Y); ? i x. Y(i) = up`x |] ==>\ |
336 |
336 |
337 qed_goal "lift3" Lift3.thy "lift`up`x=x" |
337 qed_goal "lift3" Lift3.thy "lift`up`x=x" |
338 (fn prems => |
338 (fn prems => |
339 [ |
339 [ |
340 (res_inst_tac [("p","x")] liftE1 1), |
340 (res_inst_tac [("p","x")] liftE1 1), |
341 (asm_simp_tac (Cfun_ss addsimps [lift1,lift2]) 1), |
341 (asm_simp_tac (!simpset addsimps [lift1,lift2]) 1), |
342 (asm_simp_tac (Cfun_ss addsimps [lift1,lift2]) 1) |
342 (asm_simp_tac (!simpset addsimps [lift1,lift2]) 1) |
343 ]); |
343 ]); |
344 |
344 |
345 (* ------------------------------------------------------------------------ *) |
345 (* ------------------------------------------------------------------------ *) |
346 (* install simplifier for ('a)u *) |
346 (* install simplifier for ('a)u *) |
347 (* ------------------------------------------------------------------------ *) |
347 (* ------------------------------------------------------------------------ *) |