src/HOL/Library/Boolean_Algebra.thy
changeset 70187 2082287357e6
parent 70186 18e94864fd0f
child 70188 e626bffe28bc
equal deleted inserted replaced
70186:18e94864fd0f 70187:2082287357e6
   189 qed
   189 qed
   190 
   190 
   191 lemma de_Morgan_disj [simp]: "\<sim> (x \<squnion> y) = \<sim> x \<sqinter> \<sim> y"
   191 lemma de_Morgan_disj [simp]: "\<sim> (x \<squnion> y) = \<sim> x \<sqinter> \<sim> y"
   192   by (rule boolean_algebra.de_Morgan_conj [OF dual])
   192   by (rule boolean_algebra.de_Morgan_conj [OF dual])
   193 
   193 
   194 end
       
   195 
       
   196 
   194 
   197 subsection \<open>Symmetric Difference\<close>
   195 subsection \<open>Symmetric Difference\<close>
   198 
   196 
   199 locale boolean_algebra_xor = boolean_algebra +
   197 definition xor :: "'a \<Rightarrow> 'a \<Rightarrow> 'a"  (infixr "\<oplus>" 65)
   200   fixes xor :: "'a \<Rightarrow> 'a \<Rightarrow> 'a"  (infixr "\<oplus>" 65)
   198   where "x \<oplus> y = (x \<sqinter> \<sim> y) \<squnion> (\<sim> x \<sqinter> y)"
   201   assumes xor_def: "x \<oplus> y = (x \<sqinter> \<sim> y) \<squnion> (\<sim> x \<sqinter> y)"
       
   202 begin
       
   203 
   199 
   204 sublocale xor: abel_semigroup xor
   200 sublocale xor: abel_semigroup xor
   205 proof
   201 proof
   206   fix x y z :: 'a
   202   fix x y z :: 'a
   207   let ?t = "(x \<sqinter> y \<sqinter> z) \<squnion> (x \<sqinter> \<sim> y \<sqinter> \<sim> z) \<squnion> (\<sim> x \<sqinter> y \<sqinter> \<sim> z) \<squnion> (\<sim> x \<sqinter> \<sim> y \<sqinter> z)"
   203   let ?t = "(x \<sqinter> y \<sqinter> z) \<squnion> (x \<sqinter> \<sim> y \<sqinter> \<sim> z) \<squnion> (\<sim> x \<sqinter> y \<sqinter> \<sim> z) \<squnion> (\<sim> x \<sqinter> \<sim> y \<sqinter> z)"