-
Notifications
You must be signed in to change notification settings - Fork 365
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/IsSepClosed): add some results on separable closure and perfect field #9522
Conversation
Mathlib/FieldTheory/Perfect.lean
Outdated
have h2 := isIntegral_trans halg.isIntegral _ (AdjoinRoot.isIntegral_root h) | ||
have h3 := (AdjoinRoot.minpoly_root h) ▸ minpoly.dvd_map_of_isScalarTower K L (AdjoinRoot.root f) | ||
(PerfectField.separable_of_irreducible (minpoly.irreducible h2)).map |>.of_dvd h3 |>.of_mul_left⟩ |
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.
Can you extract the lemma that says if L/K is integral with L a field and K a CommRing, then any irreducible polynomial in L[X] divides some monic irreducible polynomial in K[X]?
(Side comment: I think we can also prove it for an integrally closed domain L if we assume Monic
because we have minpoly.isIntegrallyClosed_dvd and IsIntegrallyClosed.minpoly.unique. For L/K free maybe we can use Algebra.norm, but I'm not sure whether every element divides its norm in a general algebra; even though we can factor into irreducibles in a Noetherian domain, we probably need to start with a prime (not just irreducible) polynomial in L[X] in order for it to divide some factor ... there could be a version that assumes IsAlgebraic instead of IsIntegral too. But not for this PR ...)
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.
Sure, let me check later.
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.
Can you extract the lemma that says if L/K is integral with L a field and K a CommRing, then any irreducible polynomial in L[X] divides some monic irreducible polynomial in K[X]?
Need IsDomain K
(used in minpoly.irreducible
). Can it be deduced from existing conditions?
[EDIT] If let K'
be the image of K
in L
, then it is a domain, so at least we can find a monic irreducible polynomial in K'[X]
. The question is if its preimage in K[X]
is still irreducible.
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 see. There's no obvious way to remove IsDomain as far as I can see. If K is not a domain, it's possible that the minpoly has higher degree factors that become units in L[X].
Let's move this lemma to the file where AdjoinRoot is defined and call it a day!
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.
Can you extract the lemma that says if L/K is integral with L a field and K a CommRing, then any irreducible polynomial in L[X] divides some monic irreducible polynomial in K[X]?
Need
IsDomain K
(used inminpoly.irreducible
).
This result is incorrect, at least when K
is not connected (i.e. can be written as a product of two rings), see https://math.stackexchange.com/a/4849403/235999. In fact, it's easy to prove that for such case, any monic polynomial in K[X]
of degree ≥ 1
is NOT irreducible (a non-trivial factorization is obtained by applying Chinese Remainder Theorem on f * 1
and 1 * f
).
On the other hand, it's true if K
is irreducible (i.e. only one minimal prime ideal), see https://math.stackexchange.com/a/4843432/235999.
!bench |
Here are the benchmark results for commit f858a9e. Benchmark Metric Change
=========================================================================================
- ~Mathlib.CategoryTheory.Limits.FilteredColimitCommutesFiniteLimit instructions 16.4% (discussion here. This slowed-down file doesn't import any file that is changed. - Junyan) |
Thanks 🎉 |
🚀 Pull request has been placed on the maintainer queue by alreadydone. |
/-- If `L / K` is an integral extension, `K` is a domain, `L` is a field, then any irreducible | ||
polynomial over `L` divides some monic irreducible polynomial over `K`. -/ | ||
theorem Irreducible.exists_dvd_monic_irreducible_of_isIntegral {K L : Type*} | ||
[CommRing K] [IsDomain K] [Field L] [Algebra K L] (H : Algebra.IsIntegral K L) {f : L[X]} |
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.
Doesn't this imply that
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.
K to L isn't necessarily injective (K could be L[X] and algebraMap K L
could be evaluation at 0, for example). That said, I think this is still true if IsIntegral is replaced by IsAlgebraic ...
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!
bors d+
@@ -218,3 +218,14 @@ instance toPerfectRing (p : ℕ) [hp : Fact p.Prime] [CharP K p] : PerfectRing K | |||
exact minpoly.degree_pos ha | |||
|
|||
end PerfectField | |||
|
|||
/-- If `L / K` is an algebraic extension, `K` is a perfect field, then `L / K` is separable. -/ | |||
theorem Algebra.IsAlgebraic.isSeparable_of_perfectField {K L : Type*} [Field K] [Field L] |
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.
Can you add this to the docstring at the beginning of the file?
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.
Also, can this be an instance?
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.
Can you add this to the docstring at the beginning of the file?
Sure.
Also, can this be an instance?
No, it's not possible I think, since Algebra.IsAlgebraic
is not a typeclass, so this condition must be provided manually.
✌️ acmepjz can now approve this pull request. To approve and merge a pull request, simply reply with |
bors r+ |
…and perfect field (#9522) - `IsSepClosure.isAlgClosure_of_perfectField`, `IsSepClosure.of_isAlgClosure_of_perfectField`: if `k` is a perfect field, then its separable closure coincides with its algebraic closure. - `IsSepClosed.isAlgClosed_of_perfectField`: a separably closed perfect field is also algebraically closed. - `Algebra.IsAlgebraic.[isSeparable_of_]perfectField`: if `L / K` is an algebraic extension, `K` is a perfect field, then `L / K` is separable and `L` is perfect.
Pull request successfully merged into master. Build succeeded: |
IsSepClosure.isAlgClosure_of_perfectField
,IsSepClosure.of_isAlgClosure_of_perfectField
: ifk
is a perfect field, then its separable closure coincides with its algebraic closure.IsSepClosed.isAlgClosed_of_perfectField
: a separably closed perfect field is also algebraically closed.Algebra.IsAlgebraic.[isSeparable_of_]perfectField
: ifL / K
is an algebraic extension,K
is a perfect field, thenL / K
is separable andL
is perfect.Dicussions: #9488 (comment)