|
| 1 | +/- |
| 2 | +Copyright (c) 2025 Jiedong Jiang. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Jiedong Jiang |
| 5 | +-/ |
| 6 | +module |
| 7 | + |
| 8 | +public import Mathlib.Analysis.Normed.Algebra.Ultra |
| 9 | +public import Mathlib.Analysis.Normed.Unbundled.SpectralNorm |
| 10 | +public import Mathlib.FieldTheory.Minpoly.IsConjRoot |
| 11 | +public import Mathlib.FieldTheory.SeparableDegree |
| 12 | +public import Mathlib.Analysis.Normed.Algebra.Basic |
| 13 | + |
| 14 | +/-! |
| 15 | +# Krasner's Lemma |
| 16 | +
|
| 17 | +In this file, we prove Krasner's lemma. |
| 18 | +
|
| 19 | +## Main definitions |
| 20 | +
|
| 21 | +* `IsKrasner K L` : Given a field extension `L / K` where `L` is a normed field, |
| 22 | +`IsKrasner K L` is the abstraction of the conclusion of Krasner's lemma. That is, `IsKrasner K L` |
| 23 | +means that given two elements `x y : L`, such that `x` is separable over `K`, all conjugate roots |
| 24 | +of `x` live in `L`, `y` is integral over `K`, and the distance between `x` and `y` is less than |
| 25 | +the distance between `x` and any other conjugate root of `x`, then `x` is in the field |
| 26 | +generated by `K` and `y`. |
| 27 | +
|
| 28 | +## Main results |
| 29 | +
|
| 30 | +* `IsKrasner.of_complete` : If `K` is a complete normed field, such that |
| 31 | +the norm of `L` extends the norm on `K`, then `IsKrasner K L` holds for every |
| 32 | +algebraic extension `L` over `K`. This implies the classical Krasner's lemma by taking `L` as the |
| 33 | +separable closure of `K`. |
| 34 | +
|
| 35 | +## Reference |
| 36 | +
|
| 37 | +For the classical statement of Krasner's lemma, please see the |
| 38 | +[wikipedia page](https://en.wikipedia.org/wiki/Krasner%27s_lemma). |
| 39 | +
|
| 40 | +## Tags |
| 41 | +Krasner's lemma, normed field |
| 42 | +-/ |
| 43 | + |
| 44 | +@[expose] public section |
| 45 | + |
| 46 | +open IntermediateField |
| 47 | + |
| 48 | +variable (K L : Type*) [NormedField L] |
| 49 | + |
| 50 | +/-- |
| 51 | +Given a field extension `L / K` where `L` is a normed field, `IsKrasner K L` is the abstraction |
| 52 | +of the conclusion of Krasner's lemma. That is, `IsKrasner K L` means that given two elements |
| 53 | +`x y : L`, such that `x` is separable over `K`, all conjugate roots of `x` live in `L`, |
| 54 | +`y` is integral over `K`, and the distance between `x` and `y` is less than the distance between |
| 55 | +`x` and any other conjugate root of `x`, then `x` is in the field generated by `K` and `y`. |
| 56 | +-/ |
| 57 | +class IsKrasner [Field K] [Algebra K L] : Prop where |
| 58 | + krasner' {x y : L} : IsSeparable K x → ((minpoly K x).map (algebraMap K L)).Splits → |
| 59 | + IsIntegral K y → (∀ x' : L, IsConjRoot K x x' → x ≠ x' → ‖x - y‖ < ‖x - x'‖) → x ∈ K⟮y⟯ |
| 60 | + |
| 61 | +namespace IsKrasner |
| 62 | + |
| 63 | +variable {K L} in |
| 64 | +theorem krasner [Field K] [Algebra K L] |
| 65 | + [IsKrasner K L] {x y : L} (hx : (minpoly K x).Separable) |
| 66 | + (sp : ((minpoly K x).map (algebraMap K L)).Splits) (hy : IsIntegral K y) |
| 67 | + (h : (∀ x' : L, IsConjRoot K x x' → x ≠ x' → ‖x - y‖ < ‖x - x'‖)) : x ∈ K⟮y⟯ := |
| 68 | + IsKrasner.krasner' hx sp hy h |
| 69 | + |
| 70 | +variable [NontriviallyNormedField K] [CompleteSpace K] [IsUltrametricDist K] |
| 71 | + [NormedAlgebra K L] [Algebra.IsAlgebraic K L] |
| 72 | + |
| 73 | +set_option backward.isDefEq.respectTransparency false in |
| 74 | +/-- Krasner's lemma assuming `Normal K L`. -/ |
| 75 | +theorem of_completeSpace_of_normal [Normal K L] : IsKrasner K L where |
| 76 | + krasner' {x} {y} xsep sp yint kr := by |
| 77 | + let z := x - y |
| 78 | + have := IntermediateField.adjoin.finiteDimensional yint |
| 79 | + have : IsUltrametricDist L := IsUltrametricDist.of_normedAlgebra K |
| 80 | + let y' : K⟮y⟯ := IntermediateField.AdjoinSimple.gen K y |
| 81 | + have zsep : IsSeparable K⟮y⟯ z := |
| 82 | + Field.isSeparable_sub (IsSeparable.tower_top K⟮y⟯ xsep) (isSeparable_algebraMap y') |
| 83 | + -- It suffices to show that `z = x - y ∈ K⟮y⟯`. |
| 84 | + suffices z ∈ K⟮y⟯ by simpa [z, y'] using add_mem this y'.2 |
| 85 | + have : z ∈ K⟮y⟯ ↔ z ∈ (⊥ : Subalgebra K⟮y⟯ L) := by simp [Algebra.mem_bot] |
| 86 | + rw [this] |
| 87 | + -- Suppose not, then there exists nontrivial Galois conjugates `z'` of `z` over `K⟮y⟯` in `L`. |
| 88 | + by_contra hz |
| 89 | + obtain ⟨z', hne, h1⟩ := (notMem_iff_exists_ne_and_isConjRoot zsep |
| 90 | + (minpoly_sub_algebraMap_splits y' (IsIntegral.minpoly_splits_tower_top |
| 91 | + xsep.isIntegral sp))).mp hz |
| 92 | + obtain ⟨σ, hσ⟩ := isConjRoot_iff_exists_algEquiv.mp h1 |
| 93 | + apply_fun σ.symm at hσ |
| 94 | + simp only [AlgEquiv.symm_apply_apply] at hσ |
| 95 | + -- However, `‖z - z'‖ ≤ max ‖z‖ ‖z'‖ = ‖z‖ = ‖x - y‖ < ‖y - y'‖ = ‖z - z'‖`, where `y' = x - z`. |
| 96 | + -- This is a contradiction. |
| 97 | + have : ‖z - z'‖ < ‖z - z'‖ := |
| 98 | + calc |
| 99 | + _ ≤ max ‖z‖ ‖z'‖ := by |
| 100 | + simpa [norm_neg, sub_eq_add_neg] using (IsUltrametricDist.norm_add_le_max z (- z')) |
| 101 | + _ ≤ ‖x - y‖ := by |
| 102 | + simp only [NormedAlgebra.norm_eq_spectralNorm K, hσ, sup_le_iff] |
| 103 | + rw [← AlgEquiv.restrictScalars_apply K, |
| 104 | + ← spectralNorm_eq_of_equiv (σ.symm.restrictScalars K)] |
| 105 | + simp [z] |
| 106 | + _ < ‖x - (z' + y)‖ := by |
| 107 | + apply kr (z' + y) |
| 108 | + · apply IsConjRoot.of_isScalarTower (L := K⟮y⟯) xsep.isIntegral |
| 109 | + simpa [z, y'] using IsConjRoot.add_algebraMap y' h1 |
| 110 | + · simpa [z, sub_eq_iff_eq_add] using hne |
| 111 | + _ = ‖z - z'‖ := by congr 1; ring |
| 112 | + simp [lt_self_iff_false] at this |
| 113 | + |
| 114 | +set_option backward.isDefEq.respectTransparency false in |
| 115 | +/-- |
| 116 | +If `K` is a complete nontrivially normed field and `L` is an algebraic extension of `K` |
| 117 | +such that the norm of `L` extends the norm on `K`, then `IsKrasner K L` holds. |
| 118 | +This corresponds to the classical Krasner's lemma. |
| 119 | +-/ |
| 120 | +instance of_completeSpace : IsKrasner K L where |
| 121 | + krasner' {x} {y} xsep sp yint kr := by |
| 122 | + -- Reduce to the case `L = algebraic closure of K` to apply the previous lemma. |
| 123 | + let C := AlgebraicClosure K |
| 124 | + let : NontriviallyNormedField C := spectralNorm.nontriviallyNormedField K C |
| 125 | + let : NormedAlgebra K C := spectralNorm.normedAlgebra K C |
| 126 | + let iL : L →ₐ[K] C := IsAlgClosed.lift |
| 127 | + algebraize [iL.toRingHom] |
| 128 | + let : NormedAlgebra L C := spectralNorm.normedAlgebra' K L C |
| 129 | + let := IsKrasner.of_completeSpace_of_normal K C |
| 130 | + -- The norm on `L` is compatible with the norm on the algebraic closure of `K`, |
| 131 | + -- this gives the result. |
| 132 | + have norm_iL (x : L) : ‖iL x‖ = ‖x‖ := norm_algebraMap' _ _ |
| 133 | + suffices this : iL x ∈ K⟮iL y⟯ by |
| 134 | + simpa [← Set.image_singleton, ← IntermediateField.adjoin_map] using this |
| 135 | + refine IsKrasner.krasner ((xsep.map _ iL.injective).of_dvd dvd_rfl) ?_ (yint.map iL) ?_ |
| 136 | + · exact Polynomial.Splits.of_dvd (sp.of_isScalarTower C) |
| 137 | + (Polynomial.map_ne_zero (minpoly.ne_zero xsep.isIntegral)) |
| 138 | + (Polynomial.map_dvd _ (by simpa using minpoly.dvd_map_of_isScalarTower' K K C x)) |
| 139 | + · intros xC' hx' hne |
| 140 | + have : xC' ∈ (minpoly K x).rootSet C := by |
| 141 | + rwa [isConjRoot_iff_mem_minpoly_rootSet (xsep.isIntegral.map _), |
| 142 | + minpoly.algHom_eq iL iL.injective x] at hx' |
| 143 | + simp only [← sp.image_rootSet iL, Set.mem_image] at this |
| 144 | + obtain ⟨c, hc, rfl⟩ := this |
| 145 | + rw [← isConjRoot_iff_mem_minpoly_rootSet xsep.isIntegral] at hc |
| 146 | + simpa [norm_iL, ← map_sub] using kr c hc (fun h ↦ (iff_false_intro hne).mp (congrArg iL h)) |
| 147 | + |
| 148 | +end IsKrasner |
0 commit comments