Leopoldt's conjecture via Galois conjugates of a Minkowski unit
ProvedLeopoldt.leopoldtConjecture_iff_exists_linearIndependent_log_conjLet be a finite Galois extension with group , a prime, and the unit rank of . Let be a Minkowski unit: its conjugates generate a subgroup of finite index in (such units exist by NumberField.Units.exists_minkowskiUnit). Assume every conjugate lies in the logarithm ball at every prime :
Write . Then Leopoldt's conjecture holds for if and only if one can pick automorphisms such that
are linearly independent over .
Since the conjugates of satisfy at least one relation (their product is the norm ), one can at most hope for independent ones; the theorem says Leopoldt's conjecture is exactly the statement that the -adic logarithms of the conjugates of a Minkowski unit have the maximal possible -rank . This is the starting point of Ax's and Brumer's treatment of the abelian case, where the -rank is then computed via the group determinant of . The Galois action here is = image of under the ring automorphism of induced by .
import Definitions.Def_PadicLog open NumberField
theorem Leopoldt.leopoldtConjecture_iff_exists_linearIndependent_log_conj (p : ℕ) [Fact p.Prime]
(K : Type*) [Field K] [NumberField K] [IsGalois ℚ K] (ε : (𝓞 K)ˣ)
(hε : (Subgroup.closure (Set.range fun σ : K ≃ₐ[ℚ] K =>
_root_.Units.map (RingOfIntegers.mapRingEquiv σ.toRingEquiv).toMonoidHom ε)).FiniteIndex)
(hball : ∀ (σ : K ≃ₐ[ℚ] K) (v : Leopoldt.PrimesOver p K),
‖((Leopoldt.diagonalUnits p K
(_root_.Units.map (RingOfIntegers.mapRingEquiv σ.toRingEquiv).toMonoidHom ε) v :
v.1.adicCompletionIntegers K) : v.1.adicCompletion K) - 1‖ ≤
‖((p : ℕ) : v.1.adicCompletion K)‖ ^ 2) :
Leopoldt.LeopoldtConjecture p K ↔
∃ s : Fin (NumberField.Units.rank K) → (K ≃ₐ[ℚ] K),
LinearIndependent ℤ_[p] fun (i : Fin (NumberField.Units.rank K))
(v : Leopoldt.PrimesOver p K) =>
PadicLog.log (p := p)
((Leopoldt.diagonalUnits p K
(_root_.Units.map (RingOfIntegers.mapRingEquiv (s i).toRingEquiv).toMonoidHom ε) v :
v.1.adicCompletionIntegers K) : v.1.adicCompletion K) := by sorry