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 work #
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
The natural inclusion a ↦ a from a generalized Boolean algebra to its generated Boolean
algebra.
Equations
Instances For
The inclusion `a ↦ aᶜ from a generalized Boolean algebra to its generated Boolean algebra.
Equations
Instances For
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 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} [GeneralizedBooleanAlgebra α] {a b : α} : a ≤ b → (lift a).LE (lift b)
- comp {α : Type u_1} [GeneralizedBooleanAlgebra α] {a b : α} : a ≤ b → (comp b).LE (comp a)
- sep {α : Type u_1} [GeneralizedBooleanAlgebra α] {a b : α} : Disjoint a b → (lift a).LE (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} [GeneralizedBooleanAlgebra α] {a b : α} : a < b → (lift a).LT (lift b)
- comp {α : Type u_1} [GeneralizedBooleanAlgebra α] {a b : α} : a < b → (comp b).LT (comp a)
- sep {α : Type u_1} [GeneralizedBooleanAlgebra α] {a b : α} : Disjoint a b → (lift a).LT (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
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
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 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 = { toLE := Booleanisation.instLE, lt := fun (x1 x2 : Booleanisation α) => x1 < x2, le_refl := ⋯, le_trans := ⋯, lt_iff_le_not_ge := ⋯ }
Equations
- Booleanisation.instPartialOrder = { toPreorder := Booleanisation.instPreorder, le_antisymm := ⋯ }
Equations
- Booleanisation.instSemilatticeSup = { toPartialOrder := Booleanisation.instPartialOrder, sup := fun (x y : Booleanisation α) => x ⊔ y, le_sup_left := ⋯, le_sup_right := ⋯, sup_le := ⋯ }
Equations
- Booleanisation.instSemilatticeInf = { toPartialOrder := Booleanisation.instPartialOrder, inf := fun (x y : Booleanisation α) => x ⊓ y, inf_le_left := ⋯, inf_le_right := ⋯, le_inf := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- Booleanisation.instBoundedOrder = { toTop := Booleanisation.instTop, le_top := ⋯, toBot := Booleanisation.instBot, bot_le := ⋯ }
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
- Booleanisation.liftLatticeHom = { toFun := Booleanisation.lift, map_sup' := ⋯, map_inf' := ⋯ }