{-# OPTIONS --without-K --exact-split #-}
open import TransportLemmas
Homotopies¶
module HomotopyType
{ℓ₁ ℓ₂ : Level} {A : Type ℓ₁} {P : A → Type ℓ₂}
where
In a type-theoretical sense, a homotopy between two functions is a family of equalities between their applications.
Let \(f , g : \prod_{(x:A)} P(x)\) be two sections of a type family \(P : A \to \mathcal{U}\). A homotopy from \(f\) to \(g\) is a dependent function of type
\[(f \sim g) :\equiv \prod_{(x : A)} (f(x) = g(x)).\]
Homotopy types¶
homotopy
: (f g : Π A P)
---------------
→ Type (ℓ₁ ⊔ ℓ₂)
homotopy f g = ∀ (x : A) → f x == g x
Usual notation for homotopy:
_∼_ : (f g : ((x : A) → P x)) → Type (ℓ₁ ⊔ ℓ₂)
f ∼ g = homotopy f g
Homotopy is an equivalence relation¶
Reflexivity¶
h-refl
: (f : Π A P)
-------------
→ f ∼ f
h-refl f x = idp
Symmetry¶
h-sym
: (f g : Π A P)
→ f ∼ g
-------
→ g ∼ f
h-sym _ _ e x = ! (e x)
Transitivity¶
h-comp
: {f g h : Π A P}
→ f ∼ g
→ g ∼ h
-------
→ f ∼ h
h-comp u v x = (u x) · (v x)
Syntax:
_●_
: {f g h : Π A P}
→ f ∼ g
→ g ∼ h
-------
→ f ∼ h
α ● β = h-comp α β