equal
deleted
inserted
replaced
18 (* ------------------------------------------------------------------------ *) |
18 (* ------------------------------------------------------------------------ *) |
19 (* continuity of (_,_) , fst, snd *) |
19 (* continuity of (_,_) , fst, snd *) |
20 (* ------------------------------------------------------------------------ *) |
20 (* ------------------------------------------------------------------------ *) |
21 |
21 |
22 qed_goal "Cprod3_lemma1" Cprod3.thy |
22 qed_goal "Cprod3_lemma1" Cprod3.thy |
23 "is_chain(Y::(nat=>'a::cpo)) ==>\ |
23 "chain(Y::(nat=>'a::cpo)) ==>\ |
24 \ (lub(range(Y)),(x::'b::cpo)) =\ |
24 \ (lub(range(Y)),(x::'b::cpo)) =\ |
25 \ (lub(range(%i. fst(Y i,x))),lub(range(%i. snd(Y i,x))))" |
25 \ (lub(range(%i. fst(Y i,x))),lub(range(%i. snd(Y i,x))))" |
26 (fn prems => |
26 (fn prems => |
27 [ |
27 [ |
28 (cut_facts_tac prems 1), |
28 (cut_facts_tac prems 1), |
55 (etac (monofun_pair1 RS ch2ch_monofun) 2), |
55 (etac (monofun_pair1 RS ch2ch_monofun) 2), |
56 (etac Cprod3_lemma1 1) |
56 (etac Cprod3_lemma1 1) |
57 ]); |
57 ]); |
58 |
58 |
59 qed_goal "Cprod3_lemma2" Cprod3.thy |
59 qed_goal "Cprod3_lemma2" Cprod3.thy |
60 "is_chain(Y::(nat=>'a::cpo)) ==>\ |
60 "chain(Y::(nat=>'a::cpo)) ==>\ |
61 \ ((x::'b::cpo),lub(range Y)) =\ |
61 \ ((x::'b::cpo),lub(range Y)) =\ |
62 \ (lub(range(%i. fst(x,Y i))),lub(range(%i. snd(x, Y i))))" |
62 \ (lub(range(%i. fst(x,Y i))),lub(range(%i. snd(x, Y i))))" |
63 (fn prems => |
63 (fn prems => |
64 [ |
64 [ |
65 (cut_facts_tac prems 1), |
65 (cut_facts_tac prems 1), |
259 (dtac (beta_cfun_cprod RS subst) 1), |
259 (dtac (beta_cfun_cprod RS subst) 1), |
260 (atac 1) |
260 (atac 1) |
261 ]); |
261 ]); |
262 |
262 |
263 qed_goalw "lub_cprod2" Cprod3.thy [cfst_def,csnd_def,cpair_def] |
263 qed_goalw "lub_cprod2" Cprod3.thy [cfst_def,csnd_def,cpair_def] |
264 "[|is_chain(S)|] ==> range(S) <<| \ |
264 "[|chain(S)|] ==> range(S) <<| \ |
265 \ <(lub(range(%i. cfst`(S i)))) , lub(range(%i. csnd`(S i)))>" |
265 \ <(lub(range(%i. cfst`(S i)))) , lub(range(%i. csnd`(S i)))>" |
266 (fn prems => |
266 (fn prems => |
267 [ |
267 [ |
268 (cut_facts_tac prems 1), |
268 (cut_facts_tac prems 1), |
269 (stac beta_cfun_cprod 1), |
269 (stac beta_cfun_cprod 1), |
275 (atac 1) |
275 (atac 1) |
276 ]); |
276 ]); |
277 |
277 |
278 bind_thm ("thelub_cprod2", lub_cprod2 RS thelubI); |
278 bind_thm ("thelub_cprod2", lub_cprod2 RS thelubI); |
279 (* |
279 (* |
280 is_chain ?S1 ==> |
280 chain ?S1 ==> |
281 lub (range ?S1) = |
281 lub (range ?S1) = |
282 <lub (range (%i. cfst`(?S1 i))), lub (range (%i. csnd`(?S1 i)))>" |
282 <lub (range (%i. cfst`(?S1 i))), lub (range (%i. csnd`(?S1 i)))>" |
283 *) |
283 *) |
284 qed_goalw "csplit2" Cprod3.thy [csplit_def] |
284 qed_goalw "csplit2" Cprod3.thy [csplit_def] |
285 "csplit`f`<x,y> = f`x`y" |
285 "csplit`f`<x,y> = f`x`y" |