[Merged by Bors] - feat(Algebra/Order): Hahn embedding theorem, part 1#27043
[Merged by Bors] - feat(Algebra/Order): Hahn embedding theorem, part 1#27043wwylele wants to merge 2 commits intoleanprover-community:masterfrom
Conversation
PR summary bbd46d79f2Import changes for modified filesNo significant changes to the import graph Import changes for all files
|
5a02521 to
2861287
Compare
2861287 to
e564788
Compare
|
This pull request has conflicts, please merge |
e564788 to
46d3115
Compare
046c802 to
2bc8246
Compare
Part of #27043 Hahn's embedding theorem
f5f1cfa to
8e23334
Compare
Part of #27043 (Hahn embedding theorem). For concepts in this part, I don't find good names from literature, so I took inspiration from #27451 (`Valuation.ball`) and `Metric.ball` / `Metric.closedBall` (`ArchimedeanClass M` actually becomes a `Valuation` when `M` is a ring so these names make sense).
Part of #27043 (Hahn embedding theorem). For concepts in this part, I don't find good names from literature, so I took inspiration from #27451 (`Valuation.ball`) and `Metric.ball` / `Metric.closedBall` (`ArchimedeanClass M` actually becomes a `Valuation` when `M` is a ring so these names make sense).
|
This pull request has conflicts, please merge |
Part of leanprover-community#27043 Hahn's embedding theorem
Part of leanprover-community#27043 (Hahn embedding theorem). For concepts in this part, I don't find good names from literature, so I took inspiration from leanprover-community#27451 (`Valuation.ball`) and `Metric.ball` / `Metric.closedBall` (`ArchimedeanClass M` actually becomes a `Valuation` when `M` is a ring so these names make sense).
Part of leanprover-community#27043 (Hahn embedding theorem). For concepts in this part, I don't find good names from literature, so I took inspiration from leanprover-community#27451 (`Valuation.ball`) and `Metric.ball` / `Metric.closedBall` (`ArchimedeanClass M` actually becomes a `Valuation` when `M` is a ring so these names make sense).
70d5a1f to
90c5c36
Compare
|
Did another wave of renaming and put them in the |
|
This pull request has conflicts, please merge |
8ab002a to
5c9f120
Compare
YaelDillies
left a comment
There was a problem hiding this comment.
Thanks! 🚀
maintainer merge
|
🚀 Pull request has been placed on the maintainer queue by YaelDillies. |
|
This is a huge PR, but I think it's OK since it is only adding a new file, thanks! bors merge |
Part 1 of Hahn embedding theorem, or the core part of it. This proves that one can embed an ordered module in HahnSeries.
To obtain the full Hahn embedding theorem, one needs to specialize the coefficient of HahnSeries to Real as a module over Rat, and compose with another embedding from ordered group to ordered module. These will be in part 2
There is a debatable design here: throughout the file, all lemmas uses an input `HahnEmbedding.Seed`. Because the the final theorem is an existence theorem without specifying what `HahnEmbedding.Seed` is used, it is possible to `Classical.choose` a seed from the very beginning (provided `R = Real` ), and the entire file will just use the same chosen seed. Overall, choosing everything from the beginning will likely make the code a little bit more concise.
I decided against choosing anything till the final step, for the reason that such choice is not canonical for an arbitrary module, and there may be future use of this construction with more canonical choice for specific modules. Examples are:
- if the input is a `HahnSeries Γ R`, the canonical choice for the `stratum` would be `HahnSeries.single`
- for the field version of Hahn embedding theorem ("every linearly ordered field can be embedded in `HahnSeries` as a field", not implemented), the canonical choice should ensure that all `stratum` form a graded ring, and the `coeff` should map `(1 : M)` to `(1 : R)`.
But if the argument is not strong enough, I am OK with converting everything to a classical choose.
|
Pull request successfully merged into master. Build succeeded: |
…nity#27043) Part 1 of Hahn embedding theorem, or the core part of it. This proves that one can embed an ordered module in HahnSeries. To obtain the full Hahn embedding theorem, one needs to specialize the coefficient of HahnSeries to Real as a module over Rat, and compose with another embedding from ordered group to ordered module. These will be in part 2 There is a debatable design here: throughout the file, all lemmas uses an input `HahnEmbedding.Seed`. Because the the final theorem is an existence theorem without specifying what `HahnEmbedding.Seed` is used, it is possible to `Classical.choose` a seed from the very beginning (provided `R = Real` ), and the entire file will just use the same chosen seed. Overall, choosing everything from the beginning will likely make the code a little bit more concise. I decided against choosing anything till the final step, for the reason that such choice is not canonical for an arbitrary module, and there may be future use of this construction with more canonical choice for specific modules. Examples are: - if the input is a `HahnSeries Γ R`, the canonical choice for the `stratum` would be `HahnSeries.single` - for the field version of Hahn embedding theorem ("every linearly ordered field can be embedded in `HahnSeries` as a field", not implemented), the canonical choice should ensure that all `stratum` form a graded ring, and the `coeff` should map `(1 : M)` to `(1 : R)`. But if the argument is not strong enough, I am OK with converting everything to a classical choose.
…nity#27043) Part 1 of Hahn embedding theorem, or the core part of it. This proves that one can embed an ordered module in HahnSeries. To obtain the full Hahn embedding theorem, one needs to specialize the coefficient of HahnSeries to Real as a module over Rat, and compose with another embedding from ordered group to ordered module. These will be in part 2 There is a debatable design here: throughout the file, all lemmas uses an input `HahnEmbedding.Seed`. Because the the final theorem is an existence theorem without specifying what `HahnEmbedding.Seed` is used, it is possible to `Classical.choose` a seed from the very beginning (provided `R = Real` ), and the entire file will just use the same chosen seed. Overall, choosing everything from the beginning will likely make the code a little bit more concise. I decided against choosing anything till the final step, for the reason that such choice is not canonical for an arbitrary module, and there may be future use of this construction with more canonical choice for specific modules. Examples are: - if the input is a `HahnSeries Γ R`, the canonical choice for the `stratum` would be `HahnSeries.single` - for the field version of Hahn embedding theorem ("every linearly ordered field can be embedded in `HahnSeries` as a field", not implemented), the canonical choice should ensure that all `stratum` form a graded ring, and the `coeff` should map `(1 : M)` to `(1 : R)`. But if the argument is not strong enough, I am OK with converting everything to a classical choose.
Part 1 of Hahn embedding theorem, or the core part of it. This proves that one can embed an ordered module in HahnSeries.
To obtain the full Hahn embedding theorem, one needs to specialize the coefficient of HahnSeries to Real as a module over Rat, and compose with another embedding from ordered group to ordered module. These will be in part 2
There is a debatable design here: throughout the file, all lemmas uses an input
HahnEmbedding.Seed. Because the the final theorem is an existence theorem without specifying whatHahnEmbedding.Seedis used, it is possible toClassical.choosea seed from the very beginning (providedR = Real), and the entire file will just use the same chosen seed. Overall, choosing everything from the beginning will likely make the code a little bit more concise.I decided against choosing anything till the final step, for the reason that such choice is not canonical for an arbitrary module, and there may be future use of this construction with more canonical choice for specific modules. Examples are:
HahnSeries Γ R, the canonical choice for thestratumwould beHahnSeries.singleHahnSeriesas a field", not implemented), the canonical choice should ensure that allstratumform a graded ring, and thecoeffshould map(1 : M)to(1 : R).But if the argument is not strong enough, I am OK with converting everything to a classical choose.
LinearEquivversion oftoLex/ofLex#27711