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] - chore: refactor perfect rings / fields #6182

Closed
wants to merge 21 commits into from

Conversation

ocfnash
Copy link
Contributor

@ocfnash ocfnash commented Jul 27, 2023

The main changes are:

  • we replace the data-bearing PerfectRing typeclass with a Prop-valued (non-constructive) version,
  • we introduce a new typeclass PerfectField,
  • we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
  • we add some basic facts such as perfection of finite rings / fields and products of perfect rings.

Open in Gitpod

@ocfnash ocfnash added WIP Work in progress t-algebra Algebra (groups, rings, fields etc) labels Jul 27, 2023
@acmepjz
Copy link
Collaborator

acmepjz commented Jul 30, 2023

Would you like to add the equivalent definition that a field is perfect if and only if every (finite) algebraic extension is surjective?

@ocfnash
Copy link
Contributor Author

ocfnash commented Jul 30, 2023

Would you like to add the equivalent definition that a field is perfect if and only if every (finite) algebraic extension is surjective?

I don't plan to do this, but I encourage you to do it in a follow-up PR if you're interested!

@ocfnash ocfnash added awaiting-review The author would like community review of the PR awaiting-CI and removed WIP Work in progress labels Jul 30, 2023
@eric-wieser
Copy link
Member

  • we replace the data-bearing PerfectRing typeclass with a Prop-valued (non-constructive) version,

What do we gain by removing the data here? Is the problem that the class would not be subsingleton?

@ocfnash
Copy link
Contributor Author

ocfnash commented Jul 31, 2023

Is the problem that the class would not be subsingleton?

In fact the existing class is subsingleton:

-- Using old definition of `PerfectRing` (which I propose to remove):
example : Subsingleton (PerfectRing R p) := by
  constructor
  rintro ⟨f, -, hfr⟩ ⟨g, hgl, -⟩
  congr
  exact LeftInverse.eq_rightInverse hfr hgl

so this is not the problem.

What do we gain by removing the data here?

I claim the advantages are:

  1. We get a type-theoretic expression of the above uniqueness.
  2. Our formalisation becomes classical as opposed to constructive. [Albeit you might argue this begs your question.]
  3. The sociological advantage that proposed new definition is what most mathematicians would expect.
  4. We cannot author lemmas which depend on a particular instance of PerfectRing (e.g., stemming from finiteness) that might fail in a rewrite when PerfectRing is available some other way. [I admit, slightly speculative.]

@ocfnash ocfnash removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. label Aug 10, 2023
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.

bors d+

@bors
Copy link

bors bot commented Aug 14, 2023

✌️ ocfnash can now approve this pull request. To approve and merge a pull request, simply reply with bors r+. More detailed instructions are available here.

@leanprover-community-mathlib4-bot leanprover-community-mathlib4-bot added delegated and removed awaiting-review The author would like community review of the PR labels Aug 14, 2023
@ocfnash
Copy link
Contributor Author

ocfnash commented Aug 14, 2023

bors merge

@github-actions github-actions bot added the ready-to-merge This PR has been sent to bors. label Aug 14, 2023
bors bot pushed a commit that referenced this pull request Aug 14, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
@bors
Copy link

bors bot commented Aug 14, 2023

This PR was included in a batch that was canceled, it will be automatically retried

bors bot pushed a commit that referenced this pull request Aug 14, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
bors bot pushed a commit that referenced this pull request Aug 14, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
bors bot pushed a commit that referenced this pull request Aug 14, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
bors bot pushed a commit that referenced this pull request Aug 14, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
bors bot pushed a commit that referenced this pull request Aug 14, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
bors bot pushed a commit that referenced this pull request Aug 14, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
bors bot pushed a commit that referenced this pull request Aug 14, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
bors bot pushed a commit that referenced this pull request Aug 14, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
@bors
Copy link

bors bot commented Aug 14, 2023

Build failed (retrying...):

bors bot pushed a commit that referenced this pull request Aug 14, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
@bors
Copy link

bors bot commented Aug 14, 2023

Build failed (retrying...):

bors bot pushed a commit that referenced this pull request Aug 14, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
@bors
Copy link

bors bot commented Aug 14, 2023

Pull request successfully merged into master.

Build succeeded!

The publicly hosted instance of bors-ng is deprecated and will go away soon.

If you want to self-host your own instance, instructions are here.
For more help, visit the forum.

If you want to switch to GitHub's built-in merge queue, visit their help page.

@bors bors bot changed the title chore: refactor perfect rings / fields [Merged by Bors] - chore: refactor perfect rings / fields Aug 14, 2023
@bors bors bot closed this Aug 14, 2023
@bors bors bot deleted the ocfnash/perfect_fields branch August 14, 2023 22:04
semorrison pushed a commit that referenced this pull request Aug 15, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
semorrison pushed a commit that referenced this pull request Aug 15, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
semorrison pushed a commit that referenced this pull request Aug 15, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
semorrison pushed a commit that referenced this pull request Aug 17, 2023
The main changes are:

- we replace the data-bearing `PerfectRing` typeclass with a `Prop`-valued (non-constructive) version,
- we introduce a new typeclass `PerfectField`,
- we add a proof that a perfect field of positive characteristic has surjective Frobenius map,
- we add some basic facts such as perfection of finite rings / fields and products of perfect rings.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
delegated 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.

None yet

6 participants