Home

Transport

module foundations.transport where
Imports
open import foundations.universe
open import foundations.identity-type
open import foundations.functions-are-functors
open import foundations.groupoid-laws
open import foundations.function
private variable
  ℓ : Level
  A B C : Type ℓ
  x y : A

transport : A = B → A → B
transport refl x = x

subst : ∀ (P : A → Type ℓ) → x = y → P x → P y
subst P p = transport (ap P p)

transport∙ : ∀ (p : A = B) (q : B = C)
  → transport (p ∙ q) x = transport q (transport p x)
transport∙ {x = x} p refl =
  ap (λ w → transport w x) (runitId p)

substConst : ∀ (p : x = y) (b : B)
  → subst (λ _ → B) p b = b
substConst refl b = refl
private variable
  P Q : B → Type ℓ

subst∘ : ∀ (f : A → B) (p : x = y) (v : P (f x))
  → subst (P ∘ f) p v = subst P (ap f p) v
subst∘ f refl v = refl

substFiberwise : ∀ (f : (a : A) → P a → Q a) (p : x = y) (v : P x)
  → subst Q p (f x v) = f y (subst P p v)
substFiberwise f refl v = refl