{-# OPTIONS --cubical --safe #-}
open import Prelude
open import Categories
module Categories.Pullback {ℓ₁ ℓ₂} (C : Category ℓ₁ ℓ₂) where
open Category C
record Pullback (f : X ⟶ Z) (g : Y ⟶ Z) : Type (ℓ₁ ℓ⊔ ℓ₂) where
field
{P} : Ob
p₁ : P ⟶ X
p₂ : P ⟶ Y
commute : f · p₁ ≡ g · p₂
ump : ∀ {A : Ob} (h₁ : A ⟶ X) (h₂ : A ⟶ Y) → f · h₁ ≡ g · h₂ →
∃ u ! × (p₁ · u ≡ h₁) × (p₂ · u ≡ h₂)
HasPullbacks : Type (ℓ₁ ℓ⊔ ℓ₂)
HasPullbacks = ∀ {X Y Z} (f : X ⟶ Z) (g : Y ⟶ Z) → Pullback f g