Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Whitehead's Lemma #1067

Merged
merged 4 commits into from
Oct 27, 2023
Merged

Whitehead's Lemma #1067

merged 4 commits into from
Oct 27, 2023

Conversation

owen-milner
Copy link
Contributor

Proof of Whitehead's lemma for truncated spaces (theorem 8.8.3 in the HoTT book).

Copy link
Contributor

@aljungstrom aljungstrom left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good:-) My comments are mainly just pointers to stuff already in the library.

SetTrunc→PropTrunc : {A : Type ℓ} → ∥ A ∥₂ → ∥ A ∥₁
SetTrunc→PropTrunc = sRec (isProp→isSet isPropPropTrunc) ∣_∣₁

isoPostComp : {A : Type ℓ} {a b c : A} (p : b ≡ c)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplication: compPathrEquiv in Foundations.Path

Iso.leftInv (isoPostComp p) =
λ r → (sym (assoc r p (sym p))) ∙ cong (r ∙_) (rCancel p) ∙ sym (rUnit r)

isoPostComp≃∙ : {A : Type ℓ} {a b c : A} {q : a ≡ b} (p : b ≡ c)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be in the lib already (but isn't). I suggest adding it to the end of Foundations.Pointed.Properties and calling it compPathrEquiv∙ just for the sake of consistency w other things in the lib.

fst (isoPostComp≃∙ p) = isoToEquiv (isoPostComp p)
snd (isoPostComp≃∙ p) = refl

isoPreComp : {A : Type ℓ} {a b c : A} (p : a ≡ b)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplication: compPathlEquiv in Foundations.Path

Iso.leftInv (isoPreComp p) =
λ r → assoc (sym p) p r ∙ cong (_∙ r) (lCancel p) ∙ sym (lUnit r)

isoPreComp≃∙ : {A : Type ℓ} {a b c : A} {q : b ≡ c} (p : a ≡ b)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as isoPostComp≃∙: should probably be moved to Foundations.Pointed.Properties and get a name change


doubleCompPath-filler-refl : {A : Type ℓ} {a b : A} (p : a ≡ b)
→ p ≡ refl ∙∙ p ∙∙ refl
doubleCompPath-filler-refl p = doubleCompPath-filler refl p refl
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is actually just rUnit

( f _) b'
( transport (λ i → f _ ≡ b') _) (snd a')))))

isPointedTarget→isEquiv→isEquiv : {A B : Type ℓ} (f : A → B)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Think we're missing this one. I think it should be put in Foundations.Properties.Equiv.

∙ cong (cong f) (sym (rUnit _))))

private
setMapFunctorial : {A B C : Type ℓ} (f : A → B) (g : B → C)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh wow, we really should have this one lol... Could you put it in HITs.SetTruncation.Properties? And maybe just call it mapFunctorial to match the naming there better.

( PathPΩ^→Ω (1 + n) (f , refl)))

private
∙∙Lemma : {A B : Type ℓ} {f : A → B} {a b : A} (p : a ≡ b)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one can be removed. If you just use sym (rUnit (cong f p)) for this one, it is definitionally equal to ∙∙lCancel refl when p is refl

∙ cong map (cong (fst ∘ (Ω^→ (1 + n)))
( funExt∙
( ∙∙Lemma {f = f}
, JRefl ( λ b p → (refl ∙∙ cong f p ∙∙ refl) ≡ cong f p)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

funExt∙ ((λ a → sym (rUnit (cong f a))) , rUnit (∙∙lCancel refl))

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(no need for JRefl)

( Iso.fun (flipΩIso (1 + n)) ∘ fst ((Ω^→ (2 + n)) (f , refl)))

-- Ω (Ω→ f) ≡ Ω→ (Ω f)
PathPΩ^→Ω : {A B : Pointed ℓ} (n : ℕ) (f : A →∙ B)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the future we may consider moving some of these properties to Homotopy.Group.Base or something (or maybe a new Properties file?) but let's keep it here for now.

@owen-milner
Copy link
Contributor Author

Looking good:-) My comments are mainly just pointers to stuff already in the library.

Thanks!

@mortberg
Copy link
Collaborator

Have all comments been resolved? If so I can merge as soon as the CI is finished

@mortberg
Copy link
Collaborator

@aljungstrom confirmed that all comments are resolved, so I'll merge now

@mortberg mortberg merged commit abdb1f9 into agda:master Oct 27, 2023
1 check passed
LuuBluum pushed a commit to LuuBluum/cubical that referenced this pull request Oct 29, 2023
* Whiteheads Lemma

* comments in Whiteheads lemma file

* delete-trailing-whitespace

* moved lemmas, removed duplicates
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants