equal
deleted
inserted
replaced
228 (simp_tac (Up0_ss addsimps [cont_Iup]) 1), |
228 (simp_tac (Up0_ss addsimps [cont_Iup]) 1), |
229 (rtac less_up2c 1) |
229 (rtac less_up2c 1) |
230 ]); |
230 ]); |
231 |
231 |
232 qed_goalw "thelub_up2a" thy [up_def,fup_def] |
232 qed_goalw "thelub_up2a" thy [up_def,fup_def] |
233 "[| is_chain(Y); ? i x. Y(i) = up`x |] ==>\ |
233 "[| chain(Y); ? i x. Y(i) = up`x |] ==>\ |
234 \ lub(range(Y)) = up`(lub(range(%i. fup`(LAM x. x)`(Y i))))" |
234 \ lub(range(Y)) = up`(lub(range(%i. fup`(LAM x. x)`(Y i))))" |
235 (fn prems => |
235 (fn prems => |
236 [ |
236 [ |
237 (cut_facts_tac prems 1), |
237 (cut_facts_tac prems 1), |
238 (stac beta_cfun 1), |
238 (stac beta_cfun 1), |
253 ]); |
253 ]); |
254 |
254 |
255 |
255 |
256 |
256 |
257 qed_goalw "thelub_up2b" thy [up_def,fup_def] |
257 qed_goalw "thelub_up2b" thy [up_def,fup_def] |
258 "[| is_chain(Y); ! i x. Y(i) ~= up`x |] ==> lub(range(Y)) = UU" |
258 "[| chain(Y); ! i x. Y(i) ~= up`x |] ==> lub(range(Y)) = UU" |
259 (fn prems => |
259 (fn prems => |
260 [ |
260 [ |
261 (cut_facts_tac prems 1), |
261 (cut_facts_tac prems 1), |
262 (stac inst_up_pcpo 1), |
262 (stac inst_up_pcpo 1), |
263 (rtac thelub_up1b 1), |
263 (rtac thelub_up1b 1), |
287 (etac exI 1) |
287 (etac exI 1) |
288 ]); |
288 ]); |
289 |
289 |
290 |
290 |
291 qed_goal "thelub_up2a_rev" thy |
291 qed_goal "thelub_up2a_rev" thy |
292 "[| is_chain(Y); lub(range(Y)) = up`x |] ==> ? i x. Y(i) = up`x" |
292 "[| chain(Y); lub(range(Y)) = up`x |] ==> ? i x. Y(i) = up`x" |
293 (fn prems => |
293 (fn prems => |
294 [ |
294 [ |
295 (cut_facts_tac prems 1), |
295 (cut_facts_tac prems 1), |
296 (rtac exE 1), |
296 (rtac exE 1), |
297 (rtac chain_UU_I_inverse2 1), |
297 (rtac chain_UU_I_inverse2 1), |
301 (rtac (up_lemma2 RS iffD2) 1), |
301 (rtac (up_lemma2 RS iffD2) 1), |
302 (atac 1) |
302 (atac 1) |
303 ]); |
303 ]); |
304 |
304 |
305 qed_goal "thelub_up2b_rev" thy |
305 qed_goal "thelub_up2b_rev" thy |
306 "[| is_chain(Y); lub(range(Y)) = UU |] ==> ! i x. Y(i) ~= up`x" |
306 "[| chain(Y); lub(range(Y)) = UU |] ==> ! i x. Y(i) ~= up`x" |
307 (fn prems => |
307 (fn prems => |
308 [ |
308 [ |
309 (cut_facts_tac prems 1), |
309 (cut_facts_tac prems 1), |
310 (rtac allI 1), |
310 (rtac allI 1), |
311 (rtac (not_ex RS iffD1) 1), |
311 (rtac (not_ex RS iffD1) 1), |
314 (fast_tac (HOL_cs addSDs [chain_UU_I RS spec]) 1) |
314 (fast_tac (HOL_cs addSDs [chain_UU_I RS spec]) 1) |
315 ]); |
315 ]); |
316 |
316 |
317 |
317 |
318 qed_goal "thelub_up3" thy |
318 qed_goal "thelub_up3" thy |
319 "is_chain(Y) ==> lub(range(Y)) = UU |\ |
319 "chain(Y) ==> lub(range(Y)) = UU |\ |
320 \ lub(range(Y)) = up`(lub(range(%i. fup`(LAM x. x)`(Y i))))" |
320 \ lub(range(Y)) = up`(lub(range(%i. fup`(LAM x. x)`(Y i))))" |
321 (fn prems => |
321 (fn prems => |
322 [ |
322 [ |
323 (cut_facts_tac prems 1), |
323 (cut_facts_tac prems 1), |
324 (rtac disjE 1), |
324 (rtac disjE 1), |