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