3.4 KiB
Comparison maps between Ω S¹ base
and ℤ
In Quest1
we have defined the map loop_times : ℤ → Ω S¹ base
.
Creating the inverse map is difficult without access to the entire circle.
Similarly to how we used doubleCover
to distinguish refl
and base
,
the idea is to replace Bool
with ℤ
,
allowing us to distinguish between all loops on S¹
.
In Part0
and Part1
we will construct one of the two comparison maps
across the whole circle, called spinCount
.
The plan is :
- Define a function
sucℤ : ℤ → ℤ
that increases every integer by one - Prove that
sucℤ
is an isomorphism by constructing an inverse mappredℤ : ℤ → ℤ
. - Turn
sucℤ
into a pathsucPath : ℤ ≡ ℤ
usingisoToPath
- Define
helix : S¹ → Type
by mappingbase
toℤ
and a generic pointloop i
tosucPath i
. <<<<<<< HEAD - Use
helix
andendPt
to define the mapbase ≡ x → helix x
on allx : S¹
, in particular giving usΩ S¹ base → ℤ
when applied tobase
.
In this part, we focus on 1
and 2
.
- Use
helix
andendPt
to define the mapspinCountBase : base ≡ base → ℤ
Intuitively it counts how many times a path loops aroundS¹
. a generic pointloop i
tosucPath i
. - Generalize this across the circle.
In this part, we focus on 1
, 2
and 3
.
sucℤ
-
Setup the definition of
sucℤ
so that it looks of the form :Name : TypeOfSpace Name inputs = ?
Compare it with our solutions in
1FundamentalGroup/Quest1.agda
-
We will define
sucℤ
the same way we definedloop_times
: by induction. Do cases on the input ofsucℤ
. You should have something like :sucℤ : ℤ → ℤ sucℤ pos n = ? sucℤ negsuc n = ?
-
For the non-negative integers
pos n
we want to map to its successor. Recall that then
here is a point of the naturalsℕ
whose definition is :data ℕ : Type where zero : ℕ suc : ℕ → ℕ
Use
suc
to mappos n
to its successor. -
The negative integers require a bit more care. Recall that annoyingly
negsuc n
means "- (n + 1)
". We want to map- (n + 1)
to- n
. Try doing this. Then realise "you run out of negative integers at-(0 + 1)
" so you must do cases onn
and treat the-(0 + 1)
case separately.Hint
Do
C-c C-c
onn
. Then mapnegsuc 0
topos 0
. Fornegsuc (suc n)
, map it tonegsuc n
. -
This completes the definition of
sucℤ
. UseC-c C-n
to check it computes correctly. E.g. check thatsucℤ (- 1)
computes topos 0
andsucℤ (pos 0)
computes topos 1
.
sucℤ
is an isomorphism
- The goal is to define
predℤ : ℤ → ℤ
which "takesn
to its predecessorn - 1
". This will act as the (homotopical) inverse ofsucℤ
. Now that you have experience from definingsucℤ
, try definingpredℤ
. - Imitating what we did with
flipIso
and give a pointsucℤIso : ℤ ≅ ℤ
by usingpredℤ
as the inverse and proving <<<<<<< HEADsection sucℤ predℤ
andretract sucℤ predℤ
. =======section sucℤ predℤ
andretract sucℤ predℤ
.
sucℤ
is a path
- Imitating what we did with
flipPath
, upgradesucℤIso
tosucℤPath
.