-
Notifications
You must be signed in to change notification settings - Fork 297
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(data/multiset/basic): add some lemmas #8787
Conversation
Ruben-VandeVelde
commented
Aug 21, 2021
•
edited by jcommelin
Loading
edited by jcommelin
- depends on: [Merged by Bors] - chore(data/multiset/basic): consistently use singleton notation #8786
Statement from #3169. Co-authored-by: Johan Commelin <johan@commelin.net>
🎉 Great news! Looks like all the dependencies have been resolved: 💡 To add or remove a dependency please update this issue/PR description. Brought to you by Dependent Issues (:robot: ). Happy coding! |
LGTM bors d+ |
✌️ Ruben-VandeVelde can now approve this pull request. To approve and merge a pull request, simply reply with |
Thanks 🎉 bors merge |
Co-authored-by: Johan Commelin <johan@commelin.net>
Build failed (retrying...): |
Co-authored-by: Johan Commelin <johan@commelin.net>
Pull request successfully merged into master. Build succeeded: |
Take the content of * some of `Algebra.BigOperators.List.Basic` * some of `Algebra.BigOperators.List.Lemmas` * some of `Algebra.BigOperators.Multiset.Basic` * some of `Algebra.BigOperators.Multiset.Lemmas` * `Algebra.BigOperators.Multiset.Order` * `Algebra.BigOperators.Order` and sort it into six files: * `Algebra.Order.BigOperators.Group.List`. I credit Yakov for leanprover-community/mathlib#8543. * `Algebra.Order.BigOperators.Group.Multiset`. Copyright inherited from `Algebra.BigOperators.Multiset.Order`. * `Algebra.Order.BigOperators.Group.Finset`. Copyright inherited from `Algebra.BigOperators.Order`. * `Algebra.Order.BigOperators.Ring.List`. I credit Stuart for leanprover-community/mathlib#10184. * `Algebra.Order.BigOperators.Ring.Multiset`. I credit Ruben for leanprover-community/mathlib#8787. * `Algebra.Order.BigOperators.Ring.Finset`. I credit Floris for leanprover-community/mathlib#1294. Here are the design decisions at play: * Pure algebra and big operators algebra shouldn't import (algebraic) order theory. This PR makes that better, but not perfect because we still import `Data.Nat.Order.Basic` in a few `List` files. * It's `Algebra.Order.BigOperators` instead of `Algebra.BigOperators.Order` because algebraic order theory is more of a theory than big operators algebra. Another reason is that algebraic order theory is the only way to mix pure order and pure algebra, while there are more ways to mix pure finiteness and pure algebra than just big operators. * There are separate files for group/monoid lemmas vs ring lemmas. Groups/monoids are the natural setup for big operators, so their lemmas shouldn't be mixed with ring lemmas that involves both addition and multiplication. As a result, everything under `Algebra.Order.BigOperators.Group` should be additivisable (except a few `Nat`- or `Int`-specific lemmas). In contrast, things under `Algebra.Order.BigOperators.Ring` are more prone to having heavy imports. * Lemmas are separated according to `List` vs `Multiset` vs `Finset`. This is not strictly necessary, and can be relaxed in cases where there aren't that many lemmas to be had. As an example, I could split out the `AbsoluteValue` lemmas from `Algebra.Order.BigOperators.Ring.Finset` to a file `Algebra.Order.BigOperators.Ring.AbsoluteValue` and it could stay this way until too many lemmas are in this file (or a split is needed for import reasons), in which case we would need files `Algebra.Order.BigOperators.Ring.AbsoluteValue.Finset`, `Algebra.Order.BigOperators.Ring.AbsoluteValue.Multiset`, etc... * `Finsupp` big operator and `finprod`/`finsum` order lemmas also belong in `Algebra.Order.BigOperators`. I haven't done so in this PR because the diff is big enough like that.
Take the content of * some of `Algebra.BigOperators.List.Basic` * some of `Algebra.BigOperators.List.Lemmas` * some of `Algebra.BigOperators.Multiset.Basic` * some of `Algebra.BigOperators.Multiset.Lemmas` * `Algebra.BigOperators.Multiset.Order` * `Algebra.BigOperators.Order` and sort it into six files: * `Algebra.Order.BigOperators.Group.List`. I credit Yakov for leanprover-community/mathlib#8543. * `Algebra.Order.BigOperators.Group.Multiset`. Copyright inherited from `Algebra.BigOperators.Multiset.Order`. * `Algebra.Order.BigOperators.Group.Finset`. Copyright inherited from `Algebra.BigOperators.Order`. * `Algebra.Order.BigOperators.Ring.List`. I credit Stuart for leanprover-community/mathlib#10184. * `Algebra.Order.BigOperators.Ring.Multiset`. I credit Ruben for leanprover-community/mathlib#8787. * `Algebra.Order.BigOperators.Ring.Finset`. I credit Floris for leanprover-community/mathlib#1294. Here are the design decisions at play: * Pure algebra and big operators algebra shouldn't import (algebraic) order theory. This PR makes that better, but not perfect because we still import `Data.Nat.Order.Basic` in a few `List` files. * It's `Algebra.Order.BigOperators` instead of `Algebra.BigOperators.Order` because algebraic order theory is more of a theory than big operators algebra. Another reason is that algebraic order theory is the only way to mix pure order and pure algebra, while there are more ways to mix pure finiteness and pure algebra than just big operators. * There are separate files for group/monoid lemmas vs ring lemmas. Groups/monoids are the natural setup for big operators, so their lemmas shouldn't be mixed with ring lemmas that involves both addition and multiplication. As a result, everything under `Algebra.Order.BigOperators.Group` should be additivisable (except a few `Nat`- or `Int`-specific lemmas). In contrast, things under `Algebra.Order.BigOperators.Ring` are more prone to having heavy imports. * Lemmas are separated according to `List` vs `Multiset` vs `Finset`. This is not strictly necessary, and can be relaxed in cases where there aren't that many lemmas to be had. As an example, I could split out the `AbsoluteValue` lemmas from `Algebra.Order.BigOperators.Ring.Finset` to a file `Algebra.Order.BigOperators.Ring.AbsoluteValue` and it could stay this way until too many lemmas are in this file (or a split is needed for import reasons), in which case we would need files `Algebra.Order.BigOperators.Ring.AbsoluteValue.Finset`, `Algebra.Order.BigOperators.Ring.AbsoluteValue.Multiset`, etc... * `Finsupp` big operator and `finprod`/`finsum` order lemmas also belong in `Algebra.Order.BigOperators`. I haven't done so in this PR because the diff is big enough like that.
Take the content of * some of `Algebra.BigOperators.List.Basic` * some of `Algebra.BigOperators.List.Lemmas` * some of `Algebra.BigOperators.Multiset.Basic` * some of `Algebra.BigOperators.Multiset.Lemmas` * `Algebra.BigOperators.Multiset.Order` * `Algebra.BigOperators.Order` and sort it into six files: * `Algebra.Order.BigOperators.Group.List`. I credit Yakov for leanprover-community/mathlib#8543. * `Algebra.Order.BigOperators.Group.Multiset`. Copyright inherited from `Algebra.BigOperators.Multiset.Order`. * `Algebra.Order.BigOperators.Group.Finset`. Copyright inherited from `Algebra.BigOperators.Order`. * `Algebra.Order.BigOperators.Ring.List`. I credit Stuart for leanprover-community/mathlib#10184. * `Algebra.Order.BigOperators.Ring.Multiset`. I credit Ruben for leanprover-community/mathlib#8787. * `Algebra.Order.BigOperators.Ring.Finset`. I credit Floris for leanprover-community/mathlib#1294. Here are the design decisions at play: * Pure algebra and big operators algebra shouldn't import (algebraic) order theory. This PR makes that better, but not perfect because we still import `Data.Nat.Order.Basic` in a few `List` files. * It's `Algebra.Order.BigOperators` instead of `Algebra.BigOperators.Order` because algebraic order theory is more of a theory than big operators algebra. Another reason is that algebraic order theory is the only way to mix pure order and pure algebra, while there are more ways to mix pure finiteness and pure algebra than just big operators. * There are separate files for group/monoid lemmas vs ring lemmas. Groups/monoids are the natural setup for big operators, so their lemmas shouldn't be mixed with ring lemmas that involves both addition and multiplication. As a result, everything under `Algebra.Order.BigOperators.Group` should be additivisable (except a few `Nat`- or `Int`-specific lemmas). In contrast, things under `Algebra.Order.BigOperators.Ring` are more prone to having heavy imports. * Lemmas are separated according to `List` vs `Multiset` vs `Finset`. This is not strictly necessary, and can be relaxed in cases where there aren't that many lemmas to be had. As an example, I could split out the `AbsoluteValue` lemmas from `Algebra.Order.BigOperators.Ring.Finset` to a file `Algebra.Order.BigOperators.Ring.AbsoluteValue` and it could stay this way until too many lemmas are in this file (or a split is needed for import reasons), in which case we would need files `Algebra.Order.BigOperators.Ring.AbsoluteValue.Finset`, `Algebra.Order.BigOperators.Ring.AbsoluteValue.Multiset`, etc... * `Finsupp` big operator and `finprod`/`finsum` order lemmas also belong in `Algebra.Order.BigOperators`. I haven't done so in this PR because the diff is big enough like that.
Take the content of * some of `Algebra.BigOperators.List.Basic` * some of `Algebra.BigOperators.List.Lemmas` * some of `Algebra.BigOperators.Multiset.Basic` * some of `Algebra.BigOperators.Multiset.Lemmas` * `Algebra.BigOperators.Multiset.Order` * `Algebra.BigOperators.Order` and sort it into six files: * `Algebra.Order.BigOperators.Group.List`. I credit Yakov for leanprover-community/mathlib#8543. * `Algebra.Order.BigOperators.Group.Multiset`. Copyright inherited from `Algebra.BigOperators.Multiset.Order`. * `Algebra.Order.BigOperators.Group.Finset`. Copyright inherited from `Algebra.BigOperators.Order`. * `Algebra.Order.BigOperators.Ring.List`. I credit Stuart for leanprover-community/mathlib#10184. * `Algebra.Order.BigOperators.Ring.Multiset`. I credit Ruben for leanprover-community/mathlib#8787. * `Algebra.Order.BigOperators.Ring.Finset`. I credit Floris for leanprover-community/mathlib#1294. Here are the design decisions at play: * Pure algebra and big operators algebra shouldn't import (algebraic) order theory. This PR makes that better, but not perfect because we still import `Data.Nat.Order.Basic` in a few `List` files. * It's `Algebra.Order.BigOperators` instead of `Algebra.BigOperators.Order` because algebraic order theory is more of a theory than big operators algebra. Another reason is that algebraic order theory is the only way to mix pure order and pure algebra, while there are more ways to mix pure finiteness and pure algebra than just big operators. * There are separate files for group/monoid lemmas vs ring lemmas. Groups/monoids are the natural setup for big operators, so their lemmas shouldn't be mixed with ring lemmas that involves both addition and multiplication. As a result, everything under `Algebra.Order.BigOperators.Group` should be additivisable (except a few `Nat`- or `Int`-specific lemmas). In contrast, things under `Algebra.Order.BigOperators.Ring` are more prone to having heavy imports. * Lemmas are separated according to `List` vs `Multiset` vs `Finset`. This is not strictly necessary, and can be relaxed in cases where there aren't that many lemmas to be had. As an example, I could split out the `AbsoluteValue` lemmas from `Algebra.Order.BigOperators.Ring.Finset` to a file `Algebra.Order.BigOperators.Ring.AbsoluteValue` and it could stay this way until too many lemmas are in this file (or a split is needed for import reasons), in which case we would need files `Algebra.Order.BigOperators.Ring.AbsoluteValue.Finset`, `Algebra.Order.BigOperators.Ring.AbsoluteValue.Multiset`, etc... * `Finsupp` big operator and `finprod`/`finsum` order lemmas also belong in `Algebra.Order.BigOperators`. I haven't done so in this PR because the diff is big enough like that.
Take the content of * some of `Algebra.BigOperators.List.Basic` * some of `Algebra.BigOperators.List.Lemmas` * some of `Algebra.BigOperators.Multiset.Basic` * some of `Algebra.BigOperators.Multiset.Lemmas` * `Algebra.BigOperators.Multiset.Order` * `Algebra.BigOperators.Order` and sort it into six files: * `Algebra.Order.BigOperators.Group.List`. I credit Yakov for leanprover-community/mathlib#8543. * `Algebra.Order.BigOperators.Group.Multiset`. Copyright inherited from `Algebra.BigOperators.Multiset.Order`. * `Algebra.Order.BigOperators.Group.Finset`. Copyright inherited from `Algebra.BigOperators.Order`. * `Algebra.Order.BigOperators.Ring.List`. I credit Stuart for leanprover-community/mathlib#10184. * `Algebra.Order.BigOperators.Ring.Multiset`. I credit Ruben for leanprover-community/mathlib#8787. * `Algebra.Order.BigOperators.Ring.Finset`. I credit Floris for leanprover-community/mathlib#1294. Here are the design decisions at play: * Pure algebra and big operators algebra shouldn't import (algebraic) order theory. This PR makes that better, but not perfect because we still import `Data.Nat.Order.Basic` in a few `List` files. * It's `Algebra.Order.BigOperators` instead of `Algebra.BigOperators.Order` because algebraic order theory is more of a theory than big operators algebra. Another reason is that algebraic order theory is the only way to mix pure order and pure algebra, while there are more ways to mix pure finiteness and pure algebra than just big operators. * There are separate files for group/monoid lemmas vs ring lemmas. Groups/monoids are the natural setup for big operators, so their lemmas shouldn't be mixed with ring lemmas that involves both addition and multiplication. As a result, everything under `Algebra.Order.BigOperators.Group` should be additivisable (except a few `Nat`- or `Int`-specific lemmas). In contrast, things under `Algebra.Order.BigOperators.Ring` are more prone to having heavy imports. * Lemmas are separated according to `List` vs `Multiset` vs `Finset`. This is not strictly necessary, and can be relaxed in cases where there aren't that many lemmas to be had. As an example, I could split out the `AbsoluteValue` lemmas from `Algebra.Order.BigOperators.Ring.Finset` to a file `Algebra.Order.BigOperators.Ring.AbsoluteValue` and it could stay this way until too many lemmas are in this file (or a split is needed for import reasons), in which case we would need files `Algebra.Order.BigOperators.Ring.AbsoluteValue.Finset`, `Algebra.Order.BigOperators.Ring.AbsoluteValue.Multiset`, etc... * `Finsupp` big operator and `finprod`/`finsum` order lemmas also belong in `Algebra.Order.BigOperators`. I haven't done so in this PR because the diff is big enough like that.