equal
deleted
inserted
replaced
5 |
5 |
6 Lemmas for Cprod3.thy |
6 Lemmas for Cprod3.thy |
7 *) |
7 *) |
8 |
8 |
9 open Cprod3; |
9 open Cprod3; |
|
10 |
|
11 (* for compatibility with old HOLCF-Version *) |
|
12 qed_goal "inst_cprod_pcpo" thy "UU = (UU,UU)" |
|
13 (fn prems => |
|
14 [ |
|
15 (simp_tac (HOL_ss addsimps [UU_def,UU_cprod_def]) 1) |
|
16 ]); |
10 |
17 |
11 (* ------------------------------------------------------------------------ *) |
18 (* ------------------------------------------------------------------------ *) |
12 (* continuity of (_,_) , fst, snd *) |
19 (* continuity of (_,_) , fst, snd *) |
13 (* ------------------------------------------------------------------------ *) |
20 (* ------------------------------------------------------------------------ *) |
14 |
21 |
224 (rtac cont_snd 1), |
231 (rtac cont_snd 1), |
225 (Simp_tac 1) |
232 (Simp_tac 1) |
226 ]); |
233 ]); |
227 |
234 |
228 qed_goal "cfst_strict" Cprod3.thy "cfst`UU = UU" (fn _ => [ |
235 qed_goal "cfst_strict" Cprod3.thy "cfst`UU = UU" (fn _ => [ |
229 (simp_tac (HOL_ss addsimps [inst_cprod_pcpo2,cfst2]) 1)]); |
236 (simp_tac (HOL_ss addsimps [inst_cprod_pcpo2,cfst2]) 1)]); |
230 qed_goal "csnd_strict" Cprod3.thy "csnd`UU = UU" (fn _ => [ |
237 qed_goal "csnd_strict" Cprod3.thy "csnd`UU = UU" (fn _ => [ |
231 (simp_tac (HOL_ss addsimps [inst_cprod_pcpo2,csnd2]) 1)]); |
238 (simp_tac (HOL_ss addsimps [inst_cprod_pcpo2,csnd2]) 1)]); |
232 |
239 |
233 qed_goalw "surjective_pairing_Cprod2" Cprod3.thy |
240 qed_goalw "surjective_pairing_Cprod2" Cprod3.thy |
234 [cfst_def,csnd_def,cpair_def] "<cfst`p , csnd`p> = p" |
241 [cfst_def,csnd_def,cpair_def] "<cfst`p , csnd`p> = p" |
235 (fn prems => |
242 (fn prems => |
236 [ |
243 [ |
238 (stac beta_cfun 1), |
245 (stac beta_cfun 1), |
239 (rtac cont_snd 1), |
246 (rtac cont_snd 1), |
240 (stac beta_cfun 1), |
247 (stac beta_cfun 1), |
241 (rtac cont_fst 1), |
248 (rtac cont_fst 1), |
242 (rtac (surjective_pairing RS sym) 1) |
249 (rtac (surjective_pairing RS sym) 1) |
243 ]); |
|
244 |
|
245 |
|
246 qed_goalw "less_cprod5b" Cprod3.thy [cfst_def,csnd_def,cpair_def] |
|
247 " (p1 << p2) = (cfst`p1 << cfst`p2 & csnd`p1 << csnd`p2)" |
|
248 (fn prems => |
|
249 [ |
|
250 (stac beta_cfun 1), |
|
251 (rtac cont_snd 1), |
|
252 (stac beta_cfun 1), |
|
253 (rtac cont_snd 1), |
|
254 (stac beta_cfun 1), |
|
255 (rtac cont_fst 1), |
|
256 (stac beta_cfun 1), |
|
257 (rtac cont_fst 1), |
|
258 (rtac less_cprod3b 1) |
|
259 ]); |
250 ]); |
260 |
251 |
261 qed_goalw "less_cprod5c" Cprod3.thy [cfst_def,csnd_def,cpair_def] |
252 qed_goalw "less_cprod5c" Cprod3.thy [cfst_def,csnd_def,cpair_def] |
262 "<xa,ya> << <x,y> ==> xa<<x & ya << y" |
253 "<xa,ya> << <x,y> ==> xa<<x & ya << y" |
263 (fn prems => |
254 (fn prems => |
266 (rtac less_cprod4c 1), |
257 (rtac less_cprod4c 1), |
267 (dtac (beta_cfun_cprod RS subst) 1), |
258 (dtac (beta_cfun_cprod RS subst) 1), |
268 (dtac (beta_cfun_cprod RS subst) 1), |
259 (dtac (beta_cfun_cprod RS subst) 1), |
269 (atac 1) |
260 (atac 1) |
270 ]); |
261 ]); |
271 |
|
272 |
262 |
273 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] |
274 "[|is_chain(S)|] ==> range(S) <<| \ |
264 "[|is_chain(S)|] ==> range(S) <<| \ |
275 \ <(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)))>" |
276 (fn prems => |
266 (fn prems => |