module Order.Diagram.Bottom {o â„“} (P : Poset o â„“) where
open Order.Reasoning P
open is-lub
open Lub
Bottom elements🔗
A bottom element in a partial order is an element that is smaller than any other element of This is the same as being a least upper upper bound for the empty family
: Ob → Type _
is-bottom = ∀ x → bot ≤ x
is-bottom bot
record Bottom : Type (o ⊔ ℓ) where
no-eta-equality
field
: Ob
bot : is-bottom bot
has-bottom
: ∀ {x} → bot ≤ x
¡ = has-bottom _
¡
: ∀ {lub} {f : ⊥ → _} → is-bottom lub → is-lub P f lub
is-bottom→is-lub .least x _ = is-bot x
is-bottom→is-lub is-bot
: ∀ {lub} {f : ⊥ → _} → is-lub P f lub → is-bottom lub
is-lub→is-bottom = lub .least x λ () is-lub→is-bottom lub x
: ∀ x → is-prop (is-bottom x)
is-bottom-is-prop _ = hlevel 1
is-bottom-is-prop
: ∀ {x y} → is-bottom x → is-bottom y → x ≡ y
bottom-unique = ≤-antisym (p _) (q _)
bottom-unique p q
: is-prop Bottom
Bottom-is-prop .Bottom.bot =
Bottom-is-prop p q i (Bottom.has-bottom p) (Bottom.has-bottom q) i
bottom-unique .Bottom.has-bottom =
Bottom-is-prop p q i
is-prop→pathp(λ i → is-bottom-is-prop (bottom-unique (Bottom.has-bottom p) (Bottom.has-bottom q) i))
(Bottom.has-bottom p) (Bottom.has-bottom q) i
instance
H-Level-Bottom: ∀ {n}
→ H-Level Bottom (suc n)
= prop-instance Bottom-is-prop
H-Level-Bottom
: ∀ {f : ⊥ → _} → Bottom → Lub P f
Bottom→Lub .Lub.lub = Bottom.bot bottom
Bottom→Lub bottom .Lub.has-lub = is-bottom→is-lub (Bottom.has-bottom bottom)
Bottom→Lub bottom
: ∀ {f : ⊥ → _} → Lub P f → Bottom
Lub→Bottom .Bottom.bot = Lub.lub lub
Lub→Bottom lub .Bottom.has-bottom = is-lub→is-bottom (Lub.has-lub lub)
Lub→Bottom lub
: ∀ {lub} {f} → is-equiv (is-bottom→is-lub {lub} {f})
is-bottom≃is-lub = biimp-is-equiv! _ is-lub→is-bottom
is-bottom≃is-lub
: ∀ {f} → is-equiv (Bottom→Lub {f})
Bottom≃Lub = biimp-is-equiv! _ Lub→Bottom Bottom≃Lub
As initial objects🔗
Bottoms are the decategorifcation of initial objects; we don’t need to require the uniqueness of the universal morphism, as we’ve replaced our hom-sets with hom-props!
: ∀ {x} → is-bottom x → is-initial (poset→category P) x
is-bottom→initial .centre = is-bot x
is-bottom→initial is-bot x .paths _ = ≤-thin _ _
is-bottom→initial is-bot x
: ∀ {x} → is-initial (poset→category P) x → is-bottom x
initial→is-bottom = initial x .centre initial→is-bottom initial x