88public import Mathlib.Algebra.Order.Archimedean.Submonoid
99public import Mathlib.LinearAlgebra.FreeModule.IdealQuotient
1010public import Mathlib.NumberTheory.NumberField.InfinitePlace.Embeddings
11+ public import Mathlib.NumberTheory.RamificationInertia.Valuation
1112public import Mathlib.RingTheory.DedekindDomain.AdicValuation
1213public import Mathlib.RingTheory.DedekindDomain.Factorization
1314public import Mathlib.RingTheory.Valuation.Archimedean
@@ -88,8 +89,8 @@ end DVR
8889
8990namespace NumberField
9091
91- variable {K : Type *} [Field K] {R : Type *} [CommRing R] [Algebra R K] [IsDedekindDomain R ]
92- [IsFractionRing R K] (v : HeightOneSpectrum R)
92+ variable {K L : Type *} [Field K] [Field L] [Algebra K L] {R : Type *} [CommRing R] [Algebra R K]
93+ [IsDedekindDomain R] [ IsFractionRing R K] (v : HeightOneSpectrum R)
9394
9495/-- The embedding of a field inside its `adicCompletion` with respect to `v`. -/
9596noncomputable def FinitePlace.embedding : K →+* adicCompletion K v :=
@@ -342,7 +343,7 @@ lemma isFinitePlace_iff [NumberField K] (v : AbsoluteValue K ℝ) :
342343
343344namespace FinitePlace
344345
345- variable [NumberField K]
346+ variable [NumberField K] [NumberField L]
346347
347348instance : FunLike (FinitePlace K) K ℝ where
348349 coe w x := w.1 x
@@ -468,6 +469,26 @@ alias IsDedekindDomain.HeightOneSpectrum.equivHeightOneSpectrum_symm_apply :=
468469@ [deprecated (since := "2026-03-11" )]
469470alias IsDedekindDomain.HeightOneSpectrum.embedding_mul_absNorm := embedding_mul_absNorm
470471
472+ -- TODO: restate in terms of finite places rather than non-trivial prime ideals of the Dedekind
473+ -- domains `𝓞 K` and `𝓞 L` once we have a ramification theory for finite places set up.
474+ -- Note that this will mean `FinitePlace.equivHeightOneSpectrum` no longer appears in the statement.
475+ lemma equivHeightOneSpectrum_symm_apply_algebraMap
476+ (v : HeightOneSpectrum (𝓞 K)) (w : HeightOneSpectrum (𝓞 L)) [w.1 .LiesOver v.1 ] (x : K) :
477+ FinitePlace.equivHeightOneSpectrum.symm w (algebraMap K L x) =
478+ FinitePlace.equivHeightOneSpectrum.symm v x ^
479+ (w.1 .ramificationIdx (𝓞 K) * w.1 .inertiaDeg (𝓞 K)) := by
480+ by_cases hx : x = 0
481+ · rw [hx, map_zero, map_zero, map_zero, zero_pow]
482+ exact (mul_pos (w.asIdeal.ramificationIdx_pos (𝓞 K)) (w.asIdeal.inertiaDeg_pos (𝓞 K))).ne'
483+ simp_rw [NumberField.FinitePlace.equivHeightOneSpectrum_symm_apply,
484+ FinitePlace.norm_embedding, HeightOneSpectrum.adicAbv_def]
485+ rw [← IsDedekindDomain.HeightOneSpectrum.valuation_liesOver L v, map_pow,
486+ Ideal.ramificationIdx'_eq_ramificationIdx v.1 w.1 v.ne_bot,
487+ WithZeroMulInt.toNNReal_neg_apply _ (by simpa), WithZeroMulInt.toNNReal_neg_apply _ (by simpa),
488+ ← Ideal.absNorm_pow_inertiaDeg v.1 w.1 ]
489+ simp only [Nat.cast_pow, NNReal.coe_zpow, ← zpow_natCast, ← zpow_mul]
490+ grind
491+
471492lemma finprod_finitePlace_pow_multiplicity {I : Ideal (𝓞 K)} (hI : I ≠ ⊥) :
472493 ∏ᶠ v : FinitePlace K, v.maximalIdeal.asIdeal ^ multiplicity v.maximalIdeal.asIdeal I = I := by
473494 conv_rhs => rw [← finprod_heightOneSpectrum_pow_multiplicity hI]
@@ -485,7 +506,7 @@ section LiesOver
485506
486507namespace HeightOneSpectrum
487508
488- variable {L : Type *} [NumberField K] [Field L] [ NumberField L] [Algebra K L]
509+ variable [NumberField K] [NumberField L]
489510variable (v : HeightOneSpectrum (𝓞 K)) (w : HeightOneSpectrum (𝓞 L))
490511variable [Algebra (v.adicCompletion K) (w.adicCompletion L)]
491512 [ContinuousSMul (v.adicCompletion K) (w.adicCompletion L)]
0 commit comments