src/HOL/HOLCF/Product_Cpo.thy
changeset 44066 d74182c93f04
parent 42151 4da4fc77664b
child 55414 eab03e9cee8a
equal deleted inserted replaced
44065:eb64ffccfc75 44066:d74182c93f04
    44   show "x \<sqsubseteq> x"
    44   show "x \<sqsubseteq> x"
    45     unfolding below_prod_def by simp
    45     unfolding below_prod_def by simp
    46 next
    46 next
    47   fix x y :: "'a \<times> 'b"
    47   fix x y :: "'a \<times> 'b"
    48   assume "x \<sqsubseteq> y" "y \<sqsubseteq> x" thus "x = y"
    48   assume "x \<sqsubseteq> y" "y \<sqsubseteq> x" thus "x = y"
    49     unfolding below_prod_def Pair_fst_snd_eq
    49     unfolding below_prod_def prod_eq_iff
    50     by (fast intro: below_antisym)
    50     by (fast intro: below_antisym)
    51 next
    51 next
    52   fix x y z :: "'a \<times> 'b"
    52   fix x y z :: "'a \<times> 'b"
    53   assume "x \<sqsubseteq> y" "y \<sqsubseteq> z" thus "x \<sqsubseteq> z"
    53   assume "x \<sqsubseteq> y" "y \<sqsubseteq> z" thus "x \<sqsubseteq> z"
    54     unfolding below_prod_def
    54     unfolding below_prod_def
   140 
   140 
   141 instance prod :: (discrete_cpo, discrete_cpo) discrete_cpo
   141 instance prod :: (discrete_cpo, discrete_cpo) discrete_cpo
   142 proof
   142 proof
   143   fix x y :: "'a \<times> 'b"
   143   fix x y :: "'a \<times> 'b"
   144   show "x \<sqsubseteq> y \<longleftrightarrow> x = y"
   144   show "x \<sqsubseteq> y \<longleftrightarrow> x = y"
   145     unfolding below_prod_def Pair_fst_snd_eq
   145     unfolding below_prod_def prod_eq_iff
   146     by simp
   146     by simp
   147 qed
   147 qed
   148 
   148 
   149 subsection {* Product type is pointed *}
   149 subsection {* Product type is pointed *}
   150 
   150