Homotopy between paths #
In this file, we define a Homotopy between two Paths. In addition, we define a relation
Homotopic on Paths, and prove that it is an equivalence relation.
Definitions #
Path.Homotopy p₀ p₁is the type of homotopies between pathsp₀andp₁Path.Homotopy.refl pis the constant homotopy betweenpand itselfPath.Homotopy.symm Fis thePath.Homotopy p₁ p₀defined by reversing the homotopyPath.Homotopy.trans F G, whereF : Path.Homotopy p₀ p₁,G : Path.Homotopy p₁ p₂is thePath.Homotopy p₀ p₂defined by putting the first homotopy on[0, 1/2]and the second on[1/2, 1]Path.Homotopy.hcomp F G, whereF : Path.Homotopy p₀ q₀andG : Path.Homotopy p₁ q₁is aPath.Homotopy (p₀.trans p₁) (q₀.trans q₁)Path.Homotopic p₀ p₁is the relation saying that there is a homotopy betweenp₀andp₁Path.Homotopic.setoid x₀ x₁is the setoid onPaths fromPath.HomotopicPath.Homotopic.Quotient x₀ x₁is the quotient type fromPath x₀ x₀byPath.Homotopic.setoid
The type of homotopies between two paths.
Equations
- Path.Homotopy p₀ p₁ = ContinuousMap.HomotopyRel p₀.toContinuousMap p₁.toContinuousMap {0, 1}
Instances For
Evaluating a path homotopy at an intermediate point, giving us a Path.
Equations
- Path.Homotopy.eval F t = { toContinuousMap := ContinuousMap.mk ⇑((ContinuousMap.Homotopy.curry F.toHomotopy) t), source' := (_ : F (t, 0) = x₀), target' := (_ : F (t, 1) = x₁) }
Instances For
Given a path p, we can define a Homotopy p p by F (t, x) = p x.
Equations
- Path.Homotopy.refl p = ContinuousMap.HomotopyRel.refl p.toContinuousMap {0, 1}
Instances For
Given a Homotopy p₀ p₁, we can define a Homotopy p₁ p₀ by reversing the homotopy.
Equations
Instances For
Given Homotopy p₀ p₁ and Homotopy p₁ p₂, we can define a Homotopy p₀ p₂ by putting the first
homotopy on [0, 1/2] and the second on [1/2, 1].
Equations
Instances For
Casting a Homotopy p₀ p₁ to a Homotopy q₀ q₁ where p₀ = q₀ and p₁ = q₁.
Equations
- Path.Homotopy.cast F h₀ h₁ = ContinuousMap.HomotopyRel.cast F (_ : p₀.toContinuousMap = q₀.toContinuousMap) (_ : p₁.toContinuousMap = q₁.toContinuousMap)
Instances For
Suppose p₀ and q₀ are paths from x₀ to x₁, p₁ and q₁ are paths from x₁ to x₂.
Furthermore, suppose F : Homotopy p₀ q₀ and G : Homotopy p₁ q₁. Then we can define a homotopy
from p₀.trans p₁ to q₀.trans q₁.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Suppose p is a path, then we have a homotopy from p to p.reparam f by the convexity of I.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Suppose F : Homotopy p q. Then we have a Homotopy p.symm q.symm by reversing the second
argument.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given F : Homotopy p q, and f : C(X, Y), we can define a homotopy from p.map f.continuous to
q.map f.continuous.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Two paths p₀ and p₁ are Path.Homotopic if there exists a Homotopy between them.
Equations
- Path.Homotopic p₀ p₁ = Nonempty (Path.Homotopy p₀ p₁)
Instances For
The setoid on Paths defined by the equivalence relation Path.Homotopic. That is, two paths are
equivalent if there is a Homotopy between them.
Equations
- Path.Homotopic.setoid x₀ x₁ = { r := Path.Homotopic, iseqv := (_ : Equivalence Path.Homotopic) }
Instances For
The quotient on Path x₀ x₁ by the equivalence relation Path.Homotopic.
Equations
- Path.Homotopic.Quotient x₀ x₁ = Quotient (Path.Homotopic.setoid x₀ x₁)
Instances For
The composition of path homotopy classes. This is Path.trans descended to the quotient.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The image of a path homotopy class P₀ under a map f.
This is Path.map descended to the quotient.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A path Path x₀ x₁ generates a homotopy between constant functions fun _ ↦ x₀ and
fun _ ↦ x₁.
Equations
- Path.toHomotopyConst p = { toContinuousMap := ContinuousMap.comp p.toContinuousMap ContinuousMap.fst, map_zero_left := (_ : Y → p 0 = x₀), map_one_left := (_ : Y → p 1 = x₁) }
Instances For
Two constant continuous maps with nonempty domain are homotopic if and only if their values are joined by a path in the codomain.
Given a homotopy H : f ∼ g, get the path traced by the point x as it moves from
f x to g x.
Equations
- ContinuousMap.Homotopy.evalAt H x = { toContinuousMap := ContinuousMap.mk fun (t : ↑unitInterval) => H (t, x), source' := (_ : H (0, x) = f x), target' := (_ : H (1, x) = g x) }