Documentation

TauCeti.NumberTheory.Padics.PrincipalUnits

Principal unit groups 1 + p^f ℤ_p, their closed subgroups, and pro-p subgroups of ℤ_pˣ #

For a prime p and f : ℕ, the principal unit group of level f is U^(f) = 1 + p^f ℤ_p ≤ ℤ_pˣ, the kernel of reduction modulo p ^ f on units. The groups U^(f) are open, closed, decreasing, with trivial intersection, and they form a neighbourhood basis of 1 in ℤ_pˣ; the index of U^(f) in ℤ_pˣ is Euler's totient φ(p ^ f).

The main results are about the structure of these groups as topological groups. Raising to the p ^ k-th power moves an element of exact level f (in U^(f) but not in U^(f+1)) to exact level f + k, provided f ≥ 1, and f ≥ 2 when p = 2 (the lifting-the-exponent step, read off from Mathlib's expansion (1 + p^f x)^(p^k) = 1 + p^(f+k) (x + p y), ZMod.exists_one_add_mul_pow_prime_pow_eq; for p = 2 and f = 1 it fails, since (-1)^2 = 1). Hence an element of exact level f generates each finite quotient U^(f) / U^(f+k), which is cyclic of order p ^ k, so the closed subgroup it generates is all of U^(f): the groups U^(f) are procyclic. Consequently every nontrivial closed subgroup of 1 + pℤ_p (of 1 + 4ℤ_2 when p = 2) is one of the U^(f), and f is determined by the subgroup through its index.

The case p = 2 is the input to the description of all closed subgroups of ℤ_2ˣ, which are sorted by how they sit over {±1} inside ℤ_2ˣ = {±1} × (1 + 4ℤ_2).

The filtration also identifies the pro-p subgroups of the profinite group ℤ_pˣ: they are exactly the subgroups of 1 + pℤ_p. Every U^(f) with f ≥ 1 is pro-p, because its finite quotients U^(f) / U^(f+k) have order p ^ k, and a pro-p subgroup has trivial image in the quotient ℤ_pˣ / (1 + pℤ_p) of order p - 1. For p = 2 the principal unit group 1 + 2ℤ_2 is all of ℤ_2ˣ, so every subgroup of ℤ_2ˣ is pro-2.

Main declarations #

References #

noncomputable def TauCeti.unitsPrincipal (p : ℕ) [hp : Fact (Nat.Prime p)] (f : ℕ) :

The principal unit group of level f, U^(f) = 1 + p^f ℤ_p: the kernel of reduction modulo p ^ f on the units of ℤ_p. At f = 0 it is all of ℤ_pˣ.

Equations
Instances For
    @[simp]

    A unit lies in U^(f) iff it reduces to 1 modulo p ^ f.

    theorem TauCeti.mem_unitsPrincipal_iff {p : ℕ} [hp : Fact (Nat.Prime p)] {f : ℕ} {u : ℤ_[p]ˣ} :
    u ∈ unitsPrincipal p f ↔ ↑p ^ f ∣ ↑u - 1

    u ∈ U^(f) iff u ≡ 1 mod p ^ f.

    theorem TauCeti.mem_unitsPrincipal_iff_norm {p : ℕ} [hp : Fact (Nat.Prime p)] {f : ℕ} {u : ℤ_[p]ˣ} :
    u ∈ unitsPrincipal p f ↔ ‖↑u - 1‖ ≤ ↑p ^ (-↑f)

    u ∈ U^(f) iff ‖u - 1‖ ≤ p ^ (-f).

    u ∈ U^(1) iff u ≡ 1 mod p, read in ℤ/pℤ.

    u ∈ U^(1) iff u reduces to 1 in the residue field of ℤ_p.

    noncomputable def TauCeti.unitsPrincipalMk {p : ℕ} [hp : Fact (Nat.Prime p)] {f : ℕ} (hf : f ≠ 0) {v : ℤ_[p]} (hv : ↑p ^ f ∣ v - 1) :

    The principal unit of level f ≠ 0 with a prescribed value: for v ≡ 1 mod p ^ f, the unit v of ℤ_p, as an element of U^(f).

    Equations
    Instances For
      @[simp]
      theorem TauCeti.coe_unitsPrincipalMk {p : ℕ} [hp : Fact (Nat.Prime p)] {f : ℕ} (hf : f ≠ 0) {v : ℤ_[p]} (hv : ↑p ^ f ∣ v - 1) :
      ↑↑(unitsPrincipalMk hf hv) = v

      The principal unit group 1 + pℤ_p is the kernel of reduction on units.

      The principal unit groups decrease with the level.

      No principal unit group is trivial: 1 + p ^ max f 1 is an element of U^(f) other than 1.

      theorem TauCeti.isOpen_unitsPrincipal (p : ℕ) [hp : Fact (Nat.Prime p)] (f : ℕ) :

      Every principal unit group is open: it is the kernel of a continuous map to a discrete group.

      Every principal unit group is closed: it is the kernel of a continuous map to a discrete group.

      The principal unit groups are compact, being closed in the compact group ℤ_pˣ.

      @[simp]
      theorem TauCeti.iInf_unitsPrincipal_eq_bot (p : ℕ) [hp : Fact (Nat.Prime p)] :
      ⨅ (f : ℕ), unitsPrincipal p f = ⊥

      The principal unit groups have trivial intersection: U^(∞) = {1}.

      theorem TauCeti.exists_mem_unitsPrincipal_and_notMem_succ {p : ℕ} [hp : Fact (Nat.Prime p)] {u : ℤ_[p]ˣ} (hu : u ≠ 1) :
      ∃ (f : ℕ), u ∈ unitsPrincipal p f ∧ u ∉ unitsPrincipal p (f + 1)

      Every unit u ≠ 1 has an exact level: a f with u ∈ U^(f) but u ∉ U^(f+1), namely the p-adic valuation of u - 1.

      theorem TauCeti.hasBasis_nhds_one_unitsPrincipal (p : ℕ) [hp : Fact (Nat.Prime p)] :
      (nhds 1).HasBasis (fun (x : ℕ) => True) fun (f : ℕ) => ↑(unitsPrincipal p f)

      The principal unit groups form a neighbourhood basis of 1 in ℤ_pˣ.

      Indices #

      @[simp]
      theorem TauCeti.index_unitsPrincipal (p : ℕ) [hp : Fact (Nat.Prime p)] (f : ℕ) :

      [ℤ_pˣ : U^(f)] = φ(p ^ f): reduction modulo p ^ f is surjective on units.

      theorem TauCeti.index_unitsPrincipal_of_pos (p : ℕ) [hp : Fact (Nat.Prime p)] {f : ℕ} (hf : 0 < f) :
      (unitsPrincipal p f).index = p ^ (f - 1) * (p - 1)

      [ℤ_pˣ : U^(f)] = p ^ (f - 1) * (p - 1) for f ≥ 1.

      [ℤ_2ˣ : U^(f)] = 2 ^ (f - 1), including the degenerate levels f = 0, 1 of index 1.

      @[simp]

      The dyadic filtration starts at level 2: U^(1) = 1 + 2ℤ_2 is all of ℤ_2ˣ.

      -1 ∈ U^(f) in ℤ_2ˣ iff f ≤ 1: -1 ≡ 1 mod 2 ^ f iff 2 ^ f ∣ 2.

      U^(2) = 1 + 4ℤ_2 has index 2 in ℤ_2ˣ and does not contain -1, so a dyadic unit u lies outside 1 + 4ℤ_2 iff -u lies inside: u ≡ 1 or u ≡ -1 mod 4, and not both.

      theorem TauCeti.notMem_unitsPrincipal_two_of_neg_mem {f : ℕ} (hf : 2 ≤ f) {u : ℤ_[2]ˣ} (hu : -u ∈ unitsPrincipal 2 f) :
      u ∉ unitsPrincipal 2 f

      For f ≥ 2, a dyadic unit and its negative are never both in U^(f).

      theorem TauCeti.relIndex_unitsPrincipal (p : ℕ) [hp : Fact (Nat.Prime p)] {f : ℕ} (hf : 0 < f) (k : ℕ) :

      [U^(f) : U^(f+k)] = p ^ k for f ≥ 1.

      theorem TauCeti.inv_mul_mem_unitsPrincipal_two_succ {f : ℕ} (hf : 0 < f) {u x : ℤ_[2]ˣ} (hu : u ∈ unitsPrincipal 2 f) (hu' : u ∉ unitsPrincipal 2 (f + 1)) (hx : x ∈ unitsPrincipal 2 f) (hx' : x ∉ unitsPrincipal 2 (f + 1)) :

      At p = 2, two elements of exact level f ≥ 1 are congruent modulo U^(f+1): the quotient U^(f) / U^(f+1) has order 2.

      Lifting the exponent #

      theorem TauCeti.pow_pow_mem_unitsPrincipal {p : ℕ} [hp : Fact (Nat.Prime p)] {f : ℕ} (hf : 0 < f) {u : ℤ_[p]ˣ} (hu : u ∈ unitsPrincipal p f) (k : ℕ) :
      u ^ p ^ k ∈ unitsPrincipal p (f + k)

      For u ≡ 1 mod p^f with f ≥ 1, u ^ (p ^ k) ≡ 1 mod p^(f+k).

      theorem TauCeti.pow_pow_notMem_unitsPrincipal {p : ℕ} [hp : Fact (Nat.Prime p)] {f : ℕ} (hf : 0 < f) (hf₂ : p = 2 → 2 ≤ f) {u : ℤ_[p]ˣ} (hu : u ∈ unitsPrincipal p f) (hu' : u ∉ unitsPrincipal p (f + 1)) (k : ℕ) :
      u ^ p ^ k ∉ unitsPrincipal p (f + k + 1)

      For u of exact level f, that is u ≡ 1 mod p^f but u ≢ 1 mod p^(f+1), the power u ^ (p ^ k) is not ≡ 1 mod p^(f+k+1), provided f ≥ 1, and f ≥ 2 when p = 2; together with pow_pow_mem_unitsPrincipal, it has exact level f + k. This is where the level restriction enters: (1 + p^f x)^(p^k) = 1 + p^(f+k) (x + p y) needs p^(f+2) ∣ p^(fp).

      Procyclicity #

      theorem TauCeti.exists_zpow_inv_mul_mem_unitsPrincipal {p : ℕ} [hp : Fact (Nat.Prime p)] {f : ℕ} (hf : 0 < f) (hf₂ : p = 2 → 2 ≤ f) {u : ℤ_[p]ˣ} (hu : u ∈ unitsPrincipal p f) (hu' : u ∉ unitsPrincipal p (f + 1)) {x : ℤ_[p]ˣ} (hx : x ∈ unitsPrincipal p f) (k : ℕ) :
      ∃ (n : ℤ), (u ^ n)⁻¹ * x ∈ unitsPrincipal p (f + k)

      An element u of exact level f generates U^(f) modulo every U^(f+k): each x ∈ U^(f) is congruent to a power of u modulo U^(f+k). This is the finite-level form of the procyclicity of U^(f); the quotient U^(f) / U^(f+k) is cyclic of order p ^ k generated by the class of u.

      theorem TauCeti.topologicalClosure_zpowers_eq_unitsPrincipal {p : ℕ} [hp : Fact (Nat.Prime p)] {f : ℕ} (hf : 0 < f) (hf₂ : p = 2 → 2 ≤ f) {u : ℤ_[p]ˣ} (hu : u ∈ unitsPrincipal p f) (hu' : u ∉ unitsPrincipal p (f + 1)) :

      An element of exact level f topologically generates U^(f), provided f ≥ 1, and f ≥ 2 when p = 2.

      theorem TauCeti.exists_mem_unitsPrincipal_and_notMem_succ_of_pos (p : ℕ) [hp : Fact (Nat.Prime p)] {f : ℕ} (hf : 0 < f) :
      ∃ u ∈ unitsPrincipal p f, u ∉ unitsPrincipal p (f + 1)

      Every positive level f is the exact level of some unit, namely 1 + p ^ f.

      theorem TauCeti.infinite_unitsPrincipal (p : ℕ) [hp : Fact (Nat.Prime p)] (f : ℕ) :

      Every principal unit group U^(f) is infinite: for each k, it contains a unit of exact level f + k + 1, and units of distinct exact levels are distinct.

      theorem TauCeti.exists_topologicalClosure_zpowers_eq_unitsPrincipal {p : ℕ} [hp : Fact (Nat.Prime p)] {f : ℕ} (hf : 0 < f) (hf₂ : p = 2 → 2 ≤ f) :

      The principal unit group U^(f) is procyclic for f ≥ 1, and f ≥ 2 when p = 2: it is the closed subgroup generated by 1 + p ^ f.

      theorem TauCeti.not_isOfFinOrder_of_mem_unitsPrincipal {p : ℕ} [hp : Fact (Nat.Prime p)] {f : ℕ} (hf : 0 < f) (hf₂ : p = 2 → 2 ≤ f) {u : ℤ_[p]ˣ} (hu : u ∈ unitsPrincipal p f) (hu1 : u ≠ 1) :

      A principal unit u ≠ 1 of level f ≥ 1, with f ≥ 2 when p = 2, has infinite order.

      The subgroup of p-th powers #

      @[simp]
      theorem TauCeti.map_powMonoidHom_unitsPrincipal {p : ℕ} [hp : Fact (Nat.Prime p)] {f : ℕ} (hf : 0 < f) (hf₂ : p = 2 → 2 ≤ f) :

      (U^(f))^p = U^(f+1): the p-th powers of the principal units of level f are exactly the principal units of level f + 1, for f ≥ 1, and f ≥ 2 when p = 2.

      theorem TauCeti.relIndex_map_powMonoidHom_unitsPrincipal {p : ℕ} [hp : Fact (Nat.Prime p)] {f : ℕ} (hf : 0 < f) (hf₂ : p = 2 → 2 ≤ f) :

      (U^(f) : (U^(f))^p) = p, for f ≥ 1, and f ≥ 2 when p = 2.

      The closed subgroups of 1 + p ℤ_p #

      theorem TauCeti.unitsPrincipal_inj {p : ℕ} [hp : Fact (Nat.Prime p)] {f g : ℕ} (hf : 0 < f) (hg : 0 < g) :

      The level of a principal unit group is determined by the group, through its index, once the level is positive (at p = 2 the levels 0 and 1 both give all of ℤ_2ˣ).

      For odd p the level is determined by the group at every level, including 0: the index of U^(f) is 1 for f = 0 and p ^ (f - 1) * (p - 1) ≥ 2 for f ≥ 1.

      theorem TauCeti.exists_eq_unitsPrincipal_of_isClosed {p : ℕ} [hp : Fact (Nat.Prime p)] {f₀ : ℕ} (hf₀ : 0 < f₀) (hf₀₂ : p = 2 → 2 ≤ f₀) {A : Subgroup ℤ_[p]ˣ} (hA : IsClosed ↑A) (hle : A ≤ unitsPrincipal p f₀) (hA' : A ≠ ⊥) :
      ∃ (f : ℕ), f₀ ≤ f ∧ A = unitsPrincipal p f

      Every nontrivial closed subgroup of U^(f₀) is a principal unit group U^(f) with f ≥ f₀, provided f₀ ≥ 1, and f₀ ≥ 2 when p = 2. In particular the nontrivial closed subgroups of 1 + pℤ_p for odd p, and of 1 + 4ℤ_2, are exactly the 1 + p^f ℤ_p.

      theorem TauCeti.exists_topologicalClosure_zpowers_eq_of_isClosed_of_le_unitsPrincipal {p : ℕ} [hp : Fact (Nat.Prime p)] {f₀ : ℕ} (hf₀ : 0 < f₀) (hf₀₂ : p = 2 → 2 ≤ f₀) {A : Subgroup ℤ_[p]ˣ} (hA : IsClosed ↑A) (hle : A ≤ unitsPrincipal p f₀) :

      Every closed subgroup of U^(f₀) is procyclic, provided f₀ ≥ 1, and f₀ ≥ 2 when p = 2: it is trivial or a principal unit group U^(f), each topologically generated by one element.

      The pro-p subgroups of ℤ_pˣ #

      theorem TauCeti.isProP_unitsPrincipal (p : ℕ) [hp : Fact (Nat.Prime p)] {f : ℕ} (hf : 0 < f) :

      The principal unit groups are pro-p: for f ≥ 1, 1 + p^f ℤ_p is a pro-p group.

      theorem TauCeti.IsProP.le_unitsPrincipal_one {p : ℕ} [hp : Fact (Nat.Prime p)] {A : Subgroup ℤ_[p]ˣ} (hA : IsProP p ↥A) :

      A pro-p subgroup of ℤ_pˣ consists of principal units. Its image in the quotient ℤ_pˣ / (1 + pℤ_p), a group of order p - 1, is a p-group, hence trivial.

      The pro-p subgroups of ℤ_pˣ are exactly the subgroups of 1 + pℤ_p.

      Every subgroup of ℤ_2ˣ is pro-2, because 1 + 2ℤ_2 = ℤ_2ˣ.