module Cat.Displayed.Diagram.Total.Terminal
{o ℓ o' ℓ'} {B : Precategory o ℓ} (E : Displayed B o' ℓ')
where
private
module E = Cat.Displayed.Reasoning E
module B = Precategory B
Total 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'
!' : {y : ⌞ B ⌟} {y' : E ʻ y} (h : E.Hom[ ! ] y' top') → !' ≡ h
!-unique'
opaque: ∀ {y} {m : B.Hom y top} {y' : E ʻ y} → E.Hom[ m ] y' top'
!ₚ {m = m} = E.hom[ !-unique m ] !'
!ₚ
abstract
: ∀ {y} {m : B.Hom y top} {y' : E ʻ y} (h : E.Hom[ m ] y' top') → !ₚ ≡ h
!ₚ-unique {m = m} {y'} = J
!ₚ-unique (λ 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'
{h = h} {h' = h'} = to-pathp (sym (!ₚ-unique _) ∙ !ₚ-unique _)
!'-unique₂
record TerminalP (t : Terminal B) : Type (o ⊔ o' ⊔ ℓ') where
open Terminal t
field
: E ʻ top
top' : is-terminal-over has⊤ top'
has⊤' open is-terminal-over has⊤' public