src/HOLCF/Cprod3.ML
changeset 2640 ee4dfce170a0
parent 2566 cbf02fc74332
child 2840 7e03e61612b0
equal deleted inserted replaced
2639:2c38796b33b9 2640:ee4dfce170a0
     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 =>