Disjointness and complements #
This file defines Disjoint
, Codisjoint
, and the IsCompl
predicate.
Main declarations #
Disjoint x y
: two elements of a lattice are disjoint if theirinf
is the bottom element.Codisjoint x y
: two elements of a lattice are codisjoint if theirjoin
is the top element.IsCompl x y
: In a bounded lattice, predicate for "x
is a complement ofy
". Note that in a non distributive lattice, an element can have several complements.ComplementedLattice α
: Typeclass stating that any element of a lattice has a complement.
Two elements of a lattice are disjoint if their inf is the bottom element. (This generalizes disjoint sets, viewed as members of the subset lattice.)
Note that we define this without reference to ⊓
, as this allows us to talk about orders where
the infimum is not unique, or where implementing Inf
would require additional Decidable
arguments.
Instances For
Alias of the forward direction of disjoint_self
.
Alias of the forward direction of codisjoint_self
.
Two elements x
and y
are complements of each other if x ⊔ y = ⊤
and x ⊓ y = ⊥
.
- disjoint : Disjoint x y
If
x
andy
are to be complementary in an order, they should be disjoint. - codisjoint : Codisjoint x y
If
x
andy
are to be complementary in an order, they should be codisjoint.
Instances For
An element is complemented if it has a complement.
Equations
- IsComplemented a = ∃ (b : α), IsCompl a b
Instances For
A complemented bounded lattice is one where every element has a (not necessarily unique) complement.
- exists_isCompl : ∀ (a : α), ∃ (b : α), IsCompl a b
In a
ComplementedLattice
, every element admits a complement.
Instances
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The sublattice of complemented elements.
Equations
- Complementeds α = { a : α // IsComplemented a }
Instances For
Equations
- Complementeds.hasCoeT = { coe := Subtype.val }
Equations
- Complementeds.instBoundedOrderComplementedsLeToLEToPreorderToPartialOrderToSemilatticeInfIsComplemented = Subtype.boundedOrder ⋯ ⋯
Equations
- Complementeds.instSupComplementedsToLattice = { sup := fun (a b : Complementeds α) => { val := ↑a ⊔ ↑b, property := ⋯ } }
Equations
- Complementeds.instInfComplementedsToLattice = { inf := fun (a b : Complementeds α) => { val := ↑a ⊓ ↑b, property := ⋯ } }
Equations
- Complementeds.instDistribLatticeComplementedsToLattice = Function.Injective.distribLattice Subtype.val ⋯ ⋯ ⋯