{-# OPTIONS --safe --lossy-unification #-} module Cubical.Categories.Displayed.Exponentials.CartesianClosed where open import Cubical.Foundations.Prelude open import Cubical.Foundations.Function open import Cubical.Data.Sigma open import Cubical.Categories.Category.Base open import Cubical.Categories.Adjoint.UniversalElements open import Cubical.Categories.Limits.BinProduct.More open import Cubical.Categories.Limits.Cartesian.Base open import Cubical.Categories.Limits.CartesianClosed.Base open import Cubical.Categories.Limits.Terminal.More open import Cubical.Categories.Presheaf.Representable open import Cubical.Categories.Exponentials open import Cubical.Categories.Displayed.Base open import Cubical.Categories.Displayed.Adjoint.More open import Cubical.Categories.Displayed.Constructions.Slice open import Cubical.Categories.Displayed.Constructions.BinProduct.More open import Cubical.Categories.Displayed.Exponentials.Base open import Cubical.Categories.Displayed.Fibration open import Cubical.Categories.Displayed.Limits.BinProduct open import Cubical.Categories.Displayed.Limits.Cartesian open import Cubical.Categories.Displayed.Limits.Terminal open import Cubical.Categories.Displayed.Quantifiers private variable ℓC ℓC' ℓCᴰ ℓCᴰ' ℓD ℓD' ℓDᴰ ℓDᴰ' : Level open CartesianClosedCategory open CartesianCategoryᴰ open CartesianCategory CartesianClosedCategoryᴰ : (CCC : CartesianClosedCategory ℓC ℓC') (ℓCᴰ ℓCᴰ' : Level) → Type _ CartesianClosedCategoryᴰ CCC ℓCᴰ ℓCᴰ' = Σ[ CCᴰ ∈ CartesianCategoryᴰ (CCC .CC) ℓCᴰ ℓCᴰ' ] Exponentialsᴰ (CCᴰ .Cᴰ) (CCC .CC .bp) (AllExponentiable→Exponentials (CCC .CC .C) (CCC .CC .bp) (CCC .exps)) (CCᴰ .bpᴰ) open CartesianCategoryⱽ CartesianClosedCategoryⱽ : Category ℓC ℓC' → (ℓCᴰ ℓCᴰ' : Level) → Type _ CartesianClosedCategoryⱽ C ℓCᴰ ℓCᴰ' = Σ[ CCⱽ ∈ CartesianCategoryⱽ C ℓCᴰ ℓCᴰ' ] Σ[ bp ∈ BinProducts C ] Exponentialsⱽ (Cᴰ CCⱽ) (bpⱽ CCⱽ) (cartesianLifts CCⱽ) × UniversalQuantifiers bp (CCⱽ .cartesianLifts)