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

Simpler multiplication on circle Lemma 8.5.8 #1039

Open
Alizter opened this issue Nov 29, 2019 · 4 comments
Open

Simpler multiplication on circle Lemma 8.5.8 #1039

Alizter opened this issue Nov 29, 2019 · 4 comments

Comments

@Alizter
Copy link
Collaborator

Alizter commented Nov 29, 2019

I noticed that the book is describing the multiplication map in a pretty complicated way. Here is a simpler one that doesn't use funext which I found in the lean formalization.

I think it would be beneficial to define the map h mentioned in the book again here, since it is a bit annoying having to flick back. We can even give it a better name than h like the turn map or something.

turn : (x : S1) -> x = x, defined by induction on x. We map base to loop, so we need to show that transport (lambda x . x = x) loop loop = loop. By 2.11.2, we need to show (loop^-1 @ loop) @ loop = loop which is easy.

Next we want to define a map S1 -> S1 -> S1 (uncurry it if you like). Let x y : S1 we construct the element of S1 as S1-rec y (turn y) x.

This is much simpler, and avoids funext completely. Showing that S1 is a H-space is also much simpler now. And notably showing that this operation is associative is actually doable on paper.

@mikeshulman
Copy link
Contributor

Thanks for this suggestion. But I'm divided about whether this is minor enough for a first-edition update. Anyone else have an opinion?

@awodey
Copy link
Contributor

awodey commented Nov 30, 2019 via email

@mikeshulman
Copy link
Contributor

Yes, that's a good idea.

@Alizter
Copy link
Collaborator Author

Alizter commented Dec 2, 2019

I think it might be interesting to add a remark contrasting circle induction with say natural number induction here. Usually when proving things about the natural numbers, people get stuck because they didn't assume a general enough hypothesis, typically doing this every time is fine.

On the other hand, for the circle this might not work as intended, since as soon as you want to do induction on x for something like (x : S1) -> (y : S1) -> P x y, you will need to assume funext to prove transport (lambda x . (y : S1) -> P x y) loop base_P base_P. The better thing to do is to introduce x and y, swap x and y in the context, then induct on x.

It's true that funext will save the day and allow you to finish the proof, but you will be hard pressed to prove anything about your construction, since you will constantly have to reduce funext terms and make sure they don't break anything etc.

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

No branches or pull requests

3 participants