Adding complements to a generalized Boolean algebra #
This file embeds any generalized Boolean algebra into a Boolean algebra.
This concretely proves that any equation holding true in the theory of Boolean algebras that does
not reference ᶜ also holds true in the theory of generalized Boolean algebras. Put another way,
one does not need the existence of complements to prove something which does not talk about
complements.
Main declarations #
Booleanisation: Boolean algebra containing a given generalised Boolean algebra as a sublattice.Booleanisation.liftLatticeHom: Boolean algebra containing a given generalised Boolean algebra as a sublattice.
Future workl #
If mathlib ever acquires GenBoolAlg, the category of generalised Boolean algebras, then one could
show that Booleanisation is the free functor from GenBoolAlg to BoolAlg.
Boolean algebra containing a given generalised Boolean algebra α as a sublattice.
This should be thought of as made of a copy of α (representing elements of α) living under
another copy of α (representing complements of elements of α).
Equations
- Booleanisation α = (α ⊕ α)
Instances For
Equations
- Booleanisation.instDecidableEq = Sum.instDecidableEqSum
The natural inclusion a ↦ a from a generalized Boolean algebra to its generated Boolean
algebra.
Equations
- Booleanisation.lift = Sum.inl
Instances For
The inclusion `a ↦ aᶜ from a generalized Boolean algebra to its generated Boolean algebra.
Equations
- Booleanisation.comp = Sum.inr
Instances For
The order on Booleanisation α is as follows: For a b : α,
a ≤ biffa ≤ binαa ≤ bᶜiffaandbare disjoint inαaᶜ ≤ bᶜiffb ≤ ainα¬ aᶜ ≤ b
- lift: ∀ {α : Type u_1} [inst : GeneralizedBooleanAlgebra α] {a b : α}, a ≤ b → Booleanisation.LE (Booleanisation.lift a) (Booleanisation.lift b)
- comp: ∀ {α : Type u_1} [inst : GeneralizedBooleanAlgebra α] {a b : α}, a ≤ b → Booleanisation.LE (Booleanisation.comp b) (Booleanisation.comp a)
- sep: ∀ {α : Type u_1} [inst : GeneralizedBooleanAlgebra α] {a b : α}, Disjoint a b → Booleanisation.LE (Booleanisation.lift a) (Booleanisation.comp b)
Instances For
The order on Booleanisation α is as follows: For a b : α,
a < biffa < binαa < bᶜiffaandbare disjoint inαaᶜ < bᶜiffb < ainα¬ aᶜ < b
- lift: ∀ {α : Type u_1} [inst : GeneralizedBooleanAlgebra α] {a b : α}, a < b → Booleanisation.LT (Booleanisation.lift a) (Booleanisation.lift b)
- comp: ∀ {α : Type u_1} [inst : GeneralizedBooleanAlgebra α] {a b : α}, a < b → Booleanisation.LT (Booleanisation.comp b) (Booleanisation.comp a)
- sep: ∀ {α : Type u_1} [inst : GeneralizedBooleanAlgebra α] {a b : α}, Disjoint a b → Booleanisation.LT (Booleanisation.lift a) (Booleanisation.comp b)
Instances For
The order on Booleanisation α is as follows: For a b : α,
a ≤ biffa ≤ binαa ≤ bᶜiffaandbare disjoint inαaᶜ ≤ bᶜiffb ≤ ainα¬ aᶜ ≤ b
Equations
- Booleanisation.instLE = { le := Booleanisation.LE }
The order on Booleanisation α is as follows: For a b : α,
a < biffa < binαa < bᶜiffaandbare disjoint inαaᶜ < bᶜiffb < ainα¬ aᶜ < b
Equations
- Booleanisation.instLT = { lt := Booleanisation.LT }
The supremum on Booleanisation α is as follows: For a b : α,
a ⊔ bisa ⊔ ba ⊔ bᶜis(b \ a)ᶜaᶜ ⊔ bis(a \ b)ᶜaᶜ ⊔ bᶜis(a ⊓ b)ᶜ
Equations
- One or more equations did not get rendered due to their size.
The infimum on Booleanisation α is as follows: For a b : α,
a ⊓ bisa ⊓ ba ⊓ bᶜisa \ baᶜ ⊓ bisb \ aaᶜ ⊓ bᶜis(a ⊔ b)ᶜ
Equations
- One or more equations did not get rendered due to their size.
The bottom element of Booleanisation α is the bottom element of α.
Equations
- Booleanisation.instBot = { bot := Booleanisation.lift ⊥ }
The top element of Booleanisation α is the complement of the bottom element of α.
Equations
- Booleanisation.instTop = { top := Booleanisation.comp ⊥ }
The complement operator on Booleanisation α sends a to aᶜ and aᶜ to a, for a : α.
Equations
- Booleanisation.instCompl = { compl := fun (x : Booleanisation α) => match x with | Sum.inl a => Booleanisation.comp a | Sum.inr a => Booleanisation.lift a }
The difference operator on Booleanisation α is as follows: For a b : α,
a \ bisa \ ba \ bᶜisa ⊓ baᶜ \ bis(a ⊔ b)ᶜaᶜ \ bᶜisb \ a
Equations
- One or more equations did not get rendered due to their size.
Equations
- Booleanisation.instPreorder = Preorder.mk (_ : ∀ (x : Booleanisation α), x ≤ x) (_ : ∀ (x y z : Booleanisation α), x ≤ y → y ≤ z → x ≤ z)
Equations
- Booleanisation.instPartialOrder = PartialOrder.mk (_ : ∀ (x y : Booleanisation α), x ≤ y → y ≤ x → x = y)
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Booleanisation.instDistribLattice = DistribLattice.mk (_ : ∀ (x y z : Booleanisation α), (x ⊔ y) ⊓ (x ⊔ z) ≤ x ⊔ y ⊓ z)
Equations
- Booleanisation.instBoundedOrder = BoundedOrder.mk
Equations
- One or more equations did not get rendered due to their size.
The embedding from a generalised Boolean algebra to its generated Boolean algebra.
Equations
- One or more equations did not get rendered due to their size.