123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- module Example where
- open import Logic.Identity
- open import Base
- open import Category
- open import Product
- open import Terminal
- open import Unique
- import Iso
- infixr 30 _─→_
- infixr 90 _∘_
- data Name : Set where
- Zero : Name
- One : Name
- Half : Name
- data Obj : Set1 where
- obj : Name -> Obj
- mutual
- _─→'_ : Name -> Name -> Set
- x ─→' y = obj x ─→ obj y
- data _─→_ : Obj -> Obj -> Set where
- Idle : {A : Name} -> A ─→' A
- All : Zero ─→' One
- Start : Zero ─→' Half
- Turn : Half ─→' Half
- Back : One ─→' Half
- End : Half ─→' One
- id : {A : Obj} -> A ─→ A
- id {obj x} = Idle
- _∘_ : {A B C : Obj} -> B ─→ C -> A ─→ B -> A ─→ C
- f ∘ Idle = f
- Idle ∘ All = All
- Idle ∘ Start = Start
- Turn ∘ Start = Start
- End ∘ Start = All
- Idle ∘ Turn = Turn
- Turn ∘ Turn = Turn
- End ∘ Turn = End
- Idle ∘ Back = Back
- Turn ∘ Back = Back
- End ∘ Back = Idle
- Idle ∘ End = End
- idL : {A B : Obj}{f : A ─→ B} -> id ∘ f ≡ f
- idL {f = Idle } = refl
- idL {f = All } = refl
- idL {f = Start } = refl
- idL {f = Turn } = refl
- idL {f = Back } = refl
- idL {f = End } = refl
- idR : {A B : Obj}{f : A ─→ B} -> f ∘ id ≡ f
- idR {obj _} = refl
- assoc : {A B C D : Obj}{f : C ─→ D}{g : B ─→ C}{h : A ─→ B} ->
- (f ∘ g) ∘ h ≡ f ∘ (g ∘ h)
- assoc {f = _ }{g = _ }{h = Idle } = refl
- assoc {f = _ }{g = Idle}{h = All } = refl
- assoc {f = _ }{g = Idle}{h = Start} = refl
- assoc {f = Idle}{g = Turn}{h = Start} = refl
- assoc {f = Turn}{g = Turn}{h = Start} = refl
- assoc {f = End }{g = Turn}{h = Start} = refl
- assoc {f = Idle}{g = End }{h = Start} = refl
- assoc {f = _ }{g = Idle}{h = Turn } = refl
- assoc {f = Idle}{g = Turn}{h = Turn } = refl
- assoc {f = Turn}{g = Turn}{h = Turn } = refl
- assoc {f = End }{g = Turn}{h = Turn } = refl
- assoc {f = Idle}{g = End }{h = Turn } = refl
- assoc {f = _ }{g = Idle}{h = Back } = refl
- assoc {f = Idle}{g = Turn}{h = Back } = refl
- assoc {f = Turn}{g = Turn}{h = Back } = refl
- assoc {f = End }{g = Turn}{h = Back } = refl
- assoc {f = Idle}{g = End }{h = Back } = refl
- assoc {f = _ }{g = Idle}{h = End } = refl
- ℂ : Cat
- ℂ = cat Obj _─→_ id _∘_
- (\{_}{_} -> Equiv)
- (\{_}{_}{_} -> cong2 _∘_)
- idL idR assoc
- open module T = Term ℂ
- open module I = Init ℂ
- open module S = Sum ℂ
- term : Terminal (obj One)
- term (obj Zero) = ?
- init : Initial (obj Zero)
- init = ?
|