# Transport along homotopies
```agda
module foundation.transport-along-homotopies where
```
<details><summary>Imports</summary>
```agda
open import foundation.action-on-identifications-functions
open import foundation.function-extensionality
open import foundation.homotopy-induction
open import foundation.transport-along-higher-identifications
open import foundation.universe-levels
open import foundation-core.homotopies
open import foundation-core.identity-types
open import foundation-core.transport-along-identifications
```
</details>
## Idea
If `C : (x : A) → B x → 𝒰` is a type family, and `H : f ~ g` is a homotopy
between functions `f g : (x : A) → B x`, then there is a natural transport
operation that transports an element `z : C x (f x)` along the homotopy `H` to
an element of type `C x (g x)`.
## Definitions
### Transporting along homotopies
```agda
module _
{l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} (C : (x : A) → B x → UU l3)
{f g : (x : A) → B x}
where
tr-htpy :
(f ~ g) → ((x : A) → C x (f x)) → ((x : A) → C x (g x))
tr-htpy H f' x = tr (C x) (H x) (f' x)
tr-htpy² :
{H K : f ~ g} (L : H ~ K) (f' : (x : A) → C x (f x)) →
tr-htpy H f' ~ tr-htpy K f'
tr-htpy² L f' x = tr² (C x) (L x) (f' x)
```
## Properties
### Transport along a homotopy `H` is homotopic to transport along the identification `eq-htpy H`
```agda
module _
{l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} (C : (x : A) → B x → UU l3)
where
statement-compute-tr-htpy :
{f g : (x : A) → B x} (H : f ~ g) → UU (l1 ⊔ l3)
statement-compute-tr-htpy H =
tr (λ u → (x : A) → C x (u x)) (eq-htpy H) ~ tr-htpy C H
base-case-compute-tr-htpy :
{f : (x : A) → B x} → statement-compute-tr-htpy (refl-htpy' f)
base-case-compute-tr-htpy =
htpy-eq (ap (tr (λ u → (x : A) → C x (u x))) (eq-htpy-refl-htpy _))
abstract
compute-tr-htpy :
{f g : (x : A) → B x} (H : f ~ g) → statement-compute-tr-htpy H
compute-tr-htpy {f} {g} =
ind-htpy f
( λ _ → statement-compute-tr-htpy)
( base-case-compute-tr-htpy)
compute-tr-htpy-refl-htpy :
{f : (x : A) → B x} →
compute-tr-htpy (refl-htpy' f) = base-case-compute-tr-htpy
compute-tr-htpy-refl-htpy {f} =
compute-ind-htpy f
( λ _ → statement-compute-tr-htpy)
( base-case-compute-tr-htpy)
```