@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
4
4
Authors: Jz Pan
5
5
-/
6
6
import Mathlib.FieldTheory.SeparableClosure
7
+ import Mathlib.Algebra.CharP.IntermediateField
7
8
8
9
/-!
9
10
@@ -71,6 +72,9 @@ of fields.
71
72
- `le_perfectClosure_iff`: an intermediate field of `E / F` is contained in the relative perfect
72
73
closure of `F` in `E` if and only if it is purely inseparable over `F`.
73
74
75
+ - `perfectClosure.perfectRing`, `perfectClosure.perfectField`: if `E` is a perfect field, then the
76
+ (relative) perfect closure `perfectClosure F E` is perfect.
77
+
74
78
- `IsPurelyInseparable.injective_comp_algebraMap`: if `E / F` is purely inseparable, then for any
75
79
reduced ring `L`, the map `(E →+* L) → (F →+* L)` induced by `algebraMap F E` is injective.
76
80
In particular, a purely inseparable field extension is an epimorphism in the category of fields.
@@ -84,12 +88,26 @@ of fields.
84
88
and the degree of `(separableClosure F E) / F` are both finite or infinite, and when they are
85
89
finite, they coincide.
86
90
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
88
92
inseparable degree is equal to the (finite) field extension degree.
89
93
90
94
- `Field.lift_sepDegree_mul_lift_sepDegree_of_isAlgebraic`: the separable degrees satisfy the
91
95
tower law: $[ E:F ] _s [ K:E ] _s = [ K:F ] _s$.
92
96
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
+
93
111
## Tags
94
112
95
113
separable degree, degree, separable closure, purely inseparable
@@ -359,6 +377,23 @@ alias AlgEquiv.perfectClosure := perfectClosure.algEquivOfAlgEquiv
359
377
360
378
end map
361
379
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
+
362
397
end perfectClosure
363
398
364
399
section IsPurelyInseparable
@@ -482,6 +517,20 @@ instance instUniqueEmbOfIsPurelyInseparable [IsPurelyInseparable F E] :
482
517
theorem IsPurelyInseparable.finSepDegree_eq_one [IsPurelyInseparable F E] :
483
518
finSepDegree F E = 1 := Nat.card_unique
484
519
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
+
485
534
-- TODO: remove `halg` assumption
486
535
/-- An algebraic extension is purely inseparable if and only if it has finite separable
487
536
degree one. -/
@@ -929,4 +978,88 @@ theorem sepDegree_mul_sepDegree_of_isAlgebraic (K : Type v) [Field K] [Algebra F
929
978
930
979
end Field
931
980
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
+
932
1065
end TowerLaw
0 commit comments