Proved
Leopoldt.rank_oneUnits_le_finrankLet be a prime and a number field. For each prime let be the principal units of the completion, a topological -module by Definitions.Def_OneUnits and Definitions.Def_PrimesOverNorm. Then
This is the structure theory of local units: for each the group is the direct product of its finite torsion subgroup (the -power roots of unity in ) and a free -module of rank , for instance because the -adic logarithm maps a subgroup of finite index isomorphically onto a lattice in ; and the local degrees add up to the global one, , because . Only the resulting inequality is asserted here.
It is the fact behind the bound argument of the mission's definition of the Leopoldt defect: the -rank of the -adic closure of the global units, a subgroup of the semilocal units, never exceeds , which is why zpRankBelow p (finrank ℚ F) measures the true rank. Together with Leopoldt.exists_pow_mem_oneUnits and the bridge Leopoldt.natCast_le_rank_of_continuous_injective it yields Leopoldt.le_finrank_of_continuous_injective_semilocalUnits, the bound needed on the frontier of Remark 1.A.
Formalization Note The rank is Mathlib's Module.rank ℤ_[p], a cardinal, of the product module ∀ v : PrimesOver p F, Additive (oneUnits (v.1.adicCompletion F)), compared with the natural number Module.finrank ℚ F cast to a cardinal. No -algebra structure on the completions is assumed in the statement; a proof through local degrees will have to construct the map or argue through the filtration of the principal units by the -power maps instead.
import Definitions.Def_PrimesOverNorm open NumberField
namespace Leopoldt
theorem rank_oneUnits_le_finrank (p : ℕ) [Fact p.Prime] (F : Type*) [Field F] [NumberField F] :
Module.rank ℤ_[p] (∀ v : PrimesOver p F, Additive (oneUnits (v.1.adicCompletion F)))
≤ Module.finrank ℚ F := by sorry
end Leopoldt