open import 1Lab.Path.Groupoid
open import 1Lab.HLevel
open import 1Lab.Path
open import 1Lab.Type

module 1Lab.HIT.Sinfty where

The Infinite Sphere🔗

The (n+1)(n+1)-sphere can be constructed from the nn-sphere via suspension. By writing a recursive HIT, we can define a type which is its own suspension. It stands to reason that this definition is a good candidate for being conisdered the infinitary limit of the process of iterated suspension and is thus referred to as the \infty-sphere.

data S∞ : Type where
  N S   : S∞
  merid : S∞  N  S

In classical topology, there are several definitions of the \infty-sphere. However, independently of the approach taken, the resulting space is always contractible. In Homotopy Type Theory, then, the only meaningful statement that can be made of S∞ is that it is contractible. We prove this in two different ways.

The Book HoTT Approach🔗

open is-contr

private
  pathsS∞′ : (x : S∞)  N  x
  pathsS∞′ N = refl
  pathsS∞′ S = merid N
  pathsS∞′ (merid x i) =

First we reduce the problem from constructing a dependent path over i N ≡ merid x i) from refl to merid N to the problem of constructing a path in N ≡ S from transport j N ≡ merid x j) refl to merid N.

    to-pathp {A = λ j  N  merid x j}

The proof goes as follows: by the characterisation of transport in path types the LHS is identified with refl ∙ merid x. We get rid of the refl and then a a path between merid x and merid N can be obtained from applying merid to the recursive call pathsS∞′ x.

      (transport  j  N  merid x j) refl ≡⟨ subst-path-right refl (merid x) 
      refl  merid x                        ≡⟨ ∙-id-l (merid x) 
      merid x                               ≡⟨ ap merid (sym (pathsS∞′ x)) 
      merid N                               ) i

is-contrS∞′ : is-contr S∞
is-contrS∞′ .centre = N
is-contrS∞′ .paths = pathsS∞′

The Cubical Approach🔗

The cubical approach essentially acomplishes the same thing as the previous proof, without using any helper lemmas, by way of drawing a slightly clever cube. The case of the defenition for the higher constructor requires a square in which two of the sides are merid N and merid x. We start with a square in which both of these sides are merid N (specifically merid N (i ∧ j)), and then construct a cube in which one of the faces morphs merid N into merid x. This is something that we can easilly do since we have a path N ≡ x via the recursive call pathsS∞ x.

private
  pathsS∞ : (x : S∞)  N  x
  pathsS∞ N = refl
  pathsS∞ S = merid N
  pathsS∞ (merid x i) j =
    hcomp
       k  λ { (i = i0)  N
               ; (i = i1)  merid N j
               ; (j = i0)  N
               ; (j = i1)  merid (pathsS∞ x k) i})
      (merid N (i  j))

is-contrS∞ : is-contr S∞
is-contrS∞ .centre = N
is-contrS∞ .paths = pathsS∞