ProCGroups.Completion.ProCIntegerPrimePower

9 Theorem | 1 Definition

Pro C Groups / Completion / Prime-Power pro-C Integer.

import
Imported by

Declarations

def pGroupPower (p k : ℕ) [Fact (Nat.Prime p)] :
    ProCIntegerIndex (FiniteGroupClass.pGroup p : FiniteGroupClass.{u}) where
  modulus := p ^ k
  positive := by
    exact Nat.pow_pos (show 0 < p from (Fact.out : Nat.Prime p).pos)
  cyclic_mem := by
    letI : NeZero (p ^ k) := ⟨Nat.ne_of_gt (Nat.pow_pos
      (show 0 < p from (Fact.out : Nat.Prime p).pos))⟩
    letI : Fintype (ZMod (p ^ k)) := ZMod.fintype (p ^ k)
    constructor
    · have hfinZ : Finite (ZMod (p ^ k)) := Finite.of_fintype _
      have hfinMul : Finite (Multiplicative (ZMod (p ^ k))) :=
        @Finite.of_equiv _ _ hfinZ Multiplicative.toAdd
      exact @Finite.of_equiv _ _ hfinMul Equiv.ulift.symm
    · intro g
      refine ⟨k, ?_⟩
      cases g with
      | up g' =>
        apply ULift.ext
        change g' ^ p ^ k = 1
        cases g' with
        | ofAdd z =>
          change Multiplicative.ofAdd ((p ^ k) • z) = Multiplicative.ofAdd 0
          simp only [nsmul_eq_mul, CharP.cast_eq_zero, zero_mul, ofAdd_zero]

The \(p^k\)-modulus coefficient index for the pro-\(p\) integer limit.

theorem modulus_pGroupPower (p k : ℕ) [Fact (Nat.Prime p)] :
    (pGroupPower p k :
      ProCIntegerIndex (FiniteGroupClass.pGroup p : FiniteGroupClass.{u})).modulus = p ^ k

The prime-power coefficient index has modulus \(p ^ n\).

Show proof
theorem modulus_dvd_pow_of_mem_pGroup (p : ℕ)
    (i : ProCIntegerIndex (FiniteGroupClass.pGroup p : FiniteGroupClass.{u})) :
    ∃ k, i.modulus ∣ p ^ k

Any coefficient index for the finite \(p\)-group class is dominated by a prime-power modulus.

Show proof
theorem directed_pGroup (p : ℕ) [Fact (Nat.Prime p)] :
    Directed (· ≤ ·)
      (id : ProCIntegerIndex (FiniteGroupClass.pGroup p : FiniteGroupClass.{u}) →
        ProCIntegerIndex (FiniteGroupClass.pGroup p : FiniteGroupClass.{u}))

The finite \(p\)-group coefficient indices for pro-\(C\) integers are directed.

Show proof
theorem proCIntegerProj_pGroupPower_one (p k : ℕ) [Fact (Nat.Prime p)] :
    proCIntegerProj
        (C := (FiniteGroupClass.pGroup p : FiniteGroupClass.{u}))
        (ProCIntegerIndex.pGroupPower p k)
        (proCIntegerOne
          (C := (FiniteGroupClass.pGroup p : FiniteGroupClass.{u}))).toAdd =
      (1 : ZMod (p ^ k))

The distinguished element \(1\) projects to \(1\) on every prime-power coordinate.

Show proof
theorem denseRange_intToProCInteger_pGroup (p : ℕ) [Fact (Nat.Prime p)] :
    DenseRange (intToProCInteger
      (C := (FiniteGroupClass.pGroup p : FiniteGroupClass.{u})))

The ordinary integers are dense in the pro-\(p\) integer coefficient ring.

Show proof
theorem denseRange_multiplicativeIntToProCInteger_pGroup (p : ℕ) [Fact (Nat.Prime p)] :
    DenseRange
      (multiplicativeIntToProCInteger
        (C := (FiniteGroupClass.pGroup p : FiniteGroupClass.{u})))

The multiplicative infinite-cyclic map is dense in the pro-\(p\) integers.

Show proof
theorem topologicallyGenerates_singleton_proCIntegerOne_pGroup
    (p : ℕ) [Fact (Nat.Prime p)] :
    ProCGroups.Generation.TopologicallyGenerates
      (G := Multiplicative
        (ProCIntegerLimitCarrier (FiniteGroupClass.pGroup p : FiniteGroupClass.{0})))
      ({proCIntegerOne
        (C := (FiniteGroupClass.pGroup p : FiniteGroupClass.{0}))} : Set _)

The distinguished element 1 topologically generates the pro-\(p\) integers.

Show proof
theorem isProPGroup_multiplicative_proCInteger_pGroup (p : ℕ) [Fact (Nat.Prime p)] :
    ProCGroups.ProC.IsProPGroup p
      (Multiplicative
        (ProCIntegerLimitCarrier (FiniteGroupClass.pGroup p : FiniteGroupClass.{0})))

The pro-\(p\) integers are a pro-\(p\)-group.

Show proof
theorem isProcyclicGroup_multiplicative_proCInteger_pGroup (p : ℕ) [Fact (Nat.Prime p)] :
    ProCGroups.ProC.IsProcyclicGroup
      (Multiplicative
        (ProCIntegerLimitCarrier (FiniteGroupClass.pGroup p : FiniteGroupClass.{0})))

The pro-\(p\) integers are procyclic.

Show proof