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

[Merged by Bors] - feat(algebraic_topology): introduce the simplex category #6173

Closed
wants to merge 69 commits into from

Conversation

semorrison
Copy link
Collaborator

@semorrison semorrison commented Feb 11, 2021

  • introduce simplex_category, with objects nat and morphisms n ⟶ m order-preserving maps from fin (n+1) to fin (m+1).
  • prove the simplicial identities
  • show the category is equivalent to NonemptyFinLinOrd

This is the start of simplicial sets, moving and completing some of the material from @jcommelin's sset branch. Dold-Kan is the obvious objective; apparently we're going to need it for lean-liquid at some point.

The proofs of the simplicial identities are bad and slow. They involve extravagant use of nonterminal simp (simp? doesn't seem to give good answers) and lots of linarith bashing. Help welcome, especially if you love playing with inequalities in nat involving lots of -1s.


@gebner gebner added the awaiting-author A reviewer has asked the author a question or requested changes label Feb 20, 2021
@b-mehta
Copy link
Collaborator

b-mehta commented Feb 21, 2021

It might not be the best idea, but it's possible to do

@[reducible] def simplex_category.mk (n : ℕ) : simplex_category := n
notation `[`n`]` := simplex_category.mk n

and then we can write

/-- The `i`-th face map from `[n]` to `[n+1]` -/
def δ {n : ℕ} (i : fin (n+2)) : [n] ⟶ [n+1] :=
(fin.succ_above i).to_preorder_hom

which is satisfying notation, probably should be local or in a locale though

@semorrison
Copy link
Collaborator Author

I'm very dubious about defining notation, even localized, that clashes with list notation. If we move to variant square brackets it becomes much less satisfying, so on balance I'm happy without notation. (But I am generally a notation skeptic, so am happy to be over-ruled here.)

@semorrison semorrison added help-wanted The author needs attention to resolve issues and removed awaiting-author A reviewer has asked the author a question or requested changes labels Feb 23, 2021
@b-mehta
Copy link
Collaborator

b-mehta commented Feb 23, 2021

I'm very dubious about defining notation, even localized, that clashes with list notation. If we move to variant square brackets it becomes much less satisfying, so on balance I'm happy without notation. (But I am generally a notation skeptic, so am happy to be over-ruled here.)

Reasonable, I'm also happy to be over-ruled. Perhaps there's a middle-ground though, possibly just a named constructor simplex.mk : nat -> simplex_category or nat.to_simplex so that the type doesn't need to be given, especially to make it easier to have n : nat in the type signature and then refer to morphisms n.to_simplex -> m.to_simplex.

@semorrison
Copy link
Collaborator Author

I think I've finished dealing with non-terminal simps, and also added the notation Bhavik suggested, but only as a local notation.

@semorrison semorrison added awaiting-review The author would like community review of the PR and removed help-wanted The author needs attention to resolve issues labels Feb 25, 2021
semorrison and others added 2 commits February 25, 2021 14:13
Co-authored-by: Bhavik Mehta <bhavikmehta8@gmail.com>
src/algebraic_topology/simplex_category.lean Outdated Show resolved Hide resolved
src/algebraic_topology/simplex_category.lean Outdated Show resolved Hide resolved
src/algebraic_topology/simplex_category.lean Outdated Show resolved Hide resolved
src/algebraic_topology/simplex_category.lean Outdated Show resolved Hide resolved
Copy link
Member

@jcommelin jcommelin left a comment

Choose a reason for hiding this comment

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

Thanks 🎉

bors merge

@github-actions github-actions bot added ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.) and removed awaiting-review The author would like community review of the PR labels Feb 26, 2021
bors bot pushed a commit that referenced this pull request Feb 26, 2021
* introduce `simplex_category`, with objects `nat` and morphisms `n ⟶ m` order-preserving maps from `fin (n+1)` to `fin (m+1)`.
* prove the simplicial identities
* show the category is equivalent to `NonemptyFinLinOrd`

This is the start of simplicial sets, moving and completing some of the material from @jcommelin's `sset` branch. Dold-Kan is the obvious objective; apparently we're going to need it for `lean-liquid` at some point.

The proofs of the simplicial identities are bad and slow. They involve extravagant use of nonterminal simp (`simp?` doesn't seem to give good answers) and lots of `linarith` bashing. Help welcome, especially if you love playing with inequalities in `nat` involving lots of `-1`s.



Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
Co-authored-by: Yakov Pechersky <ffxen158@gmail.com>
Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com>
@bors
Copy link

bors bot commented Feb 26, 2021

Pull request successfully merged into master.

Build succeeded:

@bors bors bot changed the title feat(algebraic_topology): introduce the simplex category [Merged by Bors] - feat(algebraic_topology): introduce the simplex category Feb 26, 2021
@bors bors bot closed this Feb 26, 2021
@bors bors bot deleted the simplex_category branch February 26, 2021 13:13
b-mehta pushed a commit that referenced this pull request Apr 2, 2021
* introduce `simplex_category`, with objects `nat` and morphisms `n ⟶ m` order-preserving maps from `fin (n+1)` to `fin (m+1)`.
* prove the simplicial identities
* show the category is equivalent to `NonemptyFinLinOrd`

This is the start of simplicial sets, moving and completing some of the material from @jcommelin's `sset` branch. Dold-Kan is the obvious objective; apparently we're going to need it for `lean-liquid` at some point.

The proofs of the simplicial identities are bad and slow. They involve extravagant use of nonterminal simp (`simp?` doesn't seem to give good answers) and lots of `linarith` bashing. Help welcome, especially if you love playing with inequalities in `nat` involving lots of `-1`s.



Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
Co-authored-by: Yakov Pechersky <ffxen158@gmail.com>
Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants