module Order.Semilattice.Meet where
Meet semilatticesπ
A meet semilattice is a partially ordered set which has all finite meets. This means, in particular, that it has a top element, since that is the meet of the empty family. Note that, even though meet-semilattices are presented as being equipped with a binary operation , this is not actual structure on the partially-ordered set: meets are uniquely determined, so βbeing a meet-semilatticeβ is always a proposition.
record is-meet-semilattice {o β} (P : Poset o β) : Type (o β β) where
field
_β©_ : β P β β β P β β β P β
: β x y β is-meet P x y (x β© y)
β©-meets : Top P
has-top
infixr 25 _β©_
A homomorphism of meet-semilattices is a monotone function that sends finite meets to finite meets. In particular, it suffices to have , and
since the converse direction of these inequalities is guaranteed by the universal properties.
record
is-meet-slat-hom{P : Poset o β} {Q : Poset o' β'} (f : Monotone P Q)
(P-slat : is-meet-semilattice P) (Q-slat : is-meet-semilattice Q)
: Type (o β β')
where
field
: β x y β (f # x) Qβ.β© (f # y) Q.β€ f # (x Pβ.β© y)
β©-β€ : Qβ.top Q.β€ f # Pβ.top top-β€
The category of meet-semilatticesπ
id-meet-slat-hom: β (Pβ : is-meet-semilattice P)
β is-meet-slat-hom idβ Pβ Pβ
{P = P} _ .β©-β€ _ _ = Poset.β€-refl P
id-meet-slat-hom {P = P} _ .top-β€ = Poset.β€-refl P
id-meet-slat-hom
β-meet-slat-hom: β {Pβ Qβ Rβ} {f : Monotone Q R} {g : Monotone P Q}
β is-meet-slat-hom f Qβ Rβ
β is-meet-slat-hom g Pβ Qβ
β is-meet-slat-hom (f ββ g) Pβ Rβ
{R = R} {f = f} {g = g} f-pres g-pres .β©-β€ x y =
β-meet-slat-hom .Poset.β€-trans (f-pres .β©-β€ (g # x) (g # y)) (f .pres-β€ (g-pres .β©-β€ x y))
R {R = R} {f = f} {g = g} f-pres g-pres .top-β€ =
β-meet-slat-hom .Poset.β€-trans (f-pres .top-β€) (f .pres-β€ (g-pres .top-β€)) R
: β o β β Subcat (Posets o β) (o β β) (o β β)
Meet-slats-subcat .Subcat.is-ob = is-meet-semilattice
Meet-slats-subcat o β .Subcat.is-hom = is-meet-slat-hom
Meet-slats-subcat o β .Subcat.is-hom-prop = hlevel!
Meet-slats-subcat o β .Subcat.is-hom-id = id-meet-slat-hom
Meet-slats-subcat o β .Subcat.is-hom-β = β-meet-slat-hom
Meet-slats-subcat o β
: β o β β Precategory (lsuc o β lsuc β) (o β β)
Meet-slats = Subcategory (Meet-slats-subcat o β) Meet-slats o β
module Meet-slats {o} {β} = Cat.Reasoning (Meet-slats o β)
: β o β β Type _
Meet-semilattice = Meet-slats.Ob {o} {β} Meet-semilattice o β