mathlib3documentation

topology.homotopy.product

Product of homotopies #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

In this file, we introduce definitions for the product of homotopies. We show that the products of relative homotopies are still relative homotopies. Finally, we specialize to the case of path homotopies, and provide the definition for the product of path classes. We show various lemmas associated with these products, such as the fact that path products commute with path composition, and that projection is the inverse of products.

Definitions #

General homotopies #

• continuous_map.homotopy.pi homotopies: Let f and g be a family of functions indexed on I, such that for each i ∈ I, fᵢ and gᵢ are maps from A to Xᵢ. Let homotopies be a family of homotopies from fᵢ to gᵢ for each i. Then homotopy.pi homotopies is the canonical homotopy from ∏ f to ∏ g, where ∏ f is the product map from A to Πi, Xᵢ, and similarly for ∏ g.

• continuous_map.homotopy_rel.pi homotopies: Same as continuous_map.homotopy.pi, but all homotopies are done relative to some set S ⊆ A.

• continuous_map.homotopy.prod F G is the product of homotopies F and G, where F is a homotopy between f₀ and f₁, G is a homotopy between g₀ and g₁. The result F × G is a homotopy between (f₀ × g₀) and (f₁ × g₁). Again, all homotopies are done relative to S.

• continuous_map.homotopy_rel.prod F G: Same as continuous_map.homotopy.prod, but all homotopies are done relative to some set S ⊆ A.

Path products #

• path.homotopic.pi The product of a family of path classes, where a path class is an equivalence class of paths up to path homotopy.

• path.homotopic.prod The product of two path classes.

@[simp]
theorem continuous_map.homotopy.pi_apply {I : Type u_1} {A : Type u_2} {X : I Type u_3} [Π (i : I), topological_space (X i)] {f g : Π (i : I), C(A, X i)} (homotopies : Π (i : I), (f i).homotopy (g i)) (t : unit_interval × A) (i : I) :
(continuous_map.homotopy.pi homotopies) t i = (homotopies i) t
def continuous_map.homotopy.pi {I : Type u_1} {A : Type u_2} {X : I Type u_3} [Π (i : I), topological_space (X i)] {f g : Π (i : I), C(A, X i)} (homotopies : Π (i : I), (f i).homotopy (g i)) :

The product homotopy of homotopies between functions f and g

Equations
@[simp]
theorem continuous_map.homotopy_rel.pi_apply {I : Type u_1} {A : Type u_2} {X : I Type u_3} [Π (i : I), topological_space (X i)] {f g : Π (i : I), C(A, X i)} {S : set A} (homotopies : Π (i : I), (f i).homotopy_rel (g i) S) (t : unit_interval × A) (i : I) :
(continuous_map.homotopy_rel.pi homotopies) t i = (homotopies i) t
def continuous_map.homotopy_rel.pi {I : Type u_1} {A : Type u_2} {X : I Type u_3} [Π (i : I), topological_space (X i)] {f g : Π (i : I), C(A, X i)} {S : set A} (homotopies : Π (i : I), (f i).homotopy_rel (g i) S) :

The relative product homotopy of homotopies between functions f and g

Equations
@[simp]
theorem continuous_map.homotopy_rel.pi_to_homotopy {I : Type u_1} {A : Type u_2} {X : I Type u_3} [Π (i : I), topological_space (X i)] {f g : Π (i : I), C(A, X i)} {S : set A} (homotopies : Π (i : I), (f i).homotopy_rel (g i) S) :
def continuous_map.homotopy.prod {α : Type u_1} {β : Type u_2} {A : Type u_3} {f₀ f₁ : C(A, α)} {g₀ g₁ : C(A, β)} (F : f₀.homotopy f₁) (G : g₀.homotopy g₁) :
(f₀.prod_mk g₀).homotopy (f₁.prod_mk g₁)

The product of homotopies F and G, where F takes f₀ to f₁ and G takes g₀ to g₁

Equations
@[simp]
theorem continuous_map.homotopy.prod_apply {α : Type u_1} {β : Type u_2} {A : Type u_3} {f₀ f₁ : C(A, α)} {g₀ g₁ : C(A, β)} (F : f₀.homotopy f₁) (G : g₀.homotopy g₁) (t : unit_interval × A) :
(F.prod G) t = (F t, G t)
@[simp]
theorem continuous_map.homotopy_rel.prod_apply {α : Type u_1} {β : Type u_2} {A : Type u_3} {f₀ f₁ : C(A, α)} {g₀ g₁ : C(A, β)} {S : set A} (F : f₀.homotopy_rel f₁ S) (G : g₀.homotopy_rel g₁ S) (t : unit_interval × A) :
(F.prod G) t = (F t, G t)
@[simp]
theorem continuous_map.homotopy_rel.prod_to_homotopy {α : Type u_1} {β : Type u_2} {A : Type u_3} {f₀ f₁ : C(A, α)} {g₀ g₁ : C(A, β)} {S : set A} (F : f₀.homotopy_rel f₁ S) (G : g₀.homotopy_rel g₁ S) :
def continuous_map.homotopy_rel.prod {α : Type u_1} {β : Type u_2} {A : Type u_3} {f₀ f₁ : C(A, α)} {g₀ g₁ : C(A, β)} {S : set A} (F : f₀.homotopy_rel f₁ S) (G : g₀.homotopy_rel g₁ S) :
(f₀.prod_mk g₀).homotopy_rel (f₁.prod_mk g₁) S

The relative product of homotopies F and G, where F takes f₀ to f₁ and G takes g₀ to g₁

