# HG changeset patch # User huffman # Date 1242070906 25200 # Node ID 2e9cc546e5b0e8cc0f3d854b55803639e0b32aff # Parent 15cf300a742f947de6fc2eb475235a7aaf689c7e use Pair/fst/snd instead of cpair/cfst/csnd diff -r 15cf300a742f -r 2e9cc546e5b0 src/HOLCF/Sprod.thy --- a/src/HOLCF/Sprod.thy Mon May 11 12:26:33 2009 -0700 +++ b/src/HOLCF/Sprod.thy Mon May 11 12:41:46 2009 -0700 @@ -5,7 +5,7 @@ header {* The type of strict products *} theory Sprod -imports Cprod +imports Bifinite begin defaultsort pcpo @@ -13,7 +13,7 @@ subsection {* Definition of strict product type *} pcpodef (Sprod) ('a, 'b) "**" (infixr "**" 20) = - "{p::'a \ 'b. p = \ \ (cfst\p \ \ \ csnd\p \ \)}" + "{p::'a \ 'b. p = \ \ (fst p \ \ \ snd p \ \)}" by simp_all instance "**" :: ("{finite_po,pcpo}", "{finite_po,pcpo}") finite_po @@ -28,23 +28,23 @@ "**" :: "[type, type] => type" ("(_ \/ _)" [21,20] 20) lemma spair_lemma: - "(\ b. a)\b, strictify\(\ a. b)\a> \ Sprod" + "(strictify\(\ b. a)\b, strictify\(\ a. b)\a) \ Sprod" by (simp add: Sprod_def strictify_conv_if) subsection {* Definitions of constants *} definition sfst :: "('a ** 'b) \ 'a" where - "sfst = (\ p. cfst\(Rep_Sprod p))" + "sfst = (\ p. fst (Rep_Sprod p))" definition ssnd :: "('a ** 'b) \ 'b" where - "ssnd = (\ p. csnd\(Rep_Sprod p))" + "ssnd = (\ p. snd (Rep_Sprod p))" definition spair :: "'a \ 'b \ ('a ** 'b)" where "spair = (\ a b. Abs_Sprod - (\ b. a)\b, strictify\(\ a. b)\a>)" + (strictify\(\ b. a)\b, strictify\(\ a. b)\a))" definition ssplit :: "('a \ 'b \ 'c) \ ('a ** 'b) \ 'c" where @@ -62,7 +62,7 @@ subsection {* Case analysis *} lemma Rep_Sprod_spair: - "Rep_Sprod (:a, b:) = (\ b. a)\b, strictify\(\ a. b)\a>" + "Rep_Sprod (:a, b:) = (strictify\(\ b. a)\b, strictify\(\ a. b)\a)" unfolding spair_def by (simp add: cont_Abs_Sprod Abs_Sprod_inverse spair_lemma) @@ -73,7 +73,7 @@ lemma Exh_Sprod: "z = \ \ (\a b. z = (:a, b:) \ a \ \ \ b \ \)" apply (insert Rep_Sprod [of z]) -apply (simp add: Rep_Sprod_simps eq_cprod) +apply (simp add: Rep_Sprod_simps Pair_fst_snd_eq) apply (simp add: Sprod_def) apply (erule disjE, simp) apply (simp add: strictify_conv_if) @@ -162,7 +162,7 @@ lemma below_sprod: "x \ y = (sfst\x \ sfst\y \ ssnd\x \ ssnd\y)" apply (simp add: below_Sprod_def sfst_def ssnd_def cont_Rep_Sprod) -apply (rule below_cprod) +apply (simp only: below_prod_def) done lemma eq_sprod: "(x = y) = (sfst\x = sfst\y \ ssnd\x = ssnd\y)"