(Generalized) Boolean algebras #
A Boolean algebra is a bounded distributive lattice with a complement operator. Boolean algebras generalize the (classical) logic of propositions and the lattice of subsets of a set.
Generalized Boolean algebras may be less familiar, but they are essentially Boolean algebras which
do not necessarily have a top element (⊤⊤
) (and hence not all elements may have complements). One
example in mathlib is Finset α
, the type of all finite subsets of an arbitrary
(not-necessarily-finite) type α
.
GeneralizedBooleanAlgebra α
is defined to be a distributive lattice with bottom (⊥⊥
) admitting
a relative complement operator, written using "set difference" notation as x \ y
(sdiff x y
).
For convenience, the BooleanAlgebra
type class is defined to extend GeneralizedBooleanAlgebra
so that it is also bundled with a \
operator.
(A terminological point: x \ y
is the complement of y
relative to the interval [⊥, x]⊥, x]
. We do
not yet have relative complements for arbitrary intervals, as we do not even have lattice
intervals.)
Main declarations #
GeneralizedBooleanAlgebra
: a type class for generalized Boolean algebrasBooleanAlgebra
: a type class for Boolean algebras.Prop.booleanAlgebra
: the Boolean algebra instance onProp
Implementation notes #
The sup_inf_sdiff
and inf_inf_sdiff
axioms for the relative complement operator in
GeneralizedBooleanAlgebra
are taken from
Wikipedia.
[Stone's paper introducing generalized Boolean algebras][Stone1935] does not define a relative
complement operator a \ b
for all a
, b
. Instead, the postulates there amount to an assumption
that for all a, b : α
where a ≤ b≤ b
, the equations x ⊔ a = b⊔ a = b
and x ⊓ a = ⊥⊓ a = ⊥⊥
have a solution
x
. disjoint.sdiff_unique
proves that this x
is in fact b \ a
.
References #
- https://en.wikipedia.org/wiki/Boolean_algebra_(structure)#Generalizations
- [Postulates for Boolean Algebras and Generalized Boolean Algebras, M.H. Stone][Stone1935]
- [Lattice Theory: Foundation, George Grätzer][Gratzer2011]
Tags #
generalized Boolean algebras, Boolean algebras, lattices, sdiff, compl
Generalized Boolean algebras #
Some of the lemmas in this section are from:
- [Lattice Theory: Foundation, George Grätzer][Gratzer2011]
- https://ncatlab.org/nlab/show/relative+complement
- https://people.math.gatech.edu/~mccuan/courses/4317/symmetricdifference.pdf
For any
a
,b
,(a ⊓ b) ⊔ (a / b) = a⊓ b) ⊔ (a / b) = a⊔ (a / b) = a
For any
a
,b
,(a ⊓ b) ⊓ (a / b) = ⊥⊓ b) ⊓ (a / b) = ⊥⊓ (a / b) = ⊥⊥
A generalized Boolean algebra is a distributive lattice with ⊥⊥
and a relative complement
operation \
(called sdiff
, after "set difference") satisfying (a ⊓ b) ⊔ (a \ b) = a⊓ b) ⊔ (a \ b) = a⊔ (a \ b) = a
and
(a ⊓ b) ⊓ (a \ b) = ⊥⊓ b) ⊓ (a \ b) = ⊥⊓ (a \ b) = ⊥⊥
, i.e. a \ b
is the complement of b
in a
.
This is a generalization of Boolean algebras which applies to Finset α
for arbitrary
(not-necessarily-Fintype
) α
.
Instances
Equations
- GeneralizedBooleanAlgebra.toOrderBot = let src := GeneralizedBooleanAlgebra.toBot; OrderBot.mk (_ : ∀ (a : α), ⊥ ≤ a)
Equations
- One or more equations did not get rendered due to their size.
Boolean algebras #
The infimum of
x
andxᶜ
is at most⊥⊥
The supremum of
x
andxᶜ
is at least⊤⊤
⊤⊤
is the greatest element⊥⊥
is the least elementx \ y
is equal tox ⊓ yᶜ⊓ yᶜ
x ⇨ y⇨ y
is equal toy ⊔ xᶜ⊔ xᶜ
A Boolean algebra is a bounded distributive lattice with a complement operator ᶜ
such that
x ⊓ xᶜ = ⊥⊓ xᶜ = ⊥⊥
and x ⊔ xᶜ = ⊤⊔ xᶜ = ⊤⊤
. For convenience, it must also provide a set difference operation \
and a Heyting implication ⇨⇨
satisfying x \ y = x ⊓ yᶜ⊓ yᶜ
and x ⇨ y = y ⊔ xᶜ⇨ y = y ⊔ xᶜ⊔ xᶜ
.
This is a generalization of (classical) logic of propositions, or the powerset lattice.
Since BoundedOrder
, OrderBot
, and OrderTop
are mixins that require LE
to be present at define-time, the extends
mechanism does not work with them.
Instead, we extend using the underlying Bot
and Top
data typeclasses, and replicate the
order axioms of those classes here. A "forgetful" instance back to BoundedOrder
is provided.
Instances
Equations
- BooleanAlgebra.toBoundedOrder = BoundedOrder.mk
A bounded generalized boolean algebra is a boolean algebra.
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
- 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
- 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.
Pullback a GeneralizedBooleanAlgebra
along an injection.
Equations
- One or more equations did not get rendered due to their size.
Pullback a BooleanAlgebra
along an injection.
Equations
- One or more equations did not get rendered due to their size.