Skip to content

[Merged by Bors] - feat(Order): Quotient lift for ArchimedeanClass#26789

Closed
wwylele wants to merge 3 commits intoleanprover-community:masterfrom
wwylele:wwylele-hahn-archplus
Closed

[Merged by Bors] - feat(Order): Quotient lift for ArchimedeanClass#26789
wwylele wants to merge 3 commits intoleanprover-community:masterfrom
wwylele:wwylele-hahn-archplus

Conversation

@wwylele
Copy link
Copy Markdown
Collaborator

@wwylele wwylele commented Jul 5, 2025

This adds two features:

  • A subtype of ArchimedeanClass that removes the top element. It is often useful to treat the top element specially.
  • Add lift for both ArchimedeanClass and the subtype, analog to Quotient.lift Further more, promote it to a OrderHom given suitable conditions.

Open in Gitpod

…Class

This adds two features:
 - A subtype of ArchimedeanClass that removes the top element. It is
   often useful to treat the top element specially.
 - Add lift for both ArchimedeanClass and the subtype, analog to Quotient.lift
   Further more, promote it to a OrderHom given suitable conditions.
@github-actions github-actions bot added the t-algebra Algebra (groups, rings, fields, etc) label Jul 5, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Jul 5, 2025

PR summary 063d2e5dac

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff

+ lift
+ liftOrderHom
+ liftOrderHom_mk
+ lift_mk

You can run this locally as follows
## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>

## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>

The doc-module for script/declarations_diff.sh contains some details about this script.


No changes to technical debt.

You can run this locally as

./scripts/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@wwylele wwylele requested a review from YaelDillies July 6, 2025 16:44
Comment on lines +457 to +459
/-- Subtype of `MulArchimedeanClass` that removes the top element. -/
@[to_additive ArchimedeanClass₀ "Subtype of `ArchimedeanClass` that removes the top element"]
abbrev MulArchimedeanClass₁ := {A : MulArchimedeanClass M // A ≠ ⊤}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hmm, what's your use case for this? I fail to see

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Can you maybe hold onto MulArchimedeanClass₁ until a later PR which actually uses it. Right now I don't fully get the point, and I strongly suspect there is a better way to do things that would completely bypass it

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Sure, I can remove them from this PR.

Here is another attempt to convince you that this will be eventually needed: as noted in Hahn embedding theorem https://en.wikipedia.org/wiki/Hahn_embedding_theorem , archimedean classes are often discussed among non-zero elements

Two nonzero elements g and h of G are Archimedean equivalent if there exist...

And the Ω in the theorem statement is the set of all non-zero Archimedean classes. To accurately state this theorem, a condition of "something that's not zero" has to be introduced somewhere, so here are the options

  • Introduce the subtype on the group M from the beginning. Only define archimedean classes on non-zero elements. This makes it much easier to run into dependent type hell, as opposite to the existing natural definition of Archimedean classes on all elements.
  • Prove the theorem all the way with Ω including the zero/top element, and only at the final step argue that one can remove the element: this might be possible, but it will make a lot of nice intermediate result not as sharp as it can be, such as the one I linked above.
  • Introduce the subtype for intermediate result, but just use bare subtype, not a new definition: doable, but statements will get longer and busier overall. This was how I did it in my original draft, and in the end I introduced a custom notation for this just to make it more readable.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

btw, here is the statement of the theorem I am aiming for

theorem hahn_embedding (M: Type*) [AddCommGroup M] [LinearOrder M] [IsOrderedAddMonoid M]:
    ∃ f : M →+o Lex (HahnSeries (ArchimedeanClass₀ M) ℝ), Function.Injective f := sorry

@YaelDillies YaelDillies added the awaiting-author A reviewer has asked the author a question or requested changes. label Jul 6, 2025
@wwylele wwylele removed the awaiting-author A reviewer has asked the author a question or requested changes. label Jul 6, 2025
@wwylele wwylele changed the title feat(Order): Quotient lift for ArchimedeanClass; Top-less ArchimedeanClass feat(Order): Quotient lift for ArchimedeanClass Jul 10, 2025
@wwylele wwylele requested a review from YaelDillies July 10, 2025 23:52
Copy link
Copy Markdown
Contributor

@YaelDillies YaelDillies left a comment

Choose a reason for hiding this comment

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

Thanks! 🚀

maintainer merge

@github-actions
Copy link
Copy Markdown

🚀 Pull request has been placed on the maintainer queue by YaelDillies.

@ghost ghost added the maintainer-merge A reviewer has approved the changed; awaiting maintainer approval. label Jul 11, 2025
@riccardobrasca
Copy link
Copy Markdown
Member

Thanks!

bors merge

@ghost ghost added ready-to-merge This PR has been sent to bors. and removed maintainer-merge A reviewer has approved the changed; awaiting maintainer approval. labels Jul 11, 2025
mathlib-bors bot pushed a commit that referenced this pull request Jul 11, 2025
This adds two features:
 - ~~A subtype of ArchimedeanClass that removes the top element. It is often useful to treat the top element specially.~~ 
 - Add lift for both ArchimedeanClass and the subtype, analog to Quotient.lift Further more, promote it to a OrderHom given suitable conditions.
@mathlib-bors
Copy link
Copy Markdown
Contributor

mathlib-bors bot commented Jul 11, 2025

This PR was included in a batch that successfully built, but then failed to merge into master (it was a non-fast-forward update). It will be automatically retried.

mathlib-bors bot pushed a commit that referenced this pull request Jul 11, 2025
This adds two features:
 - ~~A subtype of ArchimedeanClass that removes the top element. It is often useful to treat the top element specially.~~ 
 - Add lift for both ArchimedeanClass and the subtype, analog to Quotient.lift Further more, promote it to a OrderHom given suitable conditions.
@mathlib-bors
Copy link
Copy Markdown
Contributor

mathlib-bors bot commented Jul 11, 2025

Pull request successfully merged into master.

Build succeeded:

@mathlib-bors mathlib-bors bot changed the title feat(Order): Quotient lift for ArchimedeanClass [Merged by Bors] - feat(Order): Quotient lift for ArchimedeanClass Jul 11, 2025
@mathlib-bors mathlib-bors bot closed this Jul 11, 2025
BeibeiX0 pushed a commit to BeibeiX0/mathlib4 that referenced this pull request Jul 16, 2025
…#26789)

This adds two features:
 - ~~A subtype of ArchimedeanClass that removes the top element. It is often useful to treat the top element specially.~~ 
 - Add lift for both ArchimedeanClass and the subtype, analog to Quotient.lift Further more, promote it to a OrderHom given suitable conditions.
callesonne pushed a commit to callesonne/mathlib4 that referenced this pull request Jul 24, 2025
…#26789)

This adds two features:
 - ~~A subtype of ArchimedeanClass that removes the top element. It is often useful to treat the top element specially.~~ 
 - Add lift for both ArchimedeanClass and the subtype, analog to Quotient.lift Further more, promote it to a OrderHom given suitable conditions.
hrmacbeth pushed a commit to szqzs/mathlib4 that referenced this pull request Jul 28, 2025
…#26789)

This adds two features:
 - ~~A subtype of ArchimedeanClass that removes the top element. It is often useful to treat the top element specially.~~ 
 - Add lift for both ArchimedeanClass and the subtype, analog to Quotient.lift Further more, promote it to a OrderHom given suitable conditions.
@wwylele wwylele deleted the wwylele-hahn-archplus branch September 2, 2025 01:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge This PR has been sent to bors. t-algebra Algebra (groups, rings, fields, etc)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants