2.9 KiB
refl ≡ loop
is empty
To get a better feel of S¹
, we show that the space
refl ≡ loop
is empty.
First, we define the empty space and what it means for a space to be empty.
Here is what this looks like in agda
:
data ⊥ : Type where
This says "the empty space is a space with no points in it".
Here are two candidate definitions for a space A
to be empty :
- there is a point
f : A → ⊥
- there is a path
p : A ≡ ⊥
in the space of spacesType
- there is an isomorphism
i : A ≅ ⊥
of spaces
These turn out to be 'the same', however for our present purposes we will use the first definition. So our goal now is to produce a point of
( refl ≡ loop ) → ⊥
The authors of this series have thought long and hard about how one would come up with the following argument. Unfortunately, sometimes mathematics is in need of a new trick and this was one of them.
The trick is to create a map from
refl ≡ loop
totrue ≡ false
by constructing a non-trivialBool
-bundle over the circle, hence obtaining a map( refl ≡ loop ) → ⊥
.
To elaborate :
Bool
here refers to the discrete space with two points true, false
.
We will create a map doubleCover : S¹ → Type
that sends
base
to Bool
and the path loop
to a non-trivial path flipPath : Bool ≡ Bool
in the space of spaces.
(Insert gif of double cover.)
Viewing the picture vertically,
for each point x : S¹
,
we call doubleCover x
the fiber of doubleCover
over x
.
All the fibers look like Bool
, hence our choice of the name Bool
-bundle.
Let's assume for the moment that we have flipPath
already and
define doubleCover
.
-
Navigate to the definition of
doubleCover
and make sure you have loaded the file withC-c C-l
.doubleCover : S¹ → Type doubleCover x = ?
-
Navigate your cursor to the hole, write
x
and doC-c C-c
. You should now see two new holes :doubleCover : S¹ → Type doubleCover base = {!!} doubleCover (loop i) = {!!}
The meaning is as follows : the circle is made from a point
base
together with an edgeloop
, so a map out of it to a space is the same as choosing a point and an edge to mapbase
andloop
to respectively. Sinceloop
is a path frombase
to itself, its image must also be a path from the image ofbase
to itself. -
Use
C-c C-f
and/orC-c C-b
to navigate to the first hole. We want to mapbase
toBool
so fill the hole withBool
usingC-c C-SPC
. -
Navigate to the second hole. Here
loop i
is a generic point in the pathloop
, wherei : I
is a generic point of the 'unit interval'. We want to maploop
toflipPath
, soloop i
should map to a generic point in the pathflipPath
. Try filling the hole.
Defining flipPath
is quite involved and we will do so in the next quest!