Boolean algebra
Context boolean
uses builtins/truth
1 Logical operations
The following operators are defined on terms of sort boolean:
NOT: |
| ¬(boolean) : boolean |
AND: |
| boolean ∧ boolean : boolean |
OR: |
| boolean ∨ boolean : boolean |
XOR: |
| boolean ⊻ boolean : boolean |
1.1 Rewrite rules
1.1.1 Eliminate NOT and OR
¬(X) ⇒ true ⊻ X ∀ X : boolean
X ∨ Y ⇒ X ⊻ Y ⊻ (X ∧ Y) ∀ X : boolean ∀ Y : boolean
1.1.2 Simplify AND relations
X ∧ false ⇒ false ∀ X : boolean
false ∧ X ⇒ false ∀ X : boolean
X ∧ true ⇒ X ∀ X : boolean
true ∧ X ⇒ X ∀ X : boolean
X ∧ X ⇒ X ∀ X : boolean
1.1.3 Simplify XOR relations
X ⊻ false ⇒ X ∀ X : boolean
false ⊻ X ⇒ X ∀ X : boolean
X ⊻ X ⇒ false ∀ X : boolean
1.1.4 Standardize combinations of XOR and AND
X ∧ (Y ⊻ Z) ⇒ (X ∧ Y) ⊻ (X ∧ Z)
∀ Z : boolean
∀ X : boolean
∀ Y : boolean
1.2 Tests
¬(false) ⇒ true ✓
¬(true) ⇒ false ✓
false ∧ false ⇒ false ✓
false ∧ true ⇒ false ✓
true ∧ false ⇒ false ✓
true ∧ true ⇒ true ✓
false ∨ false ⇒ false ✓
false ∨ true ⇒ true ✓
true ∨ false ⇒ true ✓
true ∨ true ⇒ true ✓
false ⊻ false ⇒ false ✓
false ⊻ true ⇒ true ✓
true ⊻ false ⇒ true ✓
true ⊻ true ⇒ false ✓