open import Cat.Prelude
open import Cat.Functor.Base
open import Cat.Functor.Naturality
open import Cat.Instances.Presheaf.Limits
open import Cat.Instances.Presheaf.Exponentials
open import Cat.Diagram.Exponential
open import Cat.Diagram.Product
import Cat.Reasoning
module PresheafExponential {ℓ} {C : Precategory ℓ ℓ} where
module C = Cat.Reasoning C
module PSh = Cat.Reasoning (PSh ℓ C)
open Binary-products (PSh ℓ C) (PSh-products _ C)
open Cartesian-closed (PSh-closed C)
open Functor
open _=>_
module _ b a where
open Exponential (has-exp a b)
renaming (B^A to infixr 50 _^_)
using () public
module _ (K L M : PSh.Ob) where
internal-currying : M ^ (K ⊗₀ L) PSh.≅ (M ^ K) ^ L
internal-currying = PSh.make-iso
(λ where
.η n f .η q (v , y) .η p (u , x) → f .η p (v C.∘ u , x , L .F₁ u y)
.η n f .η q (v , y) .is-natural → {! !}
.η n f .is-natural → {! !}
.is-natural → {! !})
(λ where
.η n g .η q (v , x , y) → g .η q (v , y) .η q (C.id , x)
.η n g .is-natural → {! !}
.is-natural → {! !})
(ext λ n g q v y p u x →
⌜ g .η p (v C.∘ u , L .F₁ u y) ⌝ .η p (C.id , x) ≡⟨ g .is-natural _ _ u $ₚ (v , y) ηₚ p $ₚ (C.id , x) ⟩
(M ^ K) .F₁ u (g .η q (v , y)) .η p (C.id , x) ≡⟨⟩
g .η q (v , y) .η p (⌜ u C.∘ C.id ⌝ , x) ≡⟨ ap! (C.idr u) ⟩
g .η q (v , y) .η p (u , x) ∎)
{! !}