equal
deleted
inserted
replaced
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 |