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:
: Type
Sā»Ā¹ = ā„
Sā»Ā¹
: Type
Sā° = Bool Sā°
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
: Susp Sā»Ā¹ ā” Sā°
SuspSā»Ā¹āSā° = ua (SuspSā»Ā¹āSā° , is-isoāis-equiv iso-pf) where
SuspSā»Ā¹āSā° : Susp Sā»Ā¹ ā Sā°
SuspSā»Ā¹āSā° = true
SuspSā»Ā¹āSā° N = false
SuspSā»Ā¹āSā° S
: Sā° ā Susp Sā»Ā¹
Sā°āSuspSā»Ā¹ = N
Sā°āSuspSā»Ā¹ true = S
Sā°āSuspSā»Ā¹ false
: 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 iso-pf
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
: Nat ā Type
Sāæā»Ā¹ = Sā»Ā¹
Sāæā»Ā¹ zero (suc n) = Susp (Sāæā»Ā¹ n) Sāæā»Ā¹
A slightly less trivial example of definitions lining up is the
verification that Sāæā»Ā¹ 2
is equivalent to our previous
definition of SĀ¹
:
: Sāæā»Ā¹ 2 ā” SĀ¹
SuspSā°ā”SĀ¹ = ua (SuspSā°āSĀ¹ , is-isoāis-equiv iso-pf) where SuspSā°ā”SĀ¹
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:
: Sāæā»Ā¹ 2 ā SĀ¹
SuspSā°āSĀ¹ = base
SuspSā°āSĀ¹ N = base
SuspSā°āSĀ¹ S (merid N i) = base
SuspSā°āSĀ¹ (merid S i) = loop i SuspSā°āSĀ¹
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Ā¹ ā Sāæā»Ā¹ 2
SĀ¹āSuspSā° = N
SĀ¹āSuspSā° base (loop i) = (merid S ā sym (merid N)) i SĀ¹āSuspSā°
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.
: is-iso SuspSā°āSĀ¹
iso-pf .inv = SĀ¹āSuspSā°
iso-pf .rinv base = refl
iso-pf .rinv (loop i) =
iso-pf (Ī» p ā p i)
ap (ap SuspSā°āSĀ¹ (merid S ā sym (merid N)) ā”āØ ap-ā SuspSā°āSĀ¹ (merid S) (sym (merid N))ā©
_ ā©
loop ā refl ā”āØ ā-idr )
loop ā.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
iso-pf (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 k