src/HOLCF/Cprod3.ML
changeset 899 516f9e349a16
parent 892 d0dc8d057929
child 1168 74be52691d62
equal deleted inserted replaced
898:4f9c8503d1c5 899:516f9e349a16
    25 	(rtac (monofun_fst RS ch2ch_monofun) 1),
    25 	(rtac (monofun_fst RS ch2ch_monofun) 1),
    26 	(rtac ch2ch_fun 1),
    26 	(rtac ch2ch_fun 1),
    27 	(rtac (monofun_pair1 RS ch2ch_monofun) 1),
    27 	(rtac (monofun_pair1 RS ch2ch_monofun) 1),
    28 	(atac 1),
    28 	(atac 1),
    29 	(rtac allI 1),
    29 	(rtac allI 1),
    30 	(simp_tac pair_ss 1),
    30 	(simp_tac prod_ss 1),
    31 	(rtac sym 1),
    31 	(rtac sym 1),
    32 	(simp_tac pair_ss 1),
    32 	(simp_tac prod_ss 1),
    33 	(rtac (lub_const RS thelubI) 1)
    33 	(rtac (lub_const RS thelubI) 1)
    34 	]);
    34 	]);
    35 
    35 
    36 qed_goal "contlub_pair1" Cprod3.thy "contlub(Pair)"
    36 qed_goal "contlub_pair1" Cprod3.thy "contlub(Pair)"
    37  (fn prems =>
    37  (fn prems =>
    56  (fn prems =>
    56  (fn prems =>
    57 	[
    57 	[
    58 	(cut_facts_tac prems 1),
    58 	(cut_facts_tac prems 1),
    59 	(res_inst_tac [("f1","Pair")] (arg_cong RS cong) 1),
    59 	(res_inst_tac [("f1","Pair")] (arg_cong RS cong) 1),
    60 	(rtac sym 1),
    60 	(rtac sym 1),
    61 	(simp_tac pair_ss 1),
    61 	(simp_tac prod_ss 1),
    62 	(rtac (lub_const RS thelubI) 1),
    62 	(rtac (lub_const RS thelubI) 1),
    63 	(rtac lub_equal 1),
    63 	(rtac lub_equal 1),
    64 	(atac 1),
    64 	(atac 1),
    65 	(rtac (monofun_snd RS ch2ch_monofun) 1),
    65 	(rtac (monofun_snd RS ch2ch_monofun) 1),
    66 	(rtac (monofun_pair2 RS ch2ch_monofun) 1),
    66 	(rtac (monofun_pair2 RS ch2ch_monofun) 1),
    67 	(atac 1),
    67 	(atac 1),
    68 	(rtac allI 1),
    68 	(rtac allI 1),
    69 	(simp_tac pair_ss 1)
    69 	(simp_tac prod_ss 1)
    70 	]);
    70 	]);
    71 
    71 
    72 qed_goal "contlub_pair2" Cprod3.thy "contlub(Pair(x))"
    72 qed_goal "contlub_pair2" Cprod3.thy "contlub(Pair(x))"
    73  (fn prems =>
    73  (fn prems =>
    74 	[
    74 	[
   101 	[
   101 	[
   102 	(rtac contlubI 1),
   102 	(rtac contlubI 1),
   103 	(strip_tac 1),
   103 	(strip_tac 1),
   104 	(rtac (lub_cprod RS thelubI RS ssubst) 1),
   104 	(rtac (lub_cprod RS thelubI RS ssubst) 1),
   105 	(atac 1),
   105 	(atac 1),
   106 	(simp_tac pair_ss 1)
   106 	(simp_tac prod_ss 1)
   107 	]);
   107 	]);
   108 
   108 
   109 qed_goal "contlub_snd" Cprod3.thy "contlub(snd)"
   109 qed_goal "contlub_snd" Cprod3.thy "contlub(snd)"
   110  (fn prems =>
   110  (fn prems =>
   111 	[
   111 	[
   112 	(rtac contlubI 1),
   112 	(rtac contlubI 1),
   113 	(strip_tac 1),
   113 	(strip_tac 1),
   114 	(rtac (lub_cprod RS thelubI RS ssubst) 1),
   114 	(rtac (lub_cprod RS thelubI RS ssubst) 1),
   115 	(atac 1),
   115 	(atac 1),
   116 	(simp_tac pair_ss 1)
   116 	(simp_tac prod_ss 1)
   117 	]);
   117 	]);
   118 
   118 
   119 qed_goal "contX_fst" Cprod3.thy "contX(fst)"
   119 qed_goal "contX_fst" Cprod3.thy "contX(fst)"
   120 (fn prems =>
   120 (fn prems =>
   121 	[
   121 	[
   212 	[
   212 	[
   213 	(cut_facts_tac prems 1),
   213 	(cut_facts_tac prems 1),
   214 	(rtac (beta_cfun_cprod RS ssubst) 1),
   214 	(rtac (beta_cfun_cprod RS ssubst) 1),
   215 	(rtac (beta_cfun RS ssubst) 1),
   215 	(rtac (beta_cfun RS ssubst) 1),
   216 	(rtac contX_fst 1),
   216 	(rtac contX_fst 1),
   217 	(simp_tac pair_ss  1)
   217 	(simp_tac prod_ss  1)
   218 	]);
   218 	]);
   219 
   219 
   220 qed_goalw "csnd2" Cprod3.thy [csnd_def,cpair_def] 
   220 qed_goalw "csnd2" Cprod3.thy [csnd_def,cpair_def] 
   221 	"csnd[x#y]=y"
   221 	"csnd[x#y]=y"
   222  (fn prems =>
   222  (fn prems =>
   223 	[
   223 	[
   224 	(cut_facts_tac prems 1),
   224 	(cut_facts_tac prems 1),
   225 	(rtac (beta_cfun_cprod RS ssubst) 1),
   225 	(rtac (beta_cfun_cprod RS ssubst) 1),
   226 	(rtac (beta_cfun RS ssubst) 1),
   226 	(rtac (beta_cfun RS ssubst) 1),
   227 	(rtac contX_snd 1),
   227 	(rtac contX_snd 1),
   228 	(simp_tac pair_ss  1)
   228 	(simp_tac prod_ss  1)
   229 	]);
   229 	]);
   230 
   230 
   231 qed_goalw "surjective_pairing_Cprod2" Cprod3.thy 
   231 qed_goalw "surjective_pairing_Cprod2" Cprod3.thy 
   232 	[cfst_def,csnd_def,cpair_def] "(cfst[p] # csnd[p]) = p"
   232 	[cfst_def,csnd_def,cpair_def] "(cfst[p] # csnd[p]) = p"
   233  (fn prems =>
   233  (fn prems =>