Skip to content

Commit 587e754

Browse files
committed
refactor(Algebra/Polynomial/Splits): begin deprecation (#32040)
This PR begins the deprecation in `Splits.lean` as we move over to the new API in `Factors.lean`. Co-authored-by: tb65536 <thomas.l.browning@gmail.com>
1 parent 1159dce commit 587e754

File tree

17 files changed

+106
-131
lines changed

17 files changed

+106
-131
lines changed

Mathlib/Algebra/Polynomial/Splits.lean

Lines changed: 65 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -41,29 +41,30 @@ section CommRing
4141
variable [CommRing K] [Field L] [Field F]
4242
variable (i : K →+* L)
4343

44-
theorem splits_zero : Splits (0 : K[X]) := by
45-
simp
44+
@[deprecated (since := "2025-11-24")]
45+
alias splits_zero := Splits.zero
4646

47-
theorem splits_of_map_eq_C {f : K[X]} {a : L} (h : f.map i = C a) : Splits (f.map i) := by
48-
simp [h]
47+
@[deprecated "Use `Splits.C` instead." (since := "2025-11-24")]
48+
theorem splits_of_map_eq_C {f : K[X]} {a : L} (h : f.map i = C a) : Splits (f.map i) :=
49+
h ▸ Splits.C a
4950

50-
theorem splits_C (a : K) : Splits (C a) := by
51-
simp
51+
@[deprecated (since := "2025-11-24")]
52+
alias splits_C := Splits.C
5253

53-
theorem splits_of_map_degree_eq_one {f : K[X]} (hf : degree (f.map i) = 1) : Splits (f.map i) :=
54-
Splits.of_degree_eq_one hf
54+
@[deprecated (since := "2025-11-24")]
55+
alias splits_of_map_degree_eq_one := Splits.of_degree_eq_one
5556

56-
theorem splits_of_degree_le_one {f : K[X]} (hf : degree f ≤ 1) : Splits (f.map i) :=
57-
Splits.of_degree_le_one (degree_map_le.trans hf)
57+
@[deprecated (since := "2025-11-24")]
58+
alias splits_of_degree_le_one := Splits.of_degree_le_one
5859

59-
theorem splits_of_degree_eq_one {f : K[X]} (hf : degree f = 1) : Splits (f.map i) :=
60-
splits_of_degree_le_one i hf.le
60+
@[deprecated (since := "2025-11-24")]
61+
alias splits_of_degree_eq_one := Splits.of_degree_eq_one
6162

62-
theorem splits_of_natDegree_le_one {f : K[X]} (hf : natDegree f ≤ 1) : Splits (f.map i) :=
63-
splits_of_degree_le_one i (degree_le_of_natDegree_le hf)
63+
@[deprecated (since := "2025-11-24")]
64+
alias splits_of_natDegree_le_one := Splits.of_natDegree_le_one
6465

65-
theorem splits_of_natDegree_eq_one {f : K[X]} (hf : natDegree f = 1) : Splits (f.map i) :=
66-
splits_of_natDegree_le_one i (le_of_eq hf)
66+
@[deprecated (since := "2025-11-24")]
67+
alias splits_of_natDegree_eq_one := Splits.of_natDegree_eq_one
6768

6869
theorem splits_mul {f g : K[X]} (hf : Splits (f.map i)) (hg : Splits (g.map i)) :
6970
Splits ((f * g).map i) := by
@@ -74,106 +75,78 @@ theorem splits_of_splits_mul' {f g : K[X]} (hfg : (f * g).map i ≠ 0) (h : Spli
7475
simp only [Splits, Polynomial.map_mul, mul_ne_zero_iff] at hfg h
7576
exact (splits_mul_iff hfg.1 hfg.2).mp h
7677

78+
@[deprecated "Use `Polynomial.map_map` instead." (since := "2025-11-24")]
7779
theorem splits_map_iff {L : Type*} [CommRing L] (i : K →+* L) (j : L →+* F) {f : K[X]} :
7880
Splits ((f.map i).map j) ↔ Splits (f.map (j.comp i)) := by
79-
simp [Splits, Polynomial.map_map]
81+
rw [Polynomial.map_map]
8082

81-
theorem splits_one : Splits (map i 1) :=
82-
map_C i ▸ splits_C _
83+
@[deprecated (since := "2025-11-24")]
84+
alias splits_one := Splits.one
8385

8486
theorem splits_of_isUnit [IsDomain K] {u : K[X]} (hu : IsUnit u) : (u.map i).Splits :=
85-
(isUnit_iff.mp hu).choose_spec.2 ▸ map_C i ▸ splits_C _
87+
(isUnit_iff.mp hu).choose_spec.2 ▸ map_C i ▸ Splits.C _
8688

87-
theorem splits_X_sub_C {x : K} : ((X - C x).map i).Splits :=
88-
splits_of_degree_le_one _ <| degree_X_sub_C_le _
89+
@[deprecated (since := "2025-11-24")]
90+
alias splits_X_sub_C := Splits.X_sub_C
8991

90-
theorem splits_X : (X.map i).Splits :=
91-
splits_of_degree_le_one _ degree_X_le
92+
@[deprecated (since := "2025-11-24")]
93+
alias splits_X := Splits.X
9294

93-
theorem splits_prod {ι : Type u} {s : ι → K[X]} {t : Finset ι} :
94-
(∀ j ∈ t, ((s j).map i).Splits) → ((∏ x ∈ t, s x).map i).Splits := by
95-
classical
96-
refine Finset.induction_on t (fun _ => splits_one i) fun a t hat ih ht => ?_
97-
rw [Finset.forall_mem_insert] at ht; rw [Finset.prod_insert hat]
98-
exact splits_mul i ht.1 (ih ht.2)
95+
@[deprecated (since := "2025-11-24")]
96+
alias splits_prod := Splits.prod
9997

100-
theorem splits_pow {f : K[X]} (hf : (f.map i).Splits) (n : ℕ) : ((f ^ n).map i).Splits := by
101-
rw [← Finset.card_range n, ← Finset.prod_const]
102-
exact splits_prod i fun j _ => hf
98+
@[deprecated (since := "2025-11-24")]
99+
alias splits_pow := Splits.pow
103100

104-
theorem splits_X_pow (n : ℕ) : ((X ^ n).map i).Splits :=
105-
splits_pow i (splits_X i) n
101+
@[deprecated (since := "2025-11-24")]
102+
alias splits_X_pow := Splits.X_pow
106103

104+
@[deprecated "Use `Polynomial.map_id` instead." (since := "2025-11-24")]
107105
theorem splits_id_iff_splits {f : K[X]} :
108106
((f.map i).map (RingHom.id L)).Splits ↔ (f.map i).Splits := by
109-
rw [splits_map_iff, RingHom.id_comp]
107+
rw [map_id]
110108

111109
variable {i}
112110

113-
-- TODO: Prove the analogous composition theorems for `Factors`
114-
theorem Splits.comp_of_map_degree_le_one {f : K[X]} {p : K[X]} (hd : (p.map i).degree ≤ 1)
115-
(h : (f.map i).Splits) : ((f.comp p).map i).Splits := by
116-
rw [splits_iff_splits] at h ⊢
117-
by_cases hzero : map i (f.comp p) = 0
118-
· exact Or.inl hzero
119-
cases h with
120-
| inl h0 =>
121-
exact Or.inl <| map_comp i _ _ ▸ h0.symm ▸ zero_comp
122-
| inr h =>
123-
right
124-
intro g irr dvd
125-
rw [map_comp] at dvd hzero
126-
cases lt_or_eq_of_le hd with
127-
| inl hd =>
128-
rw [eq_C_of_degree_le_zero (Nat.WithBot.lt_one_iff_le_zero.mp hd), comp_C] at dvd hzero
129-
refine False.elim (irr.1 (isUnit_of_dvd_unit dvd ?_))
130-
simpa using hzero
131-
| inr hd =>
132-
let _ := invertibleOfNonzero (leadingCoeff_ne_zero.mpr
133-
(ne_zero_of_degree_gt (n := ⊥) (by rw [hd]; decide)))
134-
rw [eq_X_add_C_of_degree_eq_one hd, dvd_comp_C_mul_X_add_C_iff _ _] at dvd
135-
have := h (irr.map (algEquivCMulXAddC _ _).symm) dvd
136-
rw [degree_eq_natDegree irr.ne_zero]
137-
rwa [algEquivCMulXAddC_symm_apply, ← comp_eq_aeval,
138-
degree_eq_natDegree (fun h => WithBot.bot_ne_one (h ▸ this)),
139-
natDegree_comp, natDegree_C_mul (invertibleInvOf.ne_zero),
140-
natDegree_X_sub_C, mul_one] at this
141-
142-
theorem splits_iff_comp_splits_of_degree_eq_one {f : K[X]} {p : K[X]} (hd : (p.map i).degree = 1) :
143-
(f.map i).Splits ↔ ((f.comp p).map i).Splits := by
144-
rw [← splits_id_iff_splits, ← splits_id_iff_splits (f := f.comp p), map_comp]
145-
refine ⟨fun h => Splits.comp_of_map_degree_le_one
146-
(le_of_eq (map_id (R := L) ▸ hd)) h, fun h => ?_⟩
111+
theorem Splits.comp_of_degree_le_one {f : L[X]} {p : L[X]} (hd : p.degree ≤ 1)
112+
(h : f.Splits) : (f.comp p).Splits := by
113+
obtain ⟨m, hm⟩ := splits_iff_exists_multiset.mp h
114+
rw [hm, mul_comp, C_comp, multiset_prod_comp]
115+
refine (Splits.C _).mul (Splits.multisetProd ?_)
116+
simp only [Multiset.mem_map]
117+
rintro - ⟨-, ⟨a, -, rfl⟩, rfl⟩
118+
apply Splits.of_degree_le_one
119+
grw [sub_comp, X_comp, C_comp, degree_sub_le, hd, degree_C_le, max_eq_left zero_le_one]
120+
121+
@[deprecated (since := "2025-11-24")]
122+
alias Splits.comp_of_map_degree_le_one := Splits.comp_of_degree_le_one
123+
124+
theorem splits_iff_comp_splits_of_degree_eq_one {f : L[X]} {p : L[X]} (hd : p.degree = 1) :
125+
f.Splits ↔ (f.comp p).Splits := by
126+
refine ⟨Splits.comp_of_degree_le_one hd.le, fun h ↦ ?_⟩
147127
let _ := invertibleOfNonzero (leadingCoeff_ne_zero.mpr
148128
(ne_zero_of_degree_gt (n := ⊥) (by rw [hd]; decide)))
149-
have : (map i f) = ((map i f).comp (map i p)).comp ((C ⅟(map i p).leadingCoeff *
150-
(X - C ((map i p).coeff 0)))) := by
129+
have : f = (f.comp p).comp ((C ⅟p.leadingCoeff *
130+
(X - C (p.coeff 0)))) := by
151131
rw [comp_assoc]
152132
nth_rw 1 [eq_X_add_C_of_degree_eq_one hd]
153-
simp only [coeff_map, invOf_eq_inv, mul_sub, ← C_mul, add_comp, mul_comp, C_comp, X_comp,
133+
simp only [invOf_eq_inv, mul_sub, ← C_mul, add_comp, mul_comp, C_comp, X_comp,
154134
← mul_assoc]
155135
simp
156-
refine this ▸ Splits.comp_of_map_degree_le_one ?_ h
157-
simp [degree_C (inv_ne_zero (Invertible.ne_zero (a := (map i p).leadingCoeff)))]
158-
159-
/--
160-
This is a weaker variant of `Splits.comp_of_map_degree_le_one`,
161-
but its conditions are easier to check.
162-
-/
163-
theorem Splits.comp_of_degree_le_one {f : K[X]} {p : K[X]} (hd : p.degree ≤ 1)
164-
(h : (f.map i).Splits) : ((f.comp p).map i).Splits :=
165-
Splits.comp_of_map_degree_le_one (degree_map_le.trans hd) h
136+
rw [this]
137+
refine Splits.comp_of_degree_le_one ?_ h
138+
simp [degree_C (inv_ne_zero (Invertible.ne_zero (a := p.leadingCoeff)))]
166139

167-
theorem Splits.comp_X_sub_C (a : K) {f : K[X]}
168-
(h : (f.map i).Splits) : ((f.comp (X - C a)).map i).Splits :=
140+
theorem Splits.comp_X_sub_C (a : L) {f : L[X]}
141+
(h : f.Splits) : (f.comp (X - C a)).Splits :=
169142
Splits.comp_of_degree_le_one (degree_X_sub_C_le _) h
170143

171-
theorem Splits.comp_X_add_C (a : K) {f : K[X]}
172-
(h : (f.map i).Splits) : ((f.comp (X + C a)).map i).Splits :=
173-
Splits.comp_of_degree_le_one (by simpa using degree_X_sub_C_le (-a)) h
144+
theorem Splits.comp_X_add_C (a : L) {f : L[X]}
145+
(h : f.Splits) : (f.comp (X + C a)).Splits :=
146+
Splits.comp_of_degree_le_one (degree_X_add_C a).le h
174147

175-
theorem Splits.comp_neg_X {f : K[X]} (h : (f.map i).Splits) : ((f.comp (-X)).map i).Splits :=
176-
Splits.comp_of_degree_le_one (by simpa using degree_X_sub_C_le (0 : K)) h
148+
theorem Splits.comp_neg_X {f : L[X]} (h : f.Splits) : (f.comp (-X)).Splits :=
149+
Splits.comp_of_degree_le_one (by rw [degree_neg, degree_X]) h
177150

178151
variable (i)
179152

@@ -246,7 +219,7 @@ theorem splits_prod_iff {ι : Type u} {s : ι → K[X]} {t : Finset ι} :
246219
classical
247220
refine
248221
Finset.induction_on t (fun _ =>
249-
fun _ _ h => by simp only [Finset.notMem_empty] at h, fun _ => splits_one i⟩)
222+
fun _ _ h => by simp only [Finset.notMem_empty] at h, by simp⟩)
250223
fun a t hat ih ht => ?_
251224
rw [Finset.forall_mem_insert] at ht ⊢
252225
rw [Finset.prod_insert hat, Polynomial.map_mul, splits_mul_iff (map_ne_zero ht.1)
@@ -430,7 +403,7 @@ theorem splits_id_of_splits {f : K[X]} (h : Splits (f.map i))
430403

431404
theorem splits_comp_of_splits (i : R →+* K) (j : K →+* L) {f : R[X]} (h : Splits (f.map i)) :
432405
Splits (f.map (j.comp i)) :=
433-
(splits_map_iff i j).mp (splits_of_splits_id _ <| (splits_map_iff i <| .id K).mpr h)
406+
f.map_map i j ▸ h.map j
434407

435408
variable [Algebra R K] [Algebra R L]
436409

Mathlib/FieldTheory/AbelRuffini.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,9 @@ theorem gal_X_pow_sub_C_isSolvable (n : ℕ) (x : F) : IsSolvable (X ^ n - C x).
181181
· exact gal_X_pow_sub_one_isSolvable n
182182
· rw [Polynomial.map_sub, Polynomial.map_pow, map_X, map_C]
183183
apply gal_X_pow_sub_C_isSolvable_aux
184+
rw [map_id]
184185
have key := SplittingField.splits (X ^ n - 1 : F[X])
185-
rwa [← splits_id_iff_splits, Polynomial.map_sub, Polynomial.map_pow, map_X,
186+
rwa [Polynomial.map_sub, Polynomial.map_pow, map_X,
186187
Polynomial.map_one] at key
187188

188189
end GalXPowSubC

Mathlib/FieldTheory/Fixed.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,11 +259,11 @@ variable [Finite G]
259259
instance normal : Normal (FixedPoints.subfield G F) F where
260260
isAlgebraic x := (isIntegral G F x).isAlgebraic
261261
splits' x :=
262-
(Polynomial.splits_id_iff_splits _).1 <| by
262+
by
263263
cases nonempty_fintype G
264264
rw [← minpoly_eq_minpoly, minpoly, coe_algebraMap, ← Subfield.toSubring_subtype_eq_subtype,
265265
Polynomial.map_toSubring _ (subfield G F).toSubring, prodXSubSMul]
266-
exact Polynomial.splits_prod _ fun _ _ => Polynomial.splits_X_sub_C _
266+
exact Polynomial.Splits.prod fun _ _ => Polynomial.Splits.X_sub_C _
267267

268268
instance isSeparable : Algebra.IsSeparable (FixedPoints.subfield G F) F := by
269269
classical

Mathlib/FieldTheory/Galois/Basic.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,7 @@ theorem of_separable_splitting_field_aux [hFE : FiniteDimensional F E] [sp : p.I
524524
rw [← @IntermediateField.card_algHom_adjoin_integral K _ E _ _ x E _ (RingHom.toAlgebra f) h]
525525
· exact Polynomial.Separable.of_dvd ((Polynomial.separable_map (algebraMap F K)).mpr hp) h2
526526
· refine Polynomial.splits_of_splits_of_dvd _ (Polynomial.map_ne_zero h1) ?_ h2
527-
rw [Polynomial.splits_map_iff, ← IsScalarTower.algebraMap_eq]
527+
rw [Polynomial.map_map, ← IsScalarTower.algebraMap_eq]
528528
exact sp.splits
529529

530530
theorem of_separable_splitting_field [sp : p.IsSplittingField F E] (hp : p.Separable) :
@@ -547,7 +547,7 @@ theorem of_separable_splitting_field [sp : p.IsSplittingField F E] (hp : p.Separ
547547
· have key := IntermediateField.card_algHom_adjoin_integral F (K := E)
548548
(show IsIntegral F (0 : E) from isIntegral_zero)
549549
rw [IsSeparable, minpoly.zero, Polynomial.natDegree_X] at key
550-
specialize key Polynomial.separable_X (Polynomial.splits_X (algebraMap F E))
550+
specialize key Polynomial.separable_X (Polynomial.Splits.X.map (algebraMap F E))
551551
rw [← @Subalgebra.finrank_bot F E _ _ _, ← IntermediateField.bot_toSubalgebra] at key
552552
refine Eq.trans ?_ key
553553
apply Nat.card_congr
@@ -584,7 +584,7 @@ theorem sup_right (K L : IntermediateField F E) [IsGalois F K] [FiniteDimensiona
584584
suffices T'.IsSplittingField L E from IsGalois.of_separable_splitting_field (p := T') hT₁.map
585585
rw [isSplittingField_iff_intermediateField] at hT₂ ⊢
586586
constructor
587-
· rw [Polynomial.splits_map_iff, ← IsScalarTower.algebraMap_eq]
587+
· rw [Polynomial.map_map, ← IsScalarTower.algebraMap_eq]
588588
exact Polynomial.splits_of_algHom hT₂.1 (IsScalarTower.toAlgHom _ _ _)
589589
· have h' : T'.rootSet E = T.rootSet E := by simp [Set.ext_iff, Polynomial.mem_rootSet', T']
590590
rw [← lift_inj, lift_adjoin, ← coe_val, T.image_rootSet hT₂.1] at hT₂

Mathlib/FieldTheory/IntermediateField/Adjoin/Basic.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,9 @@ theorem isSplittingField_iSup {p : ι → K[X]}
151151
(∏ i ∈ s, p i).IsSplittingField K (⨆ i ∈ s, t i : IntermediateField K L) := by
152152
let F : IntermediateField K L := ⨆ i ∈ s, t i
153153
have hF : ∀ i ∈ s, t i ≤ F := fun i hi ↦ le_iSup_of_le i (le_iSup (fun _ ↦ t i) hi)
154-
simp only [isSplittingField_iff] at h ⊢
154+
simp only [isSplittingField_iff, Polynomial.map_prod] at h ⊢
155155
refine
156-
splits_prod (algebraMap K F) fun i hi ↦
156+
Splits.prod fun i hi ↦
157157
splits_comp_of_splits (algebraMap K (t i)) (inclusion (hF i hi)).toRingHom
158158
(h i hi).1,
159159
?_⟩

Mathlib/FieldTheory/IsAlgClosed/AlgebraicClosure.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,8 @@ instance isAlgebraic : Algebra.IsAlgebraic k (AlgebraicClosure k) :=
188188
simp⟩
189189

190190
instance : IsAlgClosure k (AlgebraicClosure k) := .of_splits fun f hf _ ↦ by
191-
rw [show f = (⟨f, hf⟩ : Monics k) from rfl, ← splits_id_iff_splits, Monics.map_eq_prod]
192-
exact splits_prod _ fun _ _ ↦ (splits_id_iff_splits _).mpr (splits_X_sub_C _)
191+
rw [show f = (⟨f, hf⟩ : Monics k) from rfl, Monics.map_eq_prod]
192+
exact Splits.prod fun _ _ ↦ (Splits.X_sub_C _).map _
193193

194194
instance isAlgClosed : IsAlgClosed (AlgebraicClosure k) := IsAlgClosure.isAlgClosed k
195195

Mathlib/FieldTheory/IsAlgClosed/Basic.lean

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,8 +304,7 @@ theorem IsAlgClosure.of_splits {R K} [CommRing R] [IsDomain R] [Field K] [Algebr
304304
isAlgebraic := inferInstance
305305
isAlgClosed := .of_exists_root _ fun _p _ p_irred ↦
306306
have ⟨g, monic, irred, dvd⟩ := p_irred.exists_dvd_monic_irreducible_of_isIntegral (K := R)
307-
exists_root_of_splits _ (splits_of_splits_of_dvd _ (map_monic_ne_zero monic)
308-
((splits_id_iff_splits _).mpr <| h g monic irred) dvd) <|
307+
Splits.exists_eval_eq_zero (Splits.of_dvd (h g monic irred) (map_monic_ne_zero monic) dvd) <|
309308
degree_ne_of_natDegree_ne p_irred.natDegree_pos.ne'
310309

311310
namespace IsAlgClosed

Mathlib/FieldTheory/Isaacs.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ theorem nonempty_algHom_of_exist_roots (h : ∀ x : E, ∃ y : K, aeval y (minpo
4646
have splits s (hs : s ∈ S) : ((minpoly F s).map (algebraMap F K')).Splits := by
4747
apply splits_of_splits_of_dvd _
4848
(Finset.prod_ne_zero_iff.mpr fun _ _ ↦ minpoly.ne_zero <| (alg.isIntegral).1 _)
49-
((splits_map_iff _ _).mp <| SplittingField.splits p) (Finset.dvd_prod_of_mem _ hs)
49+
(map_map (algebraMap F K) (algebraMap K p.SplittingField) _ ▸ SplittingField.splits p)
50+
(Finset.dvd_prod_of_mem _ hs)
5051
let K₀ := (⊥ : IntermediateField K K').restrictScalars F
5152
let FS := adjoin F (S : Set E)
5253
let Ω := FS →ₐ[F] K'

Mathlib/FieldTheory/KummerExtension.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ theorem X_pow_sub_C_splits_of_isPrimitiveRoot
6060
(X ^ n - C a).Splits := by
6161
cases n.eq_zero_or_pos with
6262
| inl hn =>
63-
simp only [hn, pow_zero, ← C.map_one, ← map_sub, splits_C]
63+
simp only [hn, pow_zero, ← C.map_one, ← map_sub, Splits.C]
6464
| inr hn =>
6565
rw [splits_iff_card_roots, ← nthRoots, hζ.card_nthRoots, natDegree_X_pow_sub_C, if_pos ⟨α, e⟩]
6666

Mathlib/FieldTheory/Normal/Basic.lean

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ theorem Normal.exists_isSplittingField [h : Normal F K] [FiniteDimensional F K]
3838
classical
3939
let s := Module.Basis.ofVectorSpace F K
4040
refine
41-
⟨∏ x, minpoly F (s x), splits_prod _ fun x _ => h.splits (s x),
42-
Subalgebra.toSubmodule.injective ?_⟩
41+
⟨∏ x, minpoly F (s x), Polynomial.map_prod (algebraMap F K) _ _ ▸
42+
Splits.prod fun x _ => h.splits (s x), Subalgebra.toSubmodule.injective ?_⟩
4343
rw [Algebra.top_toSubmodule, eq_top_iff, ← s.span_eq, Submodule.span_le, Set.range_subset_iff]
4444
refine fun x =>
4545
Algebra.subset_adjoin
@@ -80,7 +80,7 @@ theorem Normal.of_isSplittingField (p : F[X]) [hFEp : IsSplittingField F E p] :
8080
rw [← IsSplittingField.adjoin_rootSet_eq_range E p j,
8181
IsSplittingField.adjoin_rootSet_eq_range E p (j'.restrictScalars F)]
8282
exact ⟨x, (j'.commutes _).trans (algHomAdjoinIntegralEquiv_symm_apply_gen F hx _)⟩
83-
· rw [splits_map_iff, ← IsScalarTower.algebraMap_eq]; exact hL.1
83+
· rw [Polynomial.map_map, ← IsScalarTower.algebraMap_eq]; exact hL.1
8484
· rw [Polynomial.map_ne_zero_iff (algebraMap F L).injective, mul_ne_zero_iff]
8585
exact ⟨hp, minpoly.ne_zero hx⟩
8686

@@ -191,7 +191,7 @@ noncomputable def AlgHom.liftNormal [h : Normal F E] : E →ₐ[F] E :=
191191
((IsScalarTower.toAlgHom F K₂ E).comp ϕ).toRingHom.toAlgebra _
192192
(fun x _ ↦ ⟨(h.out x).1.tower_top,
193193
splits_of_splits_of_dvd _ (map_ne_zero (minpoly.ne_zero (h.out x).1))
194-
(by rw [splits_map_iff, ← IsScalarTower.algebraMap_eq]
194+
(by rw [Polynomial.map_map, ← IsScalarTower.algebraMap_eq]
195195
exact (h.out x).2)
196196
(minpoly.dvd_map_of_isScalarTower F K₁ x)⟩)
197197
(IntermediateField.adjoin_univ _ _)
@@ -291,5 +291,5 @@ instance Algebra.IsQuadraticExtension.normal (F K : Type*) [Field F] [Field K] [
291291
splits' := by
292292
intro x
293293
obtain h | h := le_iff_lt_or_eq.mp (finrank_eq_two F K ▸ minpoly.natDegree_le x)
294-
· exact splits_of_natDegree_le_one _ (by rwa [Nat.le_iff_lt_add_one])
294+
· exact Splits.of_natDegree_le_one <| natDegree_map_le.trans (by rwa [Nat.le_iff_lt_add_one])
295295
· exact splits_of_natDegree_eq_two _ h (minpoly.aeval F x)

0 commit comments

Comments
 (0)