Dependent function extensionality transport case¶
{-# OPTIONS --without-K --exact-split #-}
module _ where
open import Transport
open import TransportLemmas
open import CoproductIdentities
open import EquivalenceType
open import FunExtAxiom
open import FunExtTransport
open import QuasiinverseLemmas
module
FunExtTransportDependent
{ℓ₁ ℓ₂ : Level}{X : Type ℓ₁} {A : X → Type ℓ₂}{B : (x : X) → A x → Type ℓ₂}{x y : X}
where
funext-transport-dfun
: (p : x == y)
→ (f : (a : A x) → B x a)
→ (g : (a : A y) → B y a)
----------------------------------------------------------------------------
→ (f == g
[ (λ z₁ → (x : A z₁) → B z₁ x) ↓ p ])
≃ ((a : A x) →
(f a) == g (tr A p a)
[ (λ w → B (π₁ w) (π₂ w)) ↓ (pair= (p , refl (tr A p a))) ])
funext-transport-dfun idp f g = eqFunExt
funext-transport-dfun-l
: (p : x == y) → (f : (a : A x) → B x a) → (g : (a : A y) → B y a)
→ (tr (λ z₁ → (x : A z₁) → B z₁ x) p f == g)
---------------------------------------------------------------------------
→ (a : A x) →
(f a) == g (tr A p a)
[ (λ w → B (π₁ w) (π₂ w)) ↓ (pair= (p , refl (tr A p a))) ]
funext-transport-dfun-l p f g = lemap (funext-transport-dfun p _ _)
funext-transport-dfun-r
: (p : x == y)
→ (f : (a : A x) → B x a)
→ (g : (a : A y) → B y a)
→ ((a : A x) → tr (λ w → B (π₁ w) (π₂ w)) (pair= (p , refl (tr A p a))) (f a) == g (tr A p a))
--------------------------------------------------------------------------
→ (tr (λ z₁ → (x : A z₁) → B z₁ x) p f == g)
funext-transport-dfun-r p f g = remap (funext-transport-dfun p _ _)
funext-transport-dfun-bezem
: ∀ {ℓ₁ ℓ₂ ℓ₃ : Level} {X : Type ℓ₁}{A : X → Type ℓ₂}{B : (x : X) → A x → Type ℓ₃} {x y : X}
→ (p : x == y)
→ (f : (a : A x) → B x a)
→ (g : (a : A y) → B y a)
→ (a : A y)
------------------------------------------------------------------------------------
→ (tr (λ x → (a : A x) → B x a) p f) a == g a
≃ tr (λ w → B (π₁ w) (π₂ w)) (pair= (p , transport-inv p)) (f (tr A (! p)a)) == g a
funext-transport-dfun-bezem idp f g a = idEqv
funext-transport-dfun-bezem-l
: ∀ {ℓ₁ ℓ₂ ℓ₃ : Level} {X : Type ℓ₁}{A : X → Type ℓ₂}{B : (x : X) → A x → Type ℓ₃} {x y : X}
→ (p : x == y)
→ (f : (a : A x) → B x a)
→ (g : (a : A y) → B y a)
→ (a : A y)
→ (tr (λ x → (a : A x) → B x a) p f) a == g a
------------------------------------------------------------------------------------
→ tr (λ w → B (π₁ w) (π₂ w)) (pair= (p , transport-inv p)) (f (tr A (! p) a)) == g a
funext-transport-dfun-bezem-l p f g a x₁ = lemap (funext-transport-dfun-bezem p f g a) x₁
funext-transport-dfun-bezem-r
: ∀ {ℓ₁ ℓ₂ ℓ₃ : Level} {X : Type ℓ₁}{A : X → Type ℓ₂}{B : (x : X) → A x → Type ℓ₃} {x y : X}
→ (p : x == y)
→ (f : (a : A x) → B x a)
→ (g : (a : A y) → B y a)
→ (a : A y)
→ tr (λ w → B (π₁ w) (π₂ w)) (pair= (p , transport-inv p)) (f (tr A (! p) a)) == g a
------------------------------------------------------------------------------------
→ (tr (λ x → (a : A x) → B x a) p f) a == g a
funext-transport-dfun-bezem-r p f g a x₁ = remap (funext-transport-dfun-bezem p f g a) x₁