module Order.Semilattice.Join where
Join semilatticesπ
A join semilattice is a partially ordered set which has all finite joins. This means, in particular, that it has a bottom element, since that is the join of the empty family. Note that, even though join-semilattices are presented as being equipped with a binary operation , this is not actual structure on the partially-ordered set: joins are uniquely determined, so βbeing a join-semilatticeβ is always a proposition.
record is-join-semilattice {o β} (P : Poset o β) : Type (o β β) where
field
_βͺ_ : β P β β β P β β β P β
: β x y β is-join P x y (x βͺ y)
βͺ-joins : Bottom P has-bottom
Morphisms of join semilattices are monotone functions which additionally send joins to joins: we have , and . Note that, since was already assumed to be order-preserving, it suffices to have less than , with an inequality. This is because we always have the reverse direction by the universal property.
record
is-join-slat-hom{P : Poset o β} {Q : Poset o' β'} (f : Monotone P Q)
(P-slat : is-join-semilattice P)
(Q-slat : is-join-semilattice Q) : Type (o β β')
where
field
: β x y β f # (x Pβ.βͺ y) Q.β€ (f # x) Qβ.βͺ (f # y)
βͺ-β€ : f # Pβ.bot Q.β€ Qβ.bot bot-β€
The category of join-semilatticesπ
It is clear from the definition that join semilatice homomorphisms are closed under identity and composition: therefore, we can define the category of join-semilattices as a subcategory of that of posets. However, this subcategory is not full: there are monotone functions between semilattices that do not preserve joins.
id-join-slat-hom: (Pβ : is-join-semilattice P)
β is-join-slat-hom idβ Pβ Pβ
β-join-slat-hom: β {Pβ Qβ Rβ} {f : Monotone Q R} {g : Monotone P Q}
β is-join-slat-hom f Qβ Rβ
β is-join-slat-hom g Pβ Qβ
β is-join-slat-hom (f ββ g) Pβ Rβ