Skip to content

Commit 0517a13

Browse files
committed
refactor(FieldTheory/IsAlgClosed,IsSepClosed): redefine in terms of Polynomial.Factors (#30869)
This PR redefines `IsAlgClosed` and `IsSepClosed` in terms of `Polynomial.Factors` rather than in terms of `Polynomial.Splits (RingHom.id k)`. This is part of a larger effort to switch over from `Polynomial.Splits` to `Polynomial.Factors`. Co-authored-by: tb65536 <thomas.l.browning@gmail.com>
1 parent df27cff commit 0517a13

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

Mathlib/FieldTheory/IsAlgClosed/Basic.lean

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,28 +57,31 @@ see `IsAlgClosed.splits_codomain` and `IsAlgClosed.splits_domain`.
5757
-/
5858
@[stacks 09GR "The definition of `IsAlgClosed` in mathlib is 09GR (4)"]
5959
class IsAlgClosed : Prop where
60-
splits : ∀ p : k[X], p.Splits <| RingHom.id k
60+
factors : ∀ p : k[X], p.Factors
6161

6262
/-- Every polynomial splits in the field extension `f : K →+* k` if `k` is algebraically closed.
6363
6464
See also `IsAlgClosed.splits_domain` for the case where `K` is algebraically closed.
6565
-/
6666
theorem IsAlgClosed.splits_codomain {k K : Type*} [Field k] [IsAlgClosed k] [CommRing K]
67-
{f : K →+* k} (p : K[X]) : p.Splits f := by
68-
convert IsAlgClosed.splits (p.map f); simp [splits_map_iff]
67+
{f : K →+* k} (p : K[X]) : p.Splits f :=
68+
IsAlgClosed.factors (p.map f)
6969

7070
/-- Every polynomial splits in the field extension `f : K →+* k` if `K` is algebraically closed.
7171
7272
See also `IsAlgClosed.splits_codomain` for the case where `k` is algebraically closed.
7373
-/
7474
theorem IsAlgClosed.splits_domain {k K : Type*} [Field k] [IsAlgClosed k] [Field K] {f : k →+* K}
7575
(p : k[X]) : p.Splits f :=
76-
Polynomial.splits_of_splits_id _ <| IsAlgClosed.splits _
76+
(IsAlgClosed.factors p).map f
7777

7878
namespace IsAlgClosed
7979

8080
variable {k}
8181

82+
theorem splits [IsAlgClosed k] (p : k[X]) : p.Splits (RingHom.id k) :=
83+
(IsAlgClosed.factors p).map (RingHom.id k)
84+
8285
/--
8386
If `k` is algebraically closed, then every nonconstant polynomial has a root.
8487
-/

Mathlib/FieldTheory/IsSepClosed.lean

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,18 @@ To show `Polynomial.Splits p f` for an arbitrary ring homomorphism `f`,
5959
see `IsSepClosed.splits_codomain` and `IsSepClosed.splits_domain`.
6060
-/
6161
class IsSepClosed : Prop where
62-
splits_of_separable : ∀ p : k[X], p.Separable → (p.Splits <| RingHom.id k)
62+
factors_of_separable : ∀ p : k[X], p.Separable → p.Factors
6363

6464
/-- An algebraically closed field is also separably closed. -/
6565
instance IsSepClosed.of_isAlgClosed [IsAlgClosed k] : IsSepClosed k :=
66-
fun p _ ↦ IsAlgClosed.splits p⟩
66+
fun p _ ↦ IsAlgClosed.factors p⟩
6767

6868
variable {k} {K}
6969

70+
theorem IsSepClosed.splits_of_separable [IsSepClosed k] (p : k[X]) (hp : p.Separable) :
71+
p.Splits (RingHom.id k) :=
72+
(factors_of_separable p hp).map (RingHom.id k)
73+
7074
/-- Every separable polynomial splits in the field extension `f : k →+* K` if `K` is
7175
separably closed.
7276
@@ -173,7 +177,6 @@ theorem of_exists_root (H : ∀ p : k[X], p.Monic → Irreducible p → Separabl
173177
IsSepClosed k := by
174178
refine ⟨fun p hsep ↦ factors_iff_splits.mpr <| Or.inr ?_⟩
175179
intro q hq hdvd
176-
simp only [map_id] at hdvd
177180
have hlc : IsUnit (leadingCoeff q)⁻¹ := IsUnit.inv <| Ne.isUnit <|
178181
leadingCoeff_ne_zero.2 <| Irreducible.ne_zero hq
179182
have hsep' : Separable (q * C (leadingCoeff q)⁻¹) :=

0 commit comments

Comments
 (0)