Equations
def path.homotopic.pi_homotopy {ι : Type u_1} {X : ι Type u_2} [Π (i : ι), topological_space (X i)] {as bs : Π (i : ι), X i} (γ₀ γ₁ : Π (i : ι), path (as i) (bs i)) (H : Π (i : ι), (γ₀ i).homotopy (γ₁ i)) :
(path.pi γ₀).homotopy (path.pi γ₁)

The product of a family of path homotopies. This is just a specialization of homotopy_rel

Equations
noncomputable def path.homotopic.pi {ι : Type u_1} {X : ι Type u_2} [Π (i : ι), topological_space (X i)] {as bs : Π (i : ι), X i} (γ : Π (i : ι), path.homotopic.quotient (as i) (bs i)) :

The product of a family of path homotopy classes

Equations
• = path.homotopic.pi._proof_1
theorem path.homotopic.pi_lift {ι : Type u_1} {X : ι Type u_2} [Π (i : ι), topological_space (X i)] {as bs : Π (i : ι), X i} (γ : Π (i : ι), path (as i) (bs i)) :
path.homotopic.pi (λ (i : ι), γ i) =
theorem path.homotopic.comp_pi_eq_pi_comp {ι : Type u_1} {X : ι Type u_2} [Π (i : ι), topological_space (X i)] {as bs cs : Π (i : ι), X i} (γ₀ : Π (i : ι), path.homotopic.quotient (as i) (bs i)) (γ₁ : Π (i : ι), path.homotopic.quotient (bs i) (cs i)) :
.comp = path.homotopic.pi (λ (i : ι), (γ₀ i).comp (γ₁ i))

Composition and products commute. This is path.trans_pi_eq_pi_trans descended to path homotopy classes

@[reducible]
def path.homotopic.proj {ι : Type u_1} {X : ι Type u_2} [Π (i : ι), topological_space (X i)] {as bs : Π (i : ι), X i} (i : ι) (p : bs) :

Abbreviation for projection onto the ith coordinate

Equations
@[simp]
theorem path.homotopic.proj_pi {ι : Type u_1} {X : ι Type u_2} [Π (i : ι), topological_space (X i)] {as bs : Π (i : ι), X i} (i : ι) (paths : Π (i : ι), path.homotopic.quotient (as i) (bs i)) :
(path.homotopic.pi paths) = paths i

Lemmas showing projection is the inverse of pi

@[simp]
theorem path.homotopic.pi_proj {ι : Type u_1} {X : ι Type u_2} [Π (i : ι), topological_space (X i)] {as bs : Π (i : ι), X i} (p : bs) :
path.homotopic.pi (λ (i : ι), = p
def path.homotopic.prod_homotopy {α : Type u_1} {β : Type u_2} {a₁ a₂ : α} {b₁ b₂ : β} {p₁ p₁' : path a₁ a₂} {p₂ p₂' : path b₁ b₂} (h₁ : p₁.homotopy p₁') (h₂ : p₂.homotopy p₂') :
(p₁.prod p₂).homotopy (p₁'.prod p₂')

The product of homotopies h₁ and h₂. This is homotopy_rel.prod specialized for path homotopies.

Equations
def path.homotopic.prod {α : Type u_1} {β : Type u_2} {a₁ a₂ : α} {b₁ b₂ : β} (q₁ : a₂) (q₂ : b₂) :
path.homotopic.quotient (a₁, b₁) (a₂, b₂)

The product of path classes q₁ and q₂. This is path.prod descended to the quotient

Equations
• q₂ = path.homotopic.prod._proof_1 q₁ q₂
theorem path.homotopic.prod_lift {α : Type u_1} {β : Type u_2} {a₁ a₂ : α} {b₁ b₂ : β} (p₁ : path a₁ a₂) (p₂ : path b₁ b₂) :
= p₁.prod p₂
theorem path.homotopic.comp_prod_eq_prod_comp {α : Type u_1} {β : Type u_2} {a₁ a₂ a₃ : α} {b₁ b₂ b₃ : β} (q₁ : a₂) (q₂ : b₂) (r₁ : a₃) (r₂ : b₃) :
q₂).comp r₂) = path.homotopic.prod (q₁.comp r₁) (q₂.comp r₂)

Products commute with path composition. This is trans_prod_eq_prod_trans descended to the quotient.

@[reducible]
def path.homotopic.proj_left {α : Type u_1} {β : Type u_2} {c₁ c₂ : α × β} (p : c₂) :

Abbreviation for projection onto the left coordinate of a path class

Equations
@[reducible]
def path.homotopic.proj_right {α : Type u_1} {β : Type u_2} {c₁ c₂ : α × β} (p : c₂) :

Abbreviation for projection onto the right coordinate of a path class

Equations
@[simp]
theorem path.homotopic.proj_left_prod {α : Type u_1} {β : Type u_2} {a₁ a₂ : α} {b₁ b₂ : β} (q₁ : a₂) (q₂ : b₂) :
= q₁

Lemmas showing projection is the inverse of product

@[simp]
theorem path.homotopic.proj_right_prod {α : Type u_1} {β : Type u_2} {a₁ a₂ : α} {b₁ b₂ : β} (q₁ : a₂) (q₂ : b₂) :
@[simp]
theorem path.homotopic.prod_proj_left_proj_right {α : Type u_1} {β : Type u_2} {a₁ a₂ : α} {b₁ b₂ : β} (p : path.homotopic.quotient (a₁, b₁) (a₂, b₂)) :