Skip to content

Commit f56665d

Browse files
committed
feat(FieldTheory/PurelyInseparable): some more results for purely inseparable extension (#10882)
- `perfectClosure.perfect(Ring|Field)`: if `E` is a perfect field of characteristic `p`, then the (relative) perfect closure `perfectClosure F E` is perfect. - `Is[PurelyIn]separable.[fin][In]sepDegree_eq`: various degrees of a [purely in]separable extension - `IntermediateField.sepDegree_adjoin_eq_of_isAlgebraic_of_isPurelyInseparable[']`: if `K / E / F` is a field extension tower, such that `E / F` is purely inseparable, then for any subset `S` of `K` such that `F(S) / F` is algebraic, the `E(S) / E` and `F(S) / F` have the same separable degree. - `minpoly.map_eq_of_separable_of_isPurelyInseparable`: if `K / E / F` is a field extension tower, such that `E / F` is purely inseparable, then for any element `x` of `K` separable over `F`, it has the same minimal polynomials over `F` and over `E`. - `Polynomial.Separable.map_irreducible_of_isPurelyInseparable`: if `E / F` is a purely inseparable field extension, `f` is a separable irreducible polynomial over `F`, then it is also irreducible over `E`.
1 parent 7455834 commit f56665d

File tree

3 files changed

+148
-1
lines changed

3 files changed

+148
-1
lines changed

Mathlib/FieldTheory/PurelyInseparable.lean

Lines changed: 134 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Jz Pan
55
-/
66
import Mathlib.FieldTheory.SeparableClosure
7+
import Mathlib.Algebra.CharP.IntermediateField
78

89
/-!
910
@@ -71,6 +72,9 @@ of fields.
7172
- `le_perfectClosure_iff`: an intermediate field of `E / F` is contained in the relative perfect
7273
closure of `F` in `E` if and only if it is purely inseparable over `F`.
7374
75+
- `perfectClosure.perfectRing`, `perfectClosure.perfectField`: if `E` is a perfect field, then the
76+
(relative) perfect closure `perfectClosure F E` is perfect.
77+
7478
- `IsPurelyInseparable.injective_comp_algebraMap`: if `E / F` is purely inseparable, then for any
7579
reduced ring `L`, the map `(E →+* L) → (F →+* L)` induced by `algebraMap F E` is injective.
7680
In particular, a purely inseparable field extension is an epimorphism in the category of fields.
@@ -84,12 +88,26 @@ of fields.
8488
and the degree of `(separableClosure F E) / F` are both finite or infinite, and when they are
8589
finite, they coincide.
8690
87-
- `finSepDegree_mul_finInsepDegree`: the finite separable degree multiply by the finite
91+
- `Field.finSepDegree_mul_finInsepDegree`: the finite separable degree multiply by the finite
8892
inseparable degree is equal to the (finite) field extension degree.
8993
9094
- `Field.lift_sepDegree_mul_lift_sepDegree_of_isAlgebraic`: the separable degrees satisfy the
9195
tower law: $[E:F]_s [K:E]_s = [K:F]_s$.
9296
97+
- `IntermediateField.sepDegree_adjoin_eq_of_isAlgebraic_of_isPurelyInseparable`,
98+
`IntermediateField.sepDegree_adjoin_eq_of_isAlgebraic_of_isPurelyInseparable'`:
99+
if `K / E / F` is a field extension tower, such that `E / F` is purely inseparable, then
100+
for any subset `S` of `K` such that `F(S) / F` is algebraic, the `E(S) / E` and `F(S) / F` have
101+
the same separable degree. In particular, if `S` is an intermediate field of `K / F` such that
102+
`S / F` is algebraic, the `E(S) / E` and `S / F` have the same separable degree.
103+
104+
- `minpoly.map_eq_of_separable_of_isPurelyInseparable`: if `K / E / F` is a field extension tower,
105+
such that `E / F` is purely inseparable, then for any element `x` of `K` separable over `F`,
106+
it has the same minimal polynomials over `F` and over `E`.
107+
108+
- `Polynomial.Separable.map_irreducible_of_isPurelyInseparable`: if `E / F` is purely inseparable,
109+
`f` is a separable irreducible polynomial over `F`, then it is also irreducible over `E`.
110+
93111
## Tags
94112
95113
separable degree, degree, separable closure, purely inseparable
@@ -359,6 +377,23 @@ alias AlgEquiv.perfectClosure := perfectClosure.algEquivOfAlgEquiv
359377

360378
end map
361379

380+
/-- If `E` is a perfect field of exponential characteristic `p`, then the (relative) perfect closure
381+
`perfectClosure F E` is perfect. -/
382+
instance perfectClosure.perfectRing (p : ℕ) [ExpChar E p]
383+
[PerfectRing E p] : PerfectRing (perfectClosure F E) p := .ofSurjective _ p fun x ↦ by
384+
haveI := RingHom.expChar _ (algebraMap F E).injective p
385+
obtain ⟨x', hx⟩ := surjective_frobenius E p x.1
386+
obtain ⟨n, y, hy⟩ := (mem_perfectClosure_iff_pow_mem p).1 x.2
387+
rw [frobenius_def] at hx
388+
rw [← hx, ← pow_mul, ← pow_succ] at hy
389+
exact ⟨⟨x', (mem_perfectClosure_iff_pow_mem p).2 ⟨n + 1, y, hy⟩⟩, by
390+
simp_rw [frobenius_def, SubmonoidClass.mk_pow, hx]⟩
391+
392+
/-- If `E` is a perfect field, then the (relative) perfect closure
393+
`perfectClosure F E` is perfect. -/
394+
instance perfectClosure.perfectField [PerfectField E] : PerfectField (perfectClosure F E) :=
395+
PerfectRing.toPerfectField _ (ringExpChar E)
396+
362397
end perfectClosure
363398

364399
section IsPurelyInseparable
@@ -482,6 +517,20 @@ instance instUniqueEmbOfIsPurelyInseparable [IsPurelyInseparable F E] :
482517
theorem IsPurelyInseparable.finSepDegree_eq_one [IsPurelyInseparable F E] :
483518
finSepDegree F E = 1 := Nat.card_unique
484519

520+
/-- A purely inseparable extension has separable degree one. -/
521+
theorem IsPurelyInseparable.sepDegree_eq_one [IsPurelyInseparable F E] :
522+
sepDegree F E = 1 := by
523+
rw [sepDegree, separableClosure.eq_bot_of_isPurelyInseparable, IntermediateField.rank_bot]
524+
525+
/-- A purely inseparable extension has inseparable degree equal to degree. -/
526+
theorem IsPurelyInseparable.insepDegree_eq [IsPurelyInseparable F E] :
527+
insepDegree F E = Module.rank F E := by
528+
rw [insepDegree, separableClosure.eq_bot_of_isPurelyInseparable, rank_bot']
529+
530+
/-- A purely inseparable extension has finite inseparable degree equal to degree. -/
531+
theorem IsPurelyInseparable.finInsepDegree_eq [IsPurelyInseparable F E] :
532+
finInsepDegree F E = finrank F E := congr(Cardinal.toNat $(insepDegree_eq F E))
533+
485534
-- TODO: remove `halg` assumption
486535
/-- An algebraic extension is purely inseparable if and only if it has finite separable
487536
degree one. -/
@@ -929,4 +978,88 @@ theorem sepDegree_mul_sepDegree_of_isAlgebraic (K : Type v) [Field K] [Algebra F
929978

930979
end Field
931980

981+
variable {F K} in
982+
/-- If `K / E / F` is a field extension tower, such that `E / F` is purely inseparable, then
983+
for any subset `S` of `K` such that `F(S) / F` is algebraic, the `E(S) / E` and `F(S) / F` have
984+
the same separable degree. -/
985+
theorem IntermediateField.sepDegree_adjoin_eq_of_isAlgebraic_of_isPurelyInseparable
986+
(S : Set K) (halg : Algebra.IsAlgebraic F (adjoin F S)) [IsPurelyInseparable F E] :
987+
sepDegree E (adjoin E S) = sepDegree F (adjoin F S) := by
988+
set M := adjoin F S
989+
set L := adjoin E S
990+
let E' := (IsScalarTower.toAlgHom F E K).fieldRange
991+
let j : E ≃ₐ[F] E' := AlgEquiv.ofInjectiveField (IsScalarTower.toAlgHom F E K)
992+
have hi : M ≤ L.restrictScalars F := by
993+
rw [restrictScalars_adjoin_of_algEquiv (E := K) j rfl, restrictScalars_adjoin]
994+
exact adjoin.mono _ _ _ (Set.subset_union_right _ _)
995+
let i : M →+* L := Subsemiring.inclusion hi
996+
letI : Algebra M L := i.toAlgebra
997+
letI : SMul M L := Algebra.toSMul
998+
haveI : IsScalarTower F M L := IsScalarTower.of_algebraMap_eq (congrFun rfl)
999+
haveI : IsPurelyInseparable M L := by
1000+
change IsPurelyInseparable M (extendScalars hi)
1001+
obtain ⟨q, _⟩ := ExpChar.exists F
1002+
have : extendScalars hi = adjoin M (E' : Set K) := restrictScalars_injective F <| by
1003+
conv_lhs => rw [extendScalars_restrictScalars, restrictScalars_adjoin_of_algEquiv
1004+
(E := K) j rfl, ← adjoin_self F E', adjoin_adjoin_comm]
1005+
rw [this, isPurelyInseparable_adjoin_iff_pow_mem _ _ q]
1006+
rintro x ⟨y, hy⟩
1007+
obtain ⟨n, z, hz⟩ := IsPurelyInseparable.pow_mem F q y
1008+
refine ⟨n, algebraMap F M z, ?_⟩
1009+
rw [← IsScalarTower.algebraMap_apply, IsScalarTower.algebraMap_apply F E K, hz, ← hy, map_pow]
1010+
rfl
1011+
have h := lift_sepDegree_mul_lift_sepDegree_of_isAlgebraic F E L
1012+
(IsPurelyInseparable.isAlgebraic F E)
1013+
rw [IsPurelyInseparable.sepDegree_eq_one F E, Cardinal.lift_one, one_mul] at h
1014+
rw [Cardinal.lift_injective h, ← sepDegree_mul_sepDegree_of_isAlgebraic F M L halg,
1015+
IsPurelyInseparable.sepDegree_eq_one M L, mul_one]
1016+
1017+
variable {F K} in
1018+
/-- If `K / E / F` is a field extension tower, such that `E / F` is purely inseparable, then
1019+
for any intermediate field `S` of `K / F` such that `S / F` is algebraic, the `E(S) / E` and
1020+
`S / F` have the same separable degree. -/
1021+
theorem IntermediateField.sepDegree_adjoin_eq_of_isAlgebraic_of_isPurelyInseparable'
1022+
(S : IntermediateField F K) (halg : Algebra.IsAlgebraic F S) [IsPurelyInseparable F E] :
1023+
sepDegree E (adjoin E (S : Set K)) = sepDegree F S := by
1024+
have := sepDegree_adjoin_eq_of_isAlgebraic_of_isPurelyInseparable E (S : Set K)
1025+
(by rwa [adjoin_self])
1026+
rwa [adjoin_self] at this
1027+
1028+
variable {F K} in
1029+
/-- If `K / E / F` is a field extension tower, such that `E / F` is purely inseparable, then
1030+
for any element `x` of `K` separable over `F`, it has the same minimal polynomials over `F` and
1031+
over `E`. -/
1032+
theorem minpoly.map_eq_of_separable_of_isPurelyInseparable (x : K)
1033+
(hsep : (minpoly F x).Separable) [IsPurelyInseparable F E] :
1034+
(minpoly F x).map (algebraMap F E) = minpoly E x := by
1035+
have hi := hsep.isIntegral
1036+
have hi' : IsIntegral E x := IsIntegral.tower_top hi
1037+
refine eq_of_monic_of_dvd_of_natDegree_le (monic hi') ((monic hi).map (algebraMap F E))
1038+
(dvd_map_of_isScalarTower F E x) (le_of_eq ?_)
1039+
have hsep' := hsep.map_minpoly E
1040+
haveI := (isSeparable_adjoin_simple_iff_separable _ _).2 hsep
1041+
haveI := (isSeparable_adjoin_simple_iff_separable _ _).2 hsep'
1042+
have halg := IsSeparable.isAlgebraic F F⟮x⟯
1043+
rw [Polynomial.natDegree_map, ← adjoin.finrank hi, ← adjoin.finrank hi',
1044+
← finSepDegree_eq_finrank_of_isSeparable F _, ← finSepDegree_eq_finrank_of_isSeparable E _,
1045+
finSepDegree_eq _ _ halg, finSepDegree_eq _ _ (IsSeparable.isAlgebraic E _),
1046+
sepDegree_adjoin_eq_of_isAlgebraic_of_isPurelyInseparable E _ halg]
1047+
1048+
variable {F} in
1049+
/-- If `E / F` is a purely inseparable field extension, `f` is a separable irreducible polynomial
1050+
over `F`, then it is also irreducible over `E`. -/
1051+
theorem Polynomial.Separable.map_irreducible_of_isPurelyInseparable {f : F[X]} (hsep : f.Separable)
1052+
(hirr : Irreducible f) [IsPurelyInseparable F E] : Irreducible (f.map (algebraMap F E)) := by
1053+
let K := AlgebraicClosure E
1054+
obtain ⟨x, hx⟩ := IsAlgClosed.exists_aeval_eq_zero K f
1055+
(natDegree_pos_iff_degree_pos.1 hirr.natDegree_pos).ne'
1056+
have ha : Associated f (minpoly F x) := by
1057+
have := isUnit_C.2 (leadingCoeff_ne_zero.2 hirr.ne_zero).isUnit.inv
1058+
exact ⟨this.unit, by rw [IsUnit.unit_spec, minpoly.eq_of_irreducible hirr hx]⟩
1059+
have ha' : Associated (f.map (algebraMap F E)) ((minpoly F x).map (algebraMap F E)) :=
1060+
ha.map (mapRingHom (algebraMap F E)).toMonoidHom
1061+
have heq := minpoly.map_eq_of_separable_of_isPurelyInseparable E x (ha.separable hsep)
1062+
rw [ha'.irreducible_iff, heq]
1063+
exact minpoly.irreducible (AlgebraicClosure.isAlgebraic E x).isIntegral
1064+
9321065
end TowerLaw

Mathlib/FieldTheory/SeparableClosure.lean

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,3 +380,15 @@ theorem insepDegree_bot' : insepDegree F (⊥ : IntermediateField E K) = insepDe
380380
end Tower
381381

382382
end IntermediateField
383+
384+
/-- A separable extension has separable degree equal to degree. -/
385+
theorem IsSeparable.sepDegree_eq [IsSeparable F E] : sepDegree F E = Module.rank F E := by
386+
rw [sepDegree, (separableClosure.eq_top_iff F E).2 ‹_›, IntermediateField.rank_top']
387+
388+
/-- A separable extension has inseparable degree one. -/
389+
theorem IsSeparable.insepDegree_eq [IsSeparable F E] : insepDegree F E = 1 := by
390+
rw [insepDegree, (separableClosure.eq_top_iff F E).2 ‹_›, IntermediateField.rank_top]
391+
392+
/-- A separable extension has finite inseparable degree one. -/
393+
theorem IsSeparable.finInsepDegree_eq [IsSeparable F E] : finInsepDegree F E = 1 :=
394+
Cardinal.one_toNat ▸ congr(Cardinal.toNat $(insepDegree_eq F E))

Mathlib/FieldTheory/SeparableDegree.lean

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -599,6 +599,8 @@ theorem finSepDegree_eq_finrank_of_isSeparable [IsSeparable F E] :
599599
rwa [finSepDegree_mul_finSepDegree_of_isAlgebraic F L M (Algebra.IsAlgebraic.of_finite L M),
600600
FiniteDimensional.finrank_mul_finrank F L M] at heq
601601

602+
alias _root_.IsSeparable.finSepDegree_eq := finSepDegree_eq_finrank_of_isSeparable
603+
602604
/-- If `E / F` is a finite extension, then its separable degree is equal to its degree if and
603605
only if it is a separable extension. -/
604606
theorem finSepDegree_eq_finrank_iff [FiniteDimensional F E] :

0 commit comments

Comments
 (0)