How is self-intersection allowed in the math? Isn't that inconsistent with maintaining the topology?
Mechanically, you get this deformation by adding another parameter to the function between spaces. In Go-ish pseudo-code, say at each instant of time you have a function
// lon ranges from -180 to 180
// lat ranges from -90 to 90
func eversion_t(lon float, lat float) (x float, y float, z float) {
// return the xyz point corresponding to the lon/lat
}
which maps lon/lat points on the sphere to 3D space. Then the homotopy is a single function, parameterized by a t parameter // t ranges from 0 to 1 inclusive
// lon ranges from -180 to 180
// lat ranges from -90 to 90
func eversion(t float, lon float, lat float) (x float, y float, z float) {
// return the xyz point corresponding to the lat/lon at time t
// see https://arxiv.org/pdf/1711.10466.pdf for the implementation of this function
}
where this combined function is required to be continuous.By the way, the "push the ends of the sphere through each other" function is a perfectly valid homotopy. There's no topological way to talk about "creasing" -- you need derivatives for that. In particular, the eversion function is required to be an immersion (https://en.wikipedia.org/wiki/Immersion_(mathematics)) at each point in time, which is an additional constraint beyond just being a homotopy.
It is. The picture illustrating the impending cusps is after the two sides of the circle have passed through each other.