Degree formula at a finite place
ProvedNumberField.finsum_finrank_adicCompletion_eq_finrankLet be a finite extension of number fields, let be a finite place of , i.e. a nonzero prime ideal of , and let be the -adic completion of . For each prime of lying over (written ), let be the -adic completion of , regarded as an -algebra via the continuous extension of . Then
This is the fundamental local–global degree identity (equivalently read through the completions). It is what makes local norms of elements coming from multiply up to the global degree, e.g. for .
Formalization Note Mathlib at this revision provides no canonical algebra structure . As in Mathlib's own NumberField.HeightOneSpectrum API (the instance Module.Finite Kv Lw in NumberField/Completion/FinitePlace.lean), the statement takes, for each , an arbitrary -algebra structure on that is continuous (ContinuousSMul) and compatible with (IsScalarTower F F_v K_w). Since is dense in , such a structure is unique, and it exists (the continuous extension of ) exactly when ; so the hypotheses just name the canonical embedding. Primes are the height-one primes of with w.asIdeal.LiesOver v.asIdeal; there are finitely many, and the finite sum/product is written with finsum/finprod so that no finiteness hypothesis is needed.
import Mathlib open NumberField IsDedekindDomain open scoped TensorProduct
namespace NumberField
theorem finsum_finrank_adicCompletion_eq_finrank {F K : Type*} [Field F] [NumberField F] [Field K] [NumberField K] [Algebra F K]
(v : HeightOneSpectrum (𝓞 F))
[∀ w : {w : HeightOneSpectrum (𝓞 K) // w.asIdeal.LiesOver v.asIdeal},
Algebra (v.adicCompletion F) (w.1.adicCompletion K)]
[∀ w : {w : HeightOneSpectrum (𝓞 K) // w.asIdeal.LiesOver v.asIdeal},
ContinuousSMul (v.adicCompletion F) (w.1.adicCompletion K)]
[∀ w : {w : HeightOneSpectrum (𝓞 K) // w.asIdeal.LiesOver v.asIdeal},
IsScalarTower F (v.adicCompletion F) (w.1.adicCompletion K)] :
∑ᶠ w : {w : HeightOneSpectrum (𝓞 K) // w.asIdeal.LiesOver v.asIdeal},
Module.finrank (v.adicCompletion F) (w.1.adicCompletion K) = Module.finrank F K := by sorry
end NumberField