-
Notifications
You must be signed in to change notification settings - Fork 259
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(FieldTheory/SeparableDegree): further properties of separable degree of fields and polynomials #9041
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From a brief skim up to Line 532:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
okay I've now skimmed through the whole PR. Fantastic work! Next time I'll be trying to golf some proofs ...
Is it possible to split the PR? It is currently rather big... |
I'm happy with the content, just haven't checked whether some proofs' lengths are justified :) |
Can you please fix the conflict? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, I think this is my final review on this PR!
(finSepDegree_adjoin_simple_eq_finrank_iff L E y halg' |>.2 | ||
(hy.map (f := algebraMap F F⟮x⟯) |>.of_dvd (minpoly.dvd_map_of_isScalarTower F L y))) | ||
let M := L⟮y⟯ | ||
letI : Algebra L M := Subalgebra.algebra M.toSubalgebra |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I opened #9291 to remove these manual instances.
…ield (#9291) Removes [manual letI/haveI](https://github.com/leanprover-community/mathlib4/blob/fe76ea7c2bb0c725ad161755ac158171aa9c545a/Mathlib/FieldTheory/SeparableDegree.lean#L568-L571) that appear in four proofs of #9041 Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>
I also think this is almost ready! Since #9291 has been merged, can you see if you can golf some proof? |
Sure. Let me try how many of them can be removed. |
Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a few more nits I missed ...
- `Field.finSepDegree_eq_finrank_iff`: if `E / F` is a finite extension, then its separable degree | ||
is equal to its degree if and only if it is a separable extension. | ||
|
||
- `IntermediateField.isSeparable_adjoin_simple_iff_separable`: `F⟮x⟯ / F` is a separable extension |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Side comment: I think the phrase adjoin_simple
is strange. It's a simple extension obtained by adjoining a singleton. Indeed similar constructions are called adjoin_singleton
, but I think we could just use the shorthand simple
here which also agrees with math terminology. I think we might open a PR to rename all adjoin_simple
to simple
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But mem_adjoin_simple_self
-> mem_simple_self
sounds strange ...
Thanks 🎉 |
🚀 Pull request has been placed on the maintainer queue by alreadydone. |
Thanks 🎉 bors merge |
…gree of fields and polynomials (#9041) Breaking changes: - remove `Field.sepDegree` since it is not quite correct for infinite case; will be added in later PR (see #8696) New definitions (non-exhaustive): - `Polynomial.natSepDegree`: the separable degree of a polynomial is a natural number, defined to be the number of distinct roots of it over its splitting field. New results (non-exhaustive): - `Polynomial.natSepDegree_le_natDegree`: the separable degree of a polynomial is smaller than its degree. - `Polynomial.natSepDegree_eq_natDegree_iff`: the separable degree of a non-zero polynomial is equal to its degree if and only if it is separable. - `Polynomial.natSepDegree_dvd_natDegree_of_irreducible`: the separable degree of an irreducible polynomial divides its degree. - `Field.finSepDegree_adjoin_simple_eq_natSepDegree`: the (finite) separable degree of `F⟮α⟯ / F` is equal to the separable degree of the minimal polynomial of `α` over `F`. - `Field.finSepDegree_dvd_finrank`: the separable degree of any field extension `E / F` divides the degree of `E / F`. - `Field.finSepDegree_le_finrank`: the separable degree of a finite extension `E / F` is smaller than the degree of `E / F`. - `Field.finSepDegree_eq_finrank_iff`: if `E / F` is a finite extension, then its separable degree is equal to its degree if and only if it is a separable extension. Co-authored-by: Johan Commelin <johan@commelin.net>
Pull request successfully merged into master. Build succeeded: |
Breaking changes:
Field.sepDegree
since it is not quite correct for infinite case; will be added in later PR (see [Merged by Bors] - feat(FieldTheory/IsPerfectClosure): predicateIsPerfectClosure
#8696)New definitions (non-exhaustive):
Polynomial.natSepDegree
: the separable degree of a polynomial is a natural number, defined to be the number of distinct roots of it over its splitting field.New results (non-exhaustive):
Polynomial.natSepDegree_le_natDegree
: the separable degree of a polynomial is smaller than its degree.Polynomial.natSepDegree_eq_natDegree_iff
: the separable degree of a non-zero polynomial is equal to its degree if and only if it is separable.Polynomial.natSepDegree_dvd_natDegree_of_irreducible
: the separable degree of an irreducible polynomial divides its degree.Field.finSepDegree_adjoin_simple_eq_natSepDegree
: the (finite) separable degree ofF⟮α⟯ / F
is equal to the separable degree of the minimal polynomial ofα
overF
.Field.finSepDegree_dvd_finrank
: the separable degree of any field extensionE / F
divides the degree ofE / F
.Field.finSepDegree_le_finrank
: the separable degree of a finite extensionE / F
is smaller than the degree ofE / F
.Field.finSepDegree_eq_finrank_iff
: ifE / F
is a finite extension, then its separable degree is equal to its degree if and only if it is a separable extension.CharP
#8860Polynomial.Separable.isIntegral
and golf #9134expChar[_pow]_pos
#9260leadingCoeff_expand
andmonic_expand_iff
#9261exists_lt_finrank_of_infinite_dimensional
#9262rootsExpand[Pow]EquivRoots[_apply]
#9271HasSeparableContraction.isSeparableContraction
and ... #9272