A continuous injection with principal-unit values is -linear, so
ProvedLeopoldt.natCast_le_rank_of_continuous_injectiveLet be a prime and a number field, with semilocal units (Section 1.1 of the source). Write
for the product of the principal units of the completions at the primes above . Each factor is a pro- group and hence a topological -module, with for integers (Definitions.Def_OneUnits, switched on at the primes above by Definitions.Def_PrimesOverNorm).
Suppose is a continuous injective group homomorphism all of whose values are principal units, that is, for every and every . Then
The reason is that such an is automatically -linear: for and integers , continuity gives . So is an injective -linear map from the free module into , and the rank of the source is at most the rank of the target.
This is the bridge between the two ways of measuring -ranks in this mission: the definition file measures the rank of the -adic closure from below by continuous injections of (zpRankBelow), while the structure theory of local units is naturally expressed through Module.rank ℤ_[p]. It reduces the open lemma Leopoldt.le_finrank_of_continuous_injective_semilocalUnits, once the values are moved into the principal units by a finite power, to the statement .
Formalization Note is Multiplicative (Fin n → ℤ_[p]) with the product topology, and the target module is ∀ v : PrimesOver p F, Additive (oneUnits (v.1.adicCompletion F)), whose ℤ_[p]-module structure is OneUnits.instModule from the definition files. The principal-unit hypothesis is stated on the coordinates of viewed in the completion . The conclusion is an inequality of cardinals, since Module.rank is a cardinal; is in fact finitely generated, but that is not assumed here.
import Definitions.Def_PrimesOverNorm open NumberField
namespace Leopoldt
theorem natCast_le_rank_of_continuous_injective (p : ℕ) [Fact p.Prime]
(F : Type*) [Field F] [NumberField F] {n : ℕ}
(f : Multiplicative (Fin n → ℤ_[p]) →* SemilocalUnits p F)
(hf : Function.Injective f) (hc : Continuous f)
(h1 : ∀ x (v : PrimesOver p F),
‖((f x v : v.1.adicCompletionIntegers F) : v.1.adicCompletion F) - 1‖ < 1) :
(n : Cardinal) ≤ Module.rank ℤ_[p]
(∀ v : PrimesOver p F, Additive (oneUnits (v.1.adicCompletion F))) := by sorry
end Leopoldt