{-# OPTIONS --without-K --safe #-}
module Categories.Morphism.Cartesian where
open import Level
open import Categories.Category
open import Categories.Functor
private
variable
o ℓ e : Level
C D : Category o ℓ e
record Cartesian (F : Functor C D) {X Y} (f : C [ X , Y ]) : Set (levelOfTerm F) where
private
module C = Category C
module D = Category D
open Functor F
open D
field
universal : ∀ {A} {u : F₀ A ⇒ F₀ X} (h : C [ A , Y ]) →
F₁ f ∘ u ≈ F₁ h → C [ A , X ]
commute : ∀ {A} {u : F₀ A ⇒ F₀ X} {h : C [ A , Y ]}
(eq : F₁ f ∘ u ≈ F₁ h) →
C [ C [ f ∘ universal h eq ] ≈ h ]
compat : ∀ {A} {u : F₀ A ⇒ F₀ X} {h : C [ A , Y ]}
(eq : F₁ f ∘ u ≈ F₁ h) →
F₁ (universal h eq) ≈ u