1234567891011121314151617181920212223242526272829303132333435363738394041 |
- module Terminal where
- open import Base
- open import Category
- open import Unique
- open import Dual
- import Iso
- module Term (ℂ : Cat) where
- private ℂ' = η-Cat ℂ
- private open module C = Cat ℂ'
- private open module U = Uniq ℂ'
- private open module I = Iso ℂ'
- Terminal : (A : Obj) -> Set1
- Terminal A = (B : Obj) -> ∃! \(f : B ─→ A) -> True
- toTerminal : {A B : Obj} -> Terminal A -> B ─→ A
- toTerminal term = getWitness (term _)
- terminalIso : {A B : Obj} -> Terminal A -> Terminal B -> A ≅ B
- terminalIso tA tB = iso (toTerminal tB)
- (toTerminal tA)
- p q
- where
- p : toTerminal tB ∘ toTerminal tA == id
- p = witnessEqual (tB _) tt tt
- q : toTerminal tA ∘ toTerminal tB == id
- q = witnessEqual (tA _) tt tt
- module Init (ℂ : Cat) = Term (η-Cat ℂ op)
- renaming
- ( Terminal to Initial
- ; toTerminal to fromInitial
- ; terminalIso to initialIso
- )
|