/- Copyright (c) 2026 LANA Project. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: LANA Project -/ import Iut.Concrete.ThetaLocalConstruct.Ordp /-! # Conjugate places have equal local invariants For number fields `k โІ K` with `K/k` Galois, the Galois group `Gal(K/k)` acts transitively on the places of `K` over a given finite place `w` of `k`. Conjugate places therefore have the same local invariants over `โ„š`: * `Iut.ramIdx_eq_of_liesOver`, `Iut.inertDeg_eq_of_liesOver`: the ramification index `e_v` and the residue degree `f_v` over the rational prime; * `Iut.ordDifferent_eq_of_liesOver`, `Iut.differentExponent_eq_of_liesOver`: the exponent `ord_v(๐”ก_{K/โ„š})` of the different and the different exponent `d_v = ord_v(๐”ก_{K/โ„š})/e_v`, since the different ideal `๐”ก_{K/โ„š}` is stable under every automorphism of `K` (`Iut.smul_differentIdeal`: the trace form is invariant). This is the input of the averaging over the section `V โІ V(K)` (IUT III, Remark 3.1.1(ii)): for `K/F_mod` Galois (IUT I, Remark 3.1.5), the local different `d_v` of IUT IV, Proposition 1.3 at the place `v โˆˆ V` over `w โˆˆ V_mod` is the common value at all the places of `K` over `w`. -/ namespace Iut open NumberField IsDedekindDomain open scoped Pointwise nonZeroDivisors variable {k K : Type*} [Field k] [NumberField k] [Field K] [NumberField K] [Algebra k K] /-! ### Invariance of the different ideal -/ section Different /-- The membership predicate of the inverse of the dual of `๐“ž_K`, i.e. of the different `๐”ก_{K/โ„š}` (`coeIdeal_differentIdeal`), is preserved by the automorphisms of `K`. -/ lemma mem_inv_dual_one_map (ฯ„ : K โ‰ƒโ‚[โ„š] K) {z : K} (hz : z โˆˆ (FractionalIdeal.dual โ„ค โ„š (1 : FractionalIdeal (๐“ž K)โฐ K))โปยน) : ฯ„ z โˆˆ (FractionalIdeal.dual โ„ค โ„š (1 : FractionalIdeal (๐“ž K)โฐ K))โปยน := by have h1 : (1 : FractionalIdeal (๐“ž K)โฐ K) โ‰  0 := one_ne_zero have hd : FractionalIdeal.dual โ„ค โ„š (1 : FractionalIdeal (๐“ž K)โฐ K) โ‰  0 := FractionalIdeal.dual_ne_zero โ„ค โ„š h1 -- the automorphisms preserve `๐“ž_K` have hint : โˆ€ (ฯ„ : K โ‰ƒโ‚[โ„š] K) (a : K), a โˆˆ (1 : FractionalIdeal (๐“ž K)โฐ K) โ†’ ฯ„ a โˆˆ (1 : FractionalIdeal (๐“ž K)โฐ K) := by intro ฯ„ a ha obtain โŸจb, rflโŸฉ := FractionalIdeal.mem_one_iff _ |>.mp ha refine FractionalIdeal.mem_one_iff _ |>.mpr โŸจโŸจฯ„ b, ?_โŸฉ, rflโŸฉ exact (b.2.map (ฯ„.toAlgHom.restrictScalars โ„ค)) -- the automorphisms preserve the dual have hdual : โˆ€ (ฯ„ : K โ‰ƒโ‚[โ„š] K) (y : K), y โˆˆ FractionalIdeal.dual โ„ค โ„š (1 : FractionalIdeal (๐“ž K)โฐ K) โ†’ ฯ„ y โˆˆ FractionalIdeal.dual โ„ค โ„š (1 : FractionalIdeal (๐“ž K)โฐ K) := by intro ฯ„ y hy rw [FractionalIdeal.mem_dual h1] at hy โŠข intro a ha have := hy (ฯ„.symm a) (hint ฯ„.symm a ha) rw [Algebra.traceForm_apply] at this โŠข rwa [โ† Algebra.trace_eq_of_algEquiv ฯ„, map_mul, AlgEquiv.apply_symm_apply] at this rw [FractionalIdeal.mem_inv_iff hd] at hz โŠข intro y hy have := hint ฯ„ _ (hz (ฯ„.symm y) (hdual ฯ„.symm y hy)) rwa [map_mul, AlgEquiv.apply_symm_apply] at this /-- **The different `๐”ก_{K/โ„š}` is Galois-stable**: `ฯƒยท๐”ก = ๐”ก` for `ฯƒ โˆˆ Gal(K/k)`. -/ theorem smul_differentIdeal [IsGalois k K] (ฯƒ : K โ‰ƒโ‚[k] K) : ฯƒ โ€ข differentIdeal โ„ค (๐“ž K) = differentIdeal โ„ค (๐“ž K) := by have key : โˆ€ ฯƒ : K โ‰ƒโ‚[k] K, โˆ€ x โˆˆ differentIdeal โ„ค (๐“ž K), ฯƒ โ€ข x โˆˆ differentIdeal โ„ค (๐“ž K) := by intro ฯƒ x hx have hx' : (x : K) โˆˆ (FractionalIdeal.dual โ„ค โ„š (1 : FractionalIdeal (๐“ž K)โฐ K))โปยน := by rw [โ† coeIdeal_differentIdeal โ„ค โ„š K (๐“ž K)] exact (FractionalIdeal.mem_coeIdeal _).mpr โŸจx, hx, rflโŸฉ have := mem_inv_dual_one_map (ฯƒ.restrictScalars โ„š) hx' rw [โ† coeIdeal_differentIdeal โ„ค โ„š K (๐“ž K)] at this obtain โŸจy, hy, hyxโŸฉ := (FractionalIdeal.mem_coeIdeal _).mp this have : y = ฯƒ โ€ข x := Subtype.ext hyx rwa [โ† this] have hle : โˆ€ ฯƒ : K โ‰ƒโ‚[k] K, ฯƒ โ€ข differentIdeal โ„ค (๐“ž K) โ‰ค differentIdeal โ„ค (๐“ž K) := by intro ฯƒ rw [Ideal.pointwise_smul_def, Ideal.map_le_iff_le_comap] exact fun x hx => key ฯƒ x hx refine le_antisymm (hle ฯƒ) ?_ calc differentIdeal โ„ค (๐“ž K) = ฯƒ โ€ข ฯƒโปยน โ€ข differentIdeal โ„ค (๐“ž K) := by rw [smul_inv_smul] _ โ‰ค ฯƒ โ€ข differentIdeal โ„ค (๐“ž K) := smul_mono_right ฯƒ (hle ฯƒโปยน) end Different /-! ### Conjugate places -/ section Conjugate variable [IsGalois k K] /-- The Galois group acts transitively on the places over `w`: the prime of `v'` is `ฯƒยท๐”ญ_v` for some `ฯƒ โˆˆ Gal(K/k)`. -/ theorem exists_smul_maximalIdeal_eq {w : FinitePlace k} {v v' : FinitePlace K} (hv : FinitePlace.LiesOver v w) (hv' : FinitePlace.LiesOver v' w) : โˆƒ ฯƒ : K โ‰ƒโ‚[k] K, ฯƒ โ€ข v.maximalIdeal.asIdeal = v'.maximalIdeal.asIdeal := by haveI : v.maximalIdeal.asIdeal.LiesOver w.maximalIdeal.asIdeal := hv haveI : v'.maximalIdeal.asIdeal.LiesOver w.maximalIdeal.asIdeal := hv' exact Ideal.exists_smul_eq_of_isGaloisGroup w.maximalIdeal.asIdeal _ _ (K โ‰ƒโ‚[k] K) /-- **Conjugate places have the same different exponent `ord_v(๐”ก_{K/โ„š})`**. -/ theorem ordDifferent_eq_of_liesOver {w : FinitePlace k} {v v' : FinitePlace K} (hv : FinitePlace.LiesOver v w) (hv' : FinitePlace.LiesOver v' w) : ordDifferent K v = ordDifferent K v' := by obtain โŸจฯƒ, hฯƒโŸฉ := exists_smul_maximalIdeal_eq hv hv' have hd : differentIdeal โ„ค (๐“ž K) โ‰  0 := differentIdeal_ne_bot have hcount : โˆ€ u : FinitePlace K, ordDifferent K u = multiplicity u.maximalIdeal.asIdeal (differentIdeal โ„ค (๐“ž K)) := by intro u unfold ordDifferent rw [UniqueFactorizationMonoid.multiplicity_eq_count_normalizedFactors (Ideal.prime_of_isPrime u.maximalIdeal.ne_bot u.maximalIdeal.isPrime).irreducible hd, normalize_eq] rw [hcount, hcount, โ† hฯƒ, โ† multiplicity_map_eq (MulSemiringAction.toRingEquiv (K โ‰ƒโ‚[k] K) (Ideal (๐“ž K)) ฯƒ)] change multiplicity (ฯƒ โ€ข v.maximalIdeal.asIdeal) (ฯƒ โ€ข differentIdeal โ„ค (๐“ž K)) = _ rw [smul_differentIdeal] /-- **Conjugate places have the same ramification index** `e_v` over `โ„š`. -/ theorem ramIdx_eq_of_liesOver {w : FinitePlace k} {v v' : FinitePlace K} (hv : FinitePlace.LiesOver v w) (hv' : FinitePlace.LiesOver v' w) : ramIdx K v = ramIdx K v' := by obtain โŸจฯƒ, hฯƒโŸฉ := exists_smul_maximalIdeal_eq hv hv' unfold ramIdx rw [โ† hฯƒ, Ideal.ramificationIdx_smul] /-- **Conjugate places have the same residue degree** `f_v` over `โ„š`. -/ theorem inertDeg_eq_of_liesOver {w : FinitePlace k} {v v' : FinitePlace K} (hv : FinitePlace.LiesOver v w) (hv' : FinitePlace.LiesOver v' w) : inertDeg K v = inertDeg K v' := by obtain โŸจฯƒ, hฯƒโŸฉ := exists_smul_maximalIdeal_eq hv hv' unfold inertDeg rw [โ† hฯƒ, Ideal.inertiaDeg_smul] /-- **Conjugate places have the same different exponent** `d_v = ord_v(๐”ก_{K/โ„š})/e_v` (IUT IV, Proposition 1.3). -/ theorem differentExponent_eq_of_liesOver {w : FinitePlace k} {v v' : FinitePlace K} (hv : FinitePlace.LiesOver v w) (hv' : FinitePlace.LiesOver v' w) : differentExponent K v = differentExponent K v' := by unfold differentExponent rw [ordDifferent_eq_of_liesOver hv hv', ramIdx_eq_of_liesOver hv hv'] end Conjugate end Iut