TheHoTTGame/1FundamentalGroup/Quest2Part0.md
2021-09-22 11:24:08 +01:00

2.7 KiB
Raw Blame History

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 .

The plan is :

  1. Define a function suc : that increases every integer by one
  2. Prove that suc is an isomorphism by constructing an inverse map pred : .
  3. Turn suc into a path sucPath : using isoToPath
  4. Define helix : S¹ → Type by mapping base to and a generic point loop i to sucPath i.
  5. Use helix and endPt to define the map base ≡ x → helix x on all x : S¹, in particular giving us Ω S¹ base → when applied to base.

In this part, we focus on 1 and 2.

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 defined loop_times : by induction. Do cases on the input of suc. 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 the n here is a point of the naturals whose definition is :

    data  : Type where
      zero : 
      suc :   
    

    Use suc to map pos 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 on n and treat the -(0 + 1) case separately.

    Hint

    Do C-c C-c on n. Then map negsuc 0 to pos 0. For negsuc (suc n), map it to negsuc n.

  • This completes the definition of suc. Use C-c C-n to check it computes correctly. E.g. check that suc (- 1) computes to pos 0 and suc (pos 0) computes to pos 1.

suc is an isomorphism

  • The goal is to define pred : which "takes n to its predecessor n - 1". This will act as the (homotopical) inverse of suc. Now that you have experience from defining suc, try defining pred.
  • Imitating what we did with flipIso and give a point sucIso : by using pred as the inverse and proving section suc pred and retract suc pred.