for number fields
ProvedNumberField.exists_algEquiv_tensorProduct_pi_adicCompletionLet 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 the canonical map is an isomorphism of -algebras:
Precisely: there is an -algebra isomorphism with for all (which, together with -linearity, determines ). This is the structural result behind the degree formula and the local–global formulas for norm and trace.
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 exists_algEquiv_tensorProduct_pi_adicCompletion {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)] :
∃ e : v.adicCompletion F ⊗[F] K ≃ₐ[v.adicCompletion F]
((w : {w : HeightOneSpectrum (𝓞 K) // w.asIdeal.LiesOver v.asIdeal}) → w.1.adicCompletion K),
∀ x : K, e (1 ⊗ₜ x) = fun w : {w : HeightOneSpectrum (𝓞 K) // w.asIdeal.LiesOver v.asIdeal} =>
algebraMap K (w.1.adicCompletion K) x := by sorry
end NumberField