Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://angg.twu.net/AGDA/Cats1.agda.html -- http://angg.twu.net/AGDA/Cats1.agda -- (find-angg "AGDA/Cats1.agda") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- (defun e () (interactive) (find-angg "AGDA/Cats1.agda")) -- (find-es "agda" "selinger-records") -- (find-es "agda" "isinverse") -- (find-es "agda" "variable") -- {-# BUILTIN NATURAL name #-} open import Level open import Relation.Binary.PropositionalEquality as Eq open Eq.≡-Reasoning module Cats1 where variable ℓ₀ ℓ₁ ℓ₂ ℓ₃ : Level -- record Cat oℓ mℓ eℓ : Set (suc (oℓ ⊔ mℓ ⊔ eℓ)) where record Cat : Set1 where field Objs : Set Hom : Objs → Objs → Set id : (A : Objs) -> (Hom A A) _◦_ : {A B C : Objs} -> (g : Hom B C) -> (f : Hom A B) -> (Hom A C) idL : (A B : Objs) -> (f : Hom A B) -> (f ≡ f ◦ id A) idR : (A B : Objs) -> (f : Hom A B) -> (id B ◦ f ≡ f) assoc : {A B C D : Objs} -> (f : Hom A B) -> (g : Hom B C) -> (h : Hom C D) -> (((h ◦ g) ◦ f) ≡ (h ◦ (g ◦ f))) record Functor (A B : Cat) : Set3 where open Cat field -- A B : Cat ac₀ : (Objs A) -> (Objs B) ac₁ : {C D : Objs A} -> (Hom A C D) -> (Hom B (ac₀ C) (ac₀ D)) respid : (C : Objs A) -> (id B (ac₀ C) ≡ ac₁ (id A C)) respcomp : (C D E : Objs A) -> (f : Hom A C D) -> (g : Hom A D E) -> (ac₁ ((_◦_) A g f) ≡ (_◦_) B (ac₁ g) (ac₁ f)) record ProtoCat : Set1 where field Objs : Set Hom : Objs → Objs → Set id : (A : Objs) → (Hom A A) _◦_ : {A B C : Objs} → (g : Hom B C) → (f : Hom A B) → (Hom A C) record CatNess (catA : ProtoCat) : Set2 where field x : Set -- idL : (A B : ProtoCat.Objs catA) -> Set -- idL : (A B : Objs) -> (f : Hom A B) -> (f ≡ f ◦ id A) -- idR : (A B : Objs) -> (f : Hom A B) -> (id B ◦ f ≡ f) -- assoc : {A B C D : Objs} -- -> (f : Hom A B) -- -> (g : Hom B C) -- -> (h : Hom C D) -- -> (((h ◦ g) ◦ f) ≡ (h ◦ (g ◦ f))) -- oℓ mℓ eℓ : Level -- (find-agdastdlibsrcfile "Function/Bundles.agda" "isInverse : IsInverse f f⁻¹") -- open import Function.Structures -- (favp 16 "freyd-with-functors") -- (fava "freyd-with-functors") -- -- A -- | | -- | η | -- v | -- B |-> RB | g -- | | | -- f | |-> | Rf | -- v v v -- C |-> RC -- -- R -- catB -> catA -- record Universalness (catA catB : Cat) (R : Functor catB catA) (A : Cat.Objs catA) (B : Cat.Objs catB) (η : Cat.Hom catA A (Functor.ac₀ R B)) : Set (suc (suc (suc zero))) where field inv : (C : Cat.Objs catB) -> (g : Cat.Hom catA A (Functor.ac₀ R C)) -> (Cat.Hom catB B C) [B,C]-round-trip : ∀ (C : Cat.Objs catB) → ∀ (f : Cat.Hom catB B C) → (inv C (Cat._◦_ catA (Functor.ac₁ R f) η) ≡ f) [A,RC]-round-trip : ∀ (C : Cat.Objs catB) → ∀ (g : Cat.Hom catA A (Functor.ac₀ R C)) → (Cat._◦_ catA (Functor.ac₁ R (inv C g)) η ≡ g) -- (favp 29 "basic-example-as-skel") -- (fava "basic-example-as-skel") -- -- A -- | | -- | η | -- v | -- C |-> RC | h -- | | | -- f | |-> | Rf | -- v v v -- D |-> RD -- | | -- g | |-> | Rg -- v v -- E |-> RD -- -- R -- catB --> catA -- -- catB[C,-]₀ = λ D : catB . R₀ D -- catB[C,-]₁ = λ D, E : catB . -- λ g : Hom_catB(D,E) . -- λ h : -- -- -- (find-es "agda" "syntax") -- variable A B : Set -- variable f : A -> B -- variable g : B -> A -- variable ii : IsInverse.inverse f g -- Local Variables: -- coding: utf-8-unix -- End: