module Cat.Displayed.Diagram.Total.Terminal
{o ℓ o' ℓ'} {B : Precategory o ℓ} (E : Displayed B o' ℓ')
whereprivate
module E = Cat.Displayed.Reasoning E
module B = Precategory BTotal terminal objects🔗
If is a displayed category over a base admitting a terminal object we say that an object is a total terminal object, if, for every there exists a unique morphism displayed over
record is-terminal-over {top} (term : is-terminal B top) (top' : E ʻ top) : Type (o ⊔ o' ⊔ ℓ') where
open Terminal {C = B} record{ has⊤ = term } hiding (top)
field
!' : {y : ⌞ B ⌟} {y' : E ʻ y} → E.Hom[ ! ] y' top'
!-unique' : {y : ⌞ B ⌟} {y' : E ʻ y} (h : E.Hom[ ! ] y' top') → !' ≡ h
opaque
!ₚ : ∀ {y} {m : B.Hom y top} {y' : E ʻ y} → E.Hom[ m ] y' top'
!ₚ {m = m} = E.hom[ !-unique m ] !'
abstract
!ₚ-unique : ∀ {y} {m : B.Hom y top} {y' : E ʻ y} (h : E.Hom[ m ] y' top') → !ₚ ≡ h
!ₚ-unique {m = m} {y'} = J
(λ m p → (h : E.Hom[ m ] y' top') → E.hom[ p ] !' ≡ h)
(λ h → E.from-pathp[] (!-unique' h))
(!-unique m)
abstract
!'-unique₂
: ∀ {y} {m m' : B.Hom y top} {y' : E ʻ y} {h : E.Hom[ m ] y' top'} {h' : E.Hom[ m' ] y' top'}
→ {p : m ≡ m'}
→ h E.≡[ p ] h'
!'-unique₂ {h = h} {h' = h'} = to-pathp (sym (!ₚ-unique _) ∙ !ₚ-unique _)
record TerminalP (t : Terminal B) : Type (o ⊔ o' ⊔ ℓ') where
open Terminal t
field
top' : E ʻ top
has⊤' : is-terminal-over has⊤ top'
open is-terminal-over has⊤' public