De Morgan and Kleene algebras #
This file defines Kleene's law for lattices with an involutive complement. A De Morgan algebra
is a bounded distributive lattice with an involutive complement, written
[DistribLattice α] [BoundedOrder α] [InvolutiveCompl α] and needing no class of its own. A
Kleene algebra adds Kleene's law a ⊓ aᶜ ≤ b ⊔ bᶜ, that contradictions lie below excluded
middles; Kalman's "normal" lattices with involution are the distributive lattices satisfying it,
with or without bounds. Every Boolean algebra is a Kleene algebra, the law degenerating through
⊥, and the three-element chain SignType is the canonical non-Boolean example.
"Kleene algebra" here is the lattice notion, not the regular-expression star-semiring of
mathlib's root KleeneAlgebra. Kalman's construction of Kleene algebras from distributive
lattices is in Core/Order/DeMorganAlgebra/Kalman.lean.
Main definitions #
IsKleene: the Kleene law, a Prop mixin over[Lattice α] [InvolutiveCompl α].
Main results #
BooleanAlgebra.toIsKleene: every Boolean algebra is a Kleene algebra.ProdandPiinstances ofIsKleene.
References #
Kleene's law says that contradictions lie below excluded middles. [Kal58]'s "normal" i-lattices are the distributive lattices with an involution satisfying it; with bounds they are the Kleene algebras, the lattice notion.
The Kleene law.
Instances
Every Boolean algebra satisfies the Kleene law, which degenerates through ⊥.