module Homotopy.Space.Sphere where

The -1 and 0 spheresšŸ”—

In classical topology, the topological space is typically defined as the subspace of consisting of all points at unit distance from the origin. We see from this definition that the is the discrete two point space and that the sphere is the empty subspace We will recycle existing types and define:

Sā»Ā¹ : Type
Sā»Ā¹ = āŠ„

Sā° : Type
Sā° = Bool

We note that Sā° may be identified with Susp Sā»Ā¹. Since the pattern matching checker can prove that merid x i is impossible when x : āŠ„, the case for this constructor does not need to be written, this makes the proof look rather tautologous.

open is-iso

SuspSā»Ā¹ā‰ƒSā° : Susp Sā»Ā¹ ā‰” Sā°
SuspSā»Ā¹ā‰ƒSā° = ua (SuspSā»Ā¹ā†’Sā° , is-isoā†’is-equiv iso-pf) where
  SuspSā»Ā¹ā†’Sā° : Susp Sā»Ā¹ ā†’ Sā°
  SuspSā»Ā¹ā†’Sā° N = true
  SuspSā»Ā¹ā†’Sā° S = false

  Sā°ā†’SuspSā»Ā¹ : Sā° ā†’ Susp Sā»Ā¹
  Sā°ā†’SuspSā»Ā¹ true = N
  Sā°ā†’SuspSā»Ā¹ false = S

  iso-pf : is-iso SuspSā»Ā¹ā†’Sā°
  iso-pf .inv = Sā°ā†’SuspSā»Ā¹
  iso-pf .rinv false = refl
  iso-pf .rinv true = refl
  iso-pf .linv N = refl
  iso-pf .linv S = refl

n-SpheresšŸ”—

The spheres of higher dimension can be defined inductively: that is, suspending the constructs the

The spheres are essentially indexed by the natural numbers, except that we want to start at instead of To remind ourselves of this, we name our spheres with a superscript

Sāæā»Ā¹ : Nat ā†’ Type
Sāæā»Ā¹ zero = Sā»Ā¹
Sāæā»Ā¹ (suc n) = Susp (Sāæā»Ā¹ n)

A slightly less trivial example of definitions lining up is the verification that Sāæā»Ā¹ 2 is equivalent to our previous definition of SĀ¹:

SuspSā°ā‰”SĀ¹ : Sāæā»Ā¹ 2 ā‰” SĀ¹
SuspSā°ā‰”SĀ¹ = ua (SuspSā°ā†’SĀ¹ , is-isoā†’is-equiv iso-pf) where

In Sāæā»Ā¹ 2, we have two point constructors joined by two paths, while in SĀ¹ we have a single point constructor and a loop. Geometrically, we can picture morphing Sāæā»Ā¹ 2 into SĀ¹ by squashing one of the meridians down to a point, thus bringing N and S together. This intuition leads to a definition:

  SuspSā°ā†’SĀ¹ : Sāæā»Ā¹ 2 ā†’ SĀ¹
  SuspSā°ā†’SĀ¹ N = base
  SuspSā°ā†’SĀ¹ S = base
  SuspSā°ā†’SĀ¹ (merid N i) = base
  SuspSā°ā†’SĀ¹ (merid S i) = loop i

In the other direction, we send base to N, and then need to send loop to some path N ā‰” N. Since this map should define an equivalence, we make it such that loop wraps around the space Sāæ 2 by way of traversing both meridians.

  SĀ¹ā†’SuspSā° : SĀ¹ ā†’ Sāæā»Ā¹ 2
  SĀ¹ā†’SuspSā° base = N
  SĀ¹ā†’SuspSā° (loop i) = (merid S āˆ™ sym (merid N)) i
We then verify that these maps are inverse equivalences. One of the steps involves a slightly tricky hcomp, although this can be avoided by working with transports instead of dependent paths, and then by using lemmas on transport in pathspaces.
  iso-pf : is-iso SuspSā°ā†’SĀ¹
  iso-pf .inv = SĀ¹ā†’SuspSā°
  iso-pf .rinv base = refl
  iso-pf .rinv (loop i) =
    ap (Ī» p ā†’ p i)
      (ap SuspSā°ā†’SĀ¹ (merid S āˆ™ sym (merid N)) ā‰”āŸØ ap-āˆ™ SuspSā°ā†’SĀ¹ (merid S) (sym (merid N))āŸ©
      loop āˆ™ refl                             ā‰”āŸØ āˆ™-idr _ āŸ©
      loop                                    āˆŽ)
  iso-pf .linv N = refl
  iso-pf .linv S = merid N
  iso-pf .linv (merid N i) j = merid N (i āˆ§ j)
  iso-pf .linv (merid S i) j = hcomp (āˆ‚ i āˆØ āˆ‚ j) Ī» where
    k (k = i0) ā†’ merid S i
    k (i = i0) ā†’ N
    k (i = i1) ā†’ merid N (j āˆØ ~ k)
    k (j = i0) ā†’ āˆ™-filler (merid S) (sym (merid N)) k i
    k (j = i1) ā†’ merid S i