Pullback.agda 989 B

12345678910111213141516171819202122232425262728
  1. module Pullback where
  2. open import Logic.Equivalence
  3. open import Logic.Relations
  4. open import Logic.Base
  5. open import Category
  6. open import Unique
  7. module Pull (ℂ : Cat) where
  8. private open module CC = Category.Category ℂ
  9. private open module U = Uniq ℂ
  10. record isPull {A B C D A' : Obj}(f : A ─→ B)(g : A ─→ C)(f' : C ─→ D)(g' : B ─→ D)(h₁ : A' ─→ C)(h₂ : A' ─→ B)(commut : f' ∘ h₁ == g' ∘ h₂) : Set1 where
  11. field unique : ∃! \(h : A' ─→ A) -> (g ∘ h == h₁) /\ (f ∘ h == h₂)
  12. record pullback {B C D : Obj}(g' : B ─→ D)(f' : C ─→ D) : Set1 where
  13. field
  14. A : Obj
  15. f : A ─→ B
  16. g : A ─→ C
  17. comm : g' ∘ f == f' ∘ g
  18. pull : (forall {A' : Obj}(h₁ : A' ─→ C)(h₂ : A' ─→ B)(commut : f' ∘ h₁ == g' ∘ h₂) -> isPull f g f' g' h₁ h₂ commut)
  19. record PullCat : Set2 where
  20. field pull : {B C D : Obj}(g' : B ─→ D)(f' : C ─→ D) -> pullback g' f'