Module

ProCInteger.lean

Nyll.ProCGroups.Completion.ProCInteger
84 declarations indexed from sourceView source ↗

ProCGroups.Completion.ProCInteger

This module constructs the inverse limit of cyclic integer quotients indexed by the moduli admitted by a finite group class, equips it with its topological ring structure, and proves its profinite multiplicative and density properties.

Declarations

ProCGroups.Completion.ProCIntegerIndex

A coefficient level: a positive modulus whose additive cyclic group belongs to \(C\), independently of the universe used to represent that finite group.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
structure ProCIntegerIndex (C : FiniteGroupClass.{u}) where
  /-- The positive integer defining the coefficient ring `ZMod modulus` at this level. -/
  modulus : ℕ
  /-- The modulus is nonzero, as required for the finite cyclic coefficient group. -/
  positive : 0 < modulus
  /--
  The multiplicative presentation of the additive cyclic group `ZMod modulus` belongs to `C`,
  using universe-independent membership.
  -/
  cyclic_mem : C.MemAcrossUniverses (Multiplicative (ZMod modulus))
ProCGroups.Completion.ProCIntegerIndex.memAcrossUniverses_of_ulift_mem

Internal bridge from native membership of a universe lift to the universe-independent public membership predicate.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
namespace ProCIntegerIndex
theorem memAcrossUniverses_of_ulift_mem
    {C : FiniteGroupClass.{u}} {G : Type} [Group G]
    (hG : C (ULift.{u} G)) : C.MemAcrossUniverses G
ProCGroups.Completion.ProCIntegerIndex.ulift_mem_of_memAcrossUniverses

Internal bridge used when a universe-specific formation theorem needs a native carrier.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
namespace ProCIntegerIndex
theorem ulift_mem_of_memAcrossUniverses
    {C : FiniteGroupClass.{u}} {G : Type} [Group G]
    (hG : C.MemAcrossUniverses G) : C (ULift.{u} G)
ProCGroups.Completion.ProCIntegerIndex.instLEProCIntegerIndex

The order relation is the refinement relation on the corresponding data.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
namespace ProCIntegerIndex
instance instLEProCIntegerIndex (C : FiniteGroupClass.{u}) : LE (ProCIntegerIndex C) where
  le i j := i.modulus ∣ j.modulus
ProCGroups.Completion.ProCIntegerIndex.instPreorderProCIntegerIndex

The preorder is induced by refinement of the corresponding data.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
namespace ProCIntegerIndex
instance instPreorderProCIntegerIndex (C : FiniteGroupClass.{u}) : Preorder (ProCIntegerIndex C)
    where
  le := (· ≤ ·)
  le_refl i := dvd_rfl
  le_trans _ _ _ hij hjk := dvd_trans hij hjk
ProCGroups.Completion.ProCIntegerIndex.ofModulus

A coefficient index built from an allowed positive modulus.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
namespace ProCIntegerIndex
def ofModulus {C : FiniteGroupClass.{u}} (n : ℕ) (hn : 0 < n)
    (hC : C.MemAcrossUniverses (Multiplicative (ZMod n))) : ProCIntegerIndex C where
  modulus := n
  positive := hn
  cyclic_mem := hC
ProCGroups.Completion.ProCIntegerIndex.positiveFact

The positivity certificate carried by a coefficient index, packaged for formulations requiring Fact.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
namespace ProCIntegerIndex
theorem positiveFact {C : FiniteGroupClass.{u}} (i : ProCIntegerIndex C) :
    Fact (0 < i.modulus)
ProCGroups.Completion.ProCIntegerIndex.terminal

The terminal coefficient index \(\mathbb{Z}/1\mathbb{Z}\), available when \(C\) contains trivial quotients.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
namespace ProCIntegerIndex
def terminal {C : FiniteGroupClass.{u}} (htriv : FiniteGroupClass.ContainsTrivialQuotients C) :
    ProCIntegerIndex C where
  modulus := 1
  positive := Nat.zero_lt_one
  cyclic_mem := memAcrossUniverses_of_ulift_mem (htriv.of_subsingleton inferInstance)
ProCGroups.Completion.ProCIntegerIndex.ofAllFiniteModulus

Every positive modulus is allowed for the all-finite class.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
namespace ProCIntegerIndex
def ofAllFiniteModulus (n : ℕ) (hn : 0 < n) :
    ProCIntegerIndex (FiniteGroupClass.allFinite : FiniteGroupClass.{u}) where
  modulus := n
  positive := hn
  cyclic_mem := memAcrossUniverses_of_ulift_mem (by
    have : NeZero n := ⟨Nat.ne_of_gt hn⟩
    exact Finite.of_equiv (ZMod n) (Multiplicative.ofAdd.trans Equiv.ulift.symm))
ProCGroups.Completion.ProCIntegerIndex.modulus_ofAllFiniteModulus

The all-finite coefficient index has the prescribed modulus.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
namespace ProCIntegerIndex
theorem modulus_ofAllFiniteModulus (n : ℕ) (hn : 0 < n) :
    (ofAllFiniteModulus n hn).modulus = n
ProCGroups.Completion.ProCIntegerIndex.ofElementOrder

The order of an element of a finite \(C\)-group is an allowed coefficient modulus for hereditary classes.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
namespace ProCIntegerIndex
def ofElementOrder {C : FiniteGroupClass.{u}}
    (hHer : FiniteGroupClass.Hereditary C)
    {K : Type u} [Group K] [Finite K] (hK : C K) (k : K) :
    ProCIntegerIndex C
ProCGroups.Completion.ProCIntegerIndex.directed_of_formation

Formation closure makes the allowed coefficient moduli directed by common multiples.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
namespace ProCIntegerIndex
theorem directed_of_formation {C : FiniteGroupClass.{u}} (hForm : FiniteGroupClass.Formation C) :
    Directed (· ≤ ·) (id : ProCIntegerIndex C → ProCIntegerIndex C)
ProCGroups.Completion.ProCIntegerIndex.exists_index_orderOf_dvd_of_finite_mem

In a finite \(C\)-group, a single allowed coefficient modulus is divisible by every element order.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
namespace ProCIntegerIndex
theorem exists_index_orderOf_dvd_of_finite_mem {C : FiniteGroupClass.{u}}
    (hForm : FiniteGroupClass.Formation C)
    (hHer : FiniteGroupClass.Hereditary C)
    {K : Type u} [Group K] [Finite K] (hK : C K) :
    ∃ i : ProCIntegerIndex C, ∀ k : K, orderOf k ∣ i.modulus
ProCGroups.Completion.ProCIntegerIndex.exists_index_kills_finite_group_of_mem

In a finite \(C\)-group, some allowed coefficient modulus kills every element.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
namespace ProCIntegerIndex
theorem exists_index_kills_finite_group_of_mem {C : FiniteGroupClass.{u}}
    (hForm : FiniteGroupClass.Formation C)
    (hHer : FiniteGroupClass.Hereditary C)
    {K : Type u} [Group K] [Finite K] (hK : C K) :
    ∃ i : ProCIntegerIndex C, ∀ k : K, k ^ i.modulus = 1
ProCGroups.Completion.ProCIntegerStage

The finite cyclic stage \(\mathbb{Z}/n\mathbb{Z}\) of the pro-\(C\) integers.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
abbrev ProCIntegerStage (i : ProCIntegerIndex C) : Type
ProCGroups.Completion.proCIntegerTransition

The transition map between finite stages is induced by the corresponding quotient map.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
def proCIntegerTransition {i j : ProCIntegerIndex C} (hij : i ≤ j) :
    ProCIntegerStage C j →+* ProCIntegerStage C i
ProCGroups.Completion.proCIntegerSystem

The finite cyclic stages defining the pro-\(C\) integers as an inverse system.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
def proCIntegerSystem : ProCGroups.InverseSystems.InverseSystem (I := ProCIntegerIndex C) where
  X := ProCIntegerStage C
  topologicalSpace := fun _ => inferInstance
  map := fun {i j} hij => proCIntegerTransition (C := C) hij
  continuous_map := by
    intro i j hij
    exact continuous_of_discreteTopology
  map_id := by
    intro i
    ext x
    simp only [proCIntegerTransition, ZMod.castHom_self, RingHom.id_apply, id_eq]
  map_comp := by
    intro i j k hij hjk
    ext x
    exact congrArg (fun f : ZMod k.modulus →+* ZMod i.modulus => f x)
      (ZMod.castHom_comp hij hjk)
ProCGroups.Completion.ProCIntegerCompatible

The compatibility condition for a point of the inverse limit defining the pro-\(C\) integers.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
def ProCIntegerCompatible
    (x : ∀ i : ProCIntegerIndex C, ProCIntegerStage C i) : Prop
ProCGroups.Completion.ProCIntegerLimitCarrier

Explicit carrier-level name for the current inverse-limit implementation of pro-\(C\) integers.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
abbrev ProCIntegerLimitCarrier : Type _
ProCGroups.Completion.proCIntegerProj

The projection from the pro-\(C\) integers to a finite cyclic stage.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
def proCIntegerProj (i : ProCIntegerIndex C) : ProCIntegerLimitCarrier C → ProCIntegerStage C i
ProCGroups.Completion.ProCIntegerLimitCarrier.ext

Extensionality for pro-\(C\) integers through their finite cyclic projections.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem ProCIntegerLimitCarrier.ext {x y : ProCIntegerLimitCarrier C}
    (h : ∀ i : ProCIntegerIndex C,
      proCIntegerProj (C := C) i x = proCIntegerProj (C := C) i y) :
    x = y
ProCGroups.Completion.instZeroProCInteger

The zero element is defined coordinatewise as the compatible family of zero elements at all finite stages.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instZeroProCInteger : Zero (ProCIntegerLimitCarrier C) where
  zero := ⟨fun _ => 0, by
    intro i j hij
    exact map_zero (proCIntegerTransition (C := C) hij)⟩
ProCGroups.Completion.instAddProCInteger

Addition on the pro-\(C\) integer completion is defined coordinatewise through finite quotient stages.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instAddProCInteger : Add (ProCIntegerLimitCarrier C) where
  add x y := ⟨fun i => x.1 i + y.1 i, by
    intro i j hij
    rw [map_add]
    exact congrArg₂ HAdd.hAdd (x.2 i j hij) (y.2 i j hij)⟩
ProCGroups.Completion.instNegProCInteger

Negation on the pro-\(C\) completed integers is defined coordinatewise through finite quotients.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instNegProCInteger : Neg (ProCIntegerLimitCarrier C) where
  neg x := ⟨fun i => -x.1 i, by
    intro i j hij
    rw [map_neg]
    exact congrArg Neg.neg (x.2 i j hij)⟩
ProCGroups.Completion.instSubProCInteger

Subtraction on the completed group algebra is defined coordinatewise through the finite-stage group-algebra subtractions.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instSubProCInteger : Sub (ProCIntegerLimitCarrier C) where
  sub x y := ⟨fun i => x.1 i - y.1 i, by
    intro i j hij
    rw [map_sub]
    exact congrArg₂ HSub.hSub (x.2 i j hij) (y.2 i j hij)⟩
ProCGroups.Completion.instSMulNatProCInteger

The pro-\(C\) completed integers carry natural-number scalar multiplication coordinatewise.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instSMulNatProCInteger : SMul ℕ (ProCIntegerLimitCarrier C) where
  smul n x := ⟨fun i => n • x.1 i, by
    intro i j hij
    rw [map_nsmul]
    exact congrArg (n • ·) (x.2 i j hij)⟩
ProCGroups.Completion.instSMulIntProCInteger

The completed group algebra carries integer scalar multiplication by applying the scalar action at every finite quotient stage.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instSMulIntProCInteger : SMul ℤ (ProCIntegerLimitCarrier C) where
  smul n x := ⟨fun i => n • x.1 i, by
    intro i j hij
    rw [map_zsmul]
    exact congrArg (n • ·) (x.2 i j hij)⟩
ProCGroups.Completion.instOneProCInteger

The unit pro-\(C\) integer is defined coordinatewise.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instOneProCInteger : One (ProCIntegerLimitCarrier C) where
  one := ⟨fun _ => 1, by
    intro i j hij
    exact map_one (proCIntegerTransition (C := C) hij)⟩
ProCGroups.Completion.instMulProCInteger

Multiplication on the pro-\(C\) completed integers is defined coordinatewise through finite quotients.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instMulProCInteger : Mul (ProCIntegerLimitCarrier C) where
  mul x y := ⟨fun i => x.1 i * y.1 i, by
    intro i j hij
    rw [map_mul]
    exact congrArg₂ HMul.hMul (x.2 i j hij) (y.2 i j hij)⟩
ProCGroups.Completion.instNatCastProCInteger

Natural number casts in the pro-\(C\) integer completion are computed coordinatewise from finite-stage natural number casts.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instNatCastProCInteger : NatCast (ProCIntegerLimitCarrier C) where
  natCast n := ⟨fun _ => n, by
    intro i j hij
    exact map_natCast (proCIntegerTransition (C := C) hij) n⟩
ProCGroups.Completion.instIntCastProCInteger

Integer casts in the pro-\(C\) integer completion are computed coordinatewise from finite-stage integer casts.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instIntCastProCInteger : IntCast (ProCIntegerLimitCarrier C) where
  intCast n := ⟨fun _ => n, by
    intro i j hij
    exact map_intCast (proCIntegerTransition (C := C) hij) n⟩
ProCGroups.Completion.instPowProCInteger

The profinite or pro-\(C\) group object has powers computed at every finite-stage coordinate.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instPowProCInteger : Pow (ProCIntegerLimitCarrier C) ℕ where
  pow x n := ⟨fun i => x.1 i ^ n, by
    intro i j hij
    rw [map_pow]
    exact congrArg (fun t => t ^ n) (x.2 i j hij)⟩
ProCGroups.Completion.coe_zero_proCInteger

The underlying compatible family of pro-\(C\) integers computes zero coordinatewise.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem coe_zero_proCInteger :
    ((0 : ProCIntegerLimitCarrier C) : ∀ i : ProCIntegerIndex C, ProCIntegerStage C i) = 0
ProCGroups.Completion.coe_one_proCInteger

The underlying compatible family of pro-\(C\) integers computes \(1\) coordinatewise.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem coe_one_proCInteger :
    ((1 : ProCIntegerLimitCarrier C) : ∀ i : ProCIntegerIndex C, ProCIntegerStage C i) = 1
ProCGroups.Completion.coe_add_proCInteger

The underlying compatible family of pro-\(C\) integers computes addition coordinatewise.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem coe_add_proCInteger (x y : ProCIntegerLimitCarrier C) :
    ((x + y : ProCIntegerLimitCarrier C) : ∀ i : ProCIntegerIndex C, ProCIntegerStage C i) = x +
        y
ProCGroups.Completion.coe_mul_proCInteger

The underlying compatible family of pro-\(C\) integers computes multiplication coordinatewise.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem coe_mul_proCInteger (x y : ProCIntegerLimitCarrier C) :
    ((x * y : ProCIntegerLimitCarrier C) : ∀ i : ProCIntegerIndex C, ProCIntegerStage C i) = x *
        y
ProCGroups.Completion.coe_neg_proCInteger

The underlying compatible family of pro-\(C\) integers computes negation coordinatewise.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem coe_neg_proCInteger (x : ProCIntegerLimitCarrier C) :
    ((-x : ProCIntegerLimitCarrier C) : ∀ i : ProCIntegerIndex C, ProCIntegerStage C i) = -x
ProCGroups.Completion.coe_sub_proCInteger

The underlying compatible family of pro-\(C\) integers computes subtraction coordinatewise.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem coe_sub_proCInteger (x y : ProCIntegerLimitCarrier C) :
    ((x - y : ProCIntegerLimitCarrier C) : ∀ i : ProCIntegerIndex C, ProCIntegerStage C i) = x -
        y
ProCGroups.Completion.coe_natCast_proCInteger

The underlying compatible family of pro-\(C\) integers computes natural number casts coordinatewise.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem coe_natCast_proCInteger (n : ℕ) :
    ((n : ProCIntegerLimitCarrier C) : ∀ i : ProCIntegerIndex C, ProCIntegerStage C i) = n
ProCGroups.Completion.coe_intCast_proCInteger

The underlying compatible family of pro-\(C\) integers computes integer casts coordinatewise.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem coe_intCast_proCInteger (n : ℤ) :
    ((n : ProCIntegerLimitCarrier C) : ∀ i : ProCIntegerIndex C, ProCIntegerStage C i) =
      fun i => (n : ProCIntegerStage C i) := by
  funext i
  rfl
ProCGroups.Completion.coe_pow_proCInteger

The underlying compatible family of pro-\(C\) integers computes powers coordinatewise.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem coe_pow_proCInteger (x : ProCIntegerLimitCarrier C) (n : ℕ) :
    ((x ^ n : ProCIntegerLimitCarrier C) : ∀ i : ProCIntegerIndex C, ProCIntegerStage C i) = x ^
        n
ProCGroups.Completion.instCommRingProCInteger

The pro-\(C\) integer completion inherits a ring structure from the compatible finite-stage rings.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instCommRingProCInteger : CommRing (ProCIntegerLimitCarrier C)
ProCGroups.Completion.proCIntegerProj_zero

Finite projections of pro-\(C\) integers commute with 0.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem proCIntegerProj_zero (i : ProCIntegerIndex C) :
    proCIntegerProj (C := C) i (0 : ProCIntegerLimitCarrier C) = 0
ProCGroups.Completion.proCIntegerProj_one

Finite projections of pro-\(C\) integers commute with 1.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem proCIntegerProj_one (i : ProCIntegerIndex C) :
    proCIntegerProj (C := C) i (1 : ProCIntegerLimitCarrier C) = 1
ProCGroups.Completion.proCIntegerProj_add

Finite projections of pro-\(C\) integers commute with addition.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem proCIntegerProj_add (i : ProCIntegerIndex C) (x y : ProCIntegerLimitCarrier C) :
    proCIntegerProj (C := C) i (x + y) =
      proCIntegerProj (C := C) i x + proCIntegerProj (C := C) i y
ProCGroups.Completion.proCIntegerProj_mul

Finite projections of pro-\(C\) integers commute with multiplication.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem proCIntegerProj_mul (i : ProCIntegerIndex C) (x y : ProCIntegerLimitCarrier C) :
    proCIntegerProj (C := C) i (x * y) =
      proCIntegerProj (C := C) i x * proCIntegerProj (C := C) i y
ProCGroups.Completion.proCIntegerProj_neg

Finite projections of pro-\(C\) integers commute with negation.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem proCIntegerProj_neg (i : ProCIntegerIndex C) (x : ProCIntegerLimitCarrier C) :
    proCIntegerProj (C := C) i (-x) = -proCIntegerProj (C := C) i x
ProCGroups.Completion.proCIntegerProj_sub

Finite projections of pro-\(C\) integers commute with subtraction.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem proCIntegerProj_sub (i : ProCIntegerIndex C) (x y : ProCIntegerLimitCarrier C) :
    proCIntegerProj (C := C) i (x - y) =
      proCIntegerProj (C := C) i x - proCIntegerProj (C := C) i y
ProCGroups.Completion.proCIntegerProj_natCast

Finite projections of pro-\(C\) integers commute with natural number casts.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem proCIntegerProj_natCast (i : ProCIntegerIndex C) (n : ℕ) :
    proCIntegerProj (C := C) i (n : ProCIntegerLimitCarrier C) = n
ProCGroups.Completion.proCIntegerProj_intCast

Finite projections of pro-\(C\) integers commute with integer casts.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem proCIntegerProj_intCast (i : ProCIntegerIndex C) (n : ℤ) :
    proCIntegerProj (C := C) i (n : ProCIntegerLimitCarrier C) = n
ProCGroups.Completion.proCIntegerProjRingHom

The projection from the pro-\(C\) integers to a finite cyclic stage is bundled as a ring homomorphism.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
def proCIntegerProjRingHom (i : ProCIntegerIndex C) :
    ProCIntegerLimitCarrier C →+* ProCIntegerStage C i where
  toFun := proCIntegerProj (C := C) i
  map_zero' := by simp only [proCIntegerProj_zero]
  map_one' := by simp only [proCIntegerProj_one]
  map_add' := by intro x y; simp only [proCIntegerProj_add]
  map_mul' := by intro x y; simp only [proCIntegerProj_mul]
ProCGroups.Completion.proCIntegerProjRingHom_apply

The bundled ring homomorphism has the same underlying function as the coordinatewise construction.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem proCIntegerProjRingHom_apply (i : ProCIntegerIndex C) (x : ProCIntegerLimitCarrier C) :
    proCIntegerProjRingHom (C := C) i x = proCIntegerProj (C := C) i x
ProCGroups.Completion.continuous_proCIntegerProj

Each finite projection from the pro-\(C\) integer ring is continuous.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem continuous_proCIntegerProj (i : ProCIntegerIndex C) :
    Continuous (proCIntegerProj (C := C) i)
ProCGroups.Completion.proCIntegerProj_transition

Compatibility of the finite projections with reduction maps.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem proCIntegerProj_transition {i j : ProCIntegerIndex C} (hij : i ≤ j)
    (x : ProCIntegerLimitCarrier C) :
    proCIntegerTransition (C := C) hij (proCIntegerProj (C := C) j x) =
      proCIntegerProj (C := C) i x
ProCGroups.Completion.multiplicative_proCIntegerStage_mem

A finite cyclic stage belongs to C across universes. This is the public stage-membership API; it avoids exposing a Type-0 specialization or requiring a separately supplied isomorphism-closure hypothesis.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem multiplicative_proCIntegerStage_mem
    {C : FiniteGroupClass.{u}} (i : ProCIntegerIndex C) :
    C.MemAcrossUniverses (Multiplicative (ProCIntegerStage C i))
ProCGroups.Completion.hasOpenNormalBasisInClass_multiplicative_proCIntegerStage

Each finite multiplicative cyclic stage has an open-normal \(C\)-basis when \(C\) is quotient-closed.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem hasOpenNormalBasisInClass_multiplicative_proCIntegerStage
    {C : FiniteGroupClass.{0}}
    (hQuot : FiniteGroupClass.QuotientClosed C)
    (i : ProCIntegerIndex C) :
    ProCGroups.ProC.HasOpenNormalBasisInClass C (Multiplicative (ProCIntegerStage C i))
ProCGroups.Completion.proCIntegerMultiplicativeSystem

The group-valued inverse system obtained from the finite cyclic coefficient stages.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
def proCIntegerMultiplicativeSystem (C : FiniteGroupClass.{u}) :
    ProCGroups.InverseSystems.InverseSystem (I := ProCIntegerIndex C) where
  X := fun i => Multiplicative (ProCIntegerStage C i)
  topologicalSpace := fun _ => inferInstance
  map := fun {i j} hij =>
    (proCIntegerTransition (C := C) hij).toAddMonoidHom.toMultiplicative
  continuous_map := by
    intro i j hij
    exact continuous_of_discreteTopology
  map_id := by
    intro i
    ext x
    apply Multiplicative.ext
    change proCIntegerTransition (C := C) (le_rfl : i ≤ i) x.toAdd = x.toAdd
    simp only [proCIntegerTransition, ZMod.castHom_self, RingHom.id_apply]
  map_comp := by
    intro i j k hij hjk
    ext x
    apply Multiplicative.ext
    change
      proCIntegerTransition (C := C) hij
          (proCIntegerTransition (C := C) hjk x.toAdd) =
        proCIntegerTransition (C := C) (hij.trans hjk) x.toAdd
    exact congrArg (fun f : ZMod k.modulus →+* ZMod i.modulus => f x.toAdd)
      (ZMod.castHom_comp hij hjk)
ProCGroups.Completion.instGroupProCIntegerMultiplicativeSystemStage

The constructed carrier inherits its group structure from the coordinatewise group structure of the construction.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instGroupProCIntegerMultiplicativeSystemStage
    (C : FiniteGroupClass.{u}) (i : ProCIntegerIndex C) :
    Group ((proCIntegerMultiplicativeSystem C).X i)
ProCGroups.Completion.instIsTopologicalGroupProCIntegerMultiplicativeSystemStage

The object is a topological group with the induced group operations and topology.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instIsTopologicalGroupProCIntegerMultiplicativeSystemStage
    (C : FiniteGroupClass.{u}) (i : ProCIntegerIndex C) :
    IsTopologicalGroup ((proCIntegerMultiplicativeSystem C).X i)
ProCGroups.Completion.instIsGroupSystemProCIntegerMultiplicativeSystem

The pro-\(C\) integer multiplicative system carries the induced group-system structure.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instIsGroupSystemProCIntegerMultiplicativeSystem
    (C : FiniteGroupClass.{u}) :
    ProCGroups.InverseSystems.IsGroupSystem
      (proCIntegerMultiplicativeSystem C) where
  map_one := by
    intro i j hij
    dsimp [proCIntegerMultiplicativeSystem, ProCIntegerStage]
    apply Multiplicative.ext
    exact map_zero (proCIntegerTransition (C := C) hij)
  map_mul := by
    intro i j hij x y
    dsimp [proCIntegerMultiplicativeSystem, ProCIntegerStage] at x y ⊢
    apply Multiplicative.ext
    exact map_add (proCIntegerTransition (C := C) hij) x.toAdd y.toAdd
  map_inv := by
    intro i j hij x
    dsimp [proCIntegerMultiplicativeSystem, ProCIntegerStage] at x ⊢
    apply Multiplicative.ext
    exact map_neg (proCIntegerTransition (C := C) hij) x.toAdd
ProCGroups.Completion.proCIntegerMultiplicativeLimitEquiv

The inverse limit of the multiplicative finite stages is the multiplicative group underlying the pro-\(C\) integers.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
def proCIntegerMultiplicativeLimitEquiv
    (C : FiniteGroupClass.{u}) :
    (proCIntegerMultiplicativeSystem C).inverseLimit ≃ₜ*
      Multiplicative (ProCIntegerLimitCarrier C)
ProCGroups.Completion.hasOpenNormalBasisInClass_proCIntegerMultiplicativeSystem_inverseLimit

A directed pro-\(C\) integer coefficient system has an open-normal \(C\)-basis on its multiplicative inverse limit.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem hasOpenNormalBasisInClass_proCIntegerMultiplicativeSystem_inverseLimit
    {C : FiniteGroupClass.{0}}
    [Nonempty (ProCIntegerIndex C)]
    (hIso : FiniteGroupClass.IsomClosed C)
    (hQuot : FiniteGroupClass.QuotientClosed C)
    (hdir : Directed (· ≤ ·) (id : ProCIntegerIndex C → ProCIntegerIndex C)) :
    ProCGroups.ProC.HasOpenNormalBasisInClass C (proCIntegerMultiplicativeSystem C).inverseLimit
ProCGroups.Completion.isClosed_setOf_proCIntegerCompatible

The compatibility condition defining pro-\(C\) integers is closed in the product of the finite cyclic stages.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem isClosed_setOf_proCIntegerCompatible :
    IsClosed {x : ∀ i : ProCIntegerIndex C, ProCIntegerStage C i |
      ProCIntegerCompatible C x}
ProCGroups.Completion.instCompactSpaceProCInteger

The constructed object carries the compact space structure inherited from its profinite construction.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instCompactSpaceProCInteger : CompactSpace (ProCIntegerLimitCarrier C)
ProCGroups.Completion.instT2SpaceProCInteger

The constructed object is Hausdorff, with its \(T_2\) structure inherited from the profinite construction.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instT2SpaceProCInteger : T2Space (ProCIntegerLimitCarrier C)
ProCGroups.Completion.instContinuousAddProCInteger

Addition on the pro-\(C\) integer completion is continuous for the inverse-limit topology.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instContinuousAddProCInteger : ContinuousAdd (ProCIntegerLimitCarrier C) where
  continuous_add := by
    refine Continuous.subtype_mk (continuous_pi fun i => ?_) (fun p => (p.1 + p.2).2)
    change Continuous fun p : ProCIntegerLimitCarrier C × ProCIntegerLimitCarrier C =>
      proCIntegerProj (C := C) i p.1 + proCIntegerProj (C := C) i p.2
    exact ((continuous_proCIntegerProj (C := C) i).comp continuous_fst).add
      ((continuous_proCIntegerProj (C := C) i).comp continuous_snd)
ProCGroups.Completion.instContinuousMulProCInteger

Multiplication on the pro-\(C\) integer completion is continuous for the inverse-limit topology.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instContinuousMulProCInteger : ContinuousMul (ProCIntegerLimitCarrier C) where
  continuous_mul := by
    refine Continuous.subtype_mk (continuous_pi fun i => ?_) (fun p => (p.1 * p.2).2)
    change Continuous fun p : ProCIntegerLimitCarrier C × ProCIntegerLimitCarrier C =>
      proCIntegerProj (C := C) i p.1 * proCIntegerProj (C := C) i p.2
    exact ((continuous_proCIntegerProj (C := C) i).comp continuous_fst).mul
      ((continuous_proCIntegerProj (C := C) i).comp continuous_snd)
ProCGroups.Completion.instContinuousNegProCInteger

Negation on the pro-\(C\) integer completion is continuous for the inverse-limit topology.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instContinuousNegProCInteger : ContinuousNeg (ProCIntegerLimitCarrier C) where
  continuous_neg := by
    refine Continuous.subtype_mk (continuous_pi fun i => ?_) (fun x => (-x).2)
    change Continuous fun x : ProCIntegerLimitCarrier C => -proCIntegerProj (C := C) i x
    exact (continuous_proCIntegerProj (C := C) i).neg
ProCGroups.Completion.instIsTopologicalRingProCInteger

The coordinatewise ring operations make the pro-\(C\) integer completion a topological ring.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
instance instIsTopologicalRingProCInteger : IsTopologicalRing (ProCIntegerLimitCarrier C)
ProCGroups.Completion.hasOpenNormalBasisInClass_multiplicative_proCInteger

The additive group underlying the pro-\(C\) integers, written multiplicatively, has an open-normal \(C\)-basis whenever the coefficient indices are directed and \(C\) is isomorphism- and quotient-closed.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem hasOpenNormalBasisInClass_multiplicative_proCInteger
    {C : FiniteGroupClass.{0}}
    [Nonempty (ProCIntegerIndex C)]
    (hIso : FiniteGroupClass.IsomClosed C)
    (hQuot : FiniteGroupClass.QuotientClosed C)
    (hdir : Directed (· ≤ ·) (id : ProCIntegerIndex C → ProCIntegerIndex C)) :
    ProCGroups.ProC.HasOpenNormalBasisInClass C (Multiplicative (ProCIntegerLimitCarrier C))
ProCGroups.Completion.intToProCInteger

Integer constants in the pro-\(C\) integers.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
def intToProCInteger : ℤ →+* ProCIntegerLimitCarrier C where
  toFun n := (n : ProCIntegerLimitCarrier C)
  map_zero' := by ext i; exact Int.cast_zero
  map_one' := by ext i; exact Int.cast_one
  map_add' := by intro m n; ext i; exact Int.cast_add m n
  map_mul' := by intro m n; ext i; exact Int.cast_mul m n
ProCGroups.Completion.intToProCInteger_apply

The bundled integer embedding evaluates to the coordinatewise integer cast in the limit.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem intToProCInteger_apply (n : ℤ) :
    intToProCInteger (C := C) n = (n : ProCIntegerLimitCarrier C)
ProCGroups.Completion.proCIntegerProj_intToProCInteger

Projecting an integer embedded in the pro-\(C\) integers gives its residue class at that modulus.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem proCIntegerProj_intToProCInteger (i : ProCIntegerIndex C) (n : ℤ) :
    proCIntegerProj (C := C) i (intToProCInteger (C := C) n) = (n : ZMod i.modulus)
ProCGroups.Completion.denseRange_intToProCInteger_of_directed

The ordinary integers are dense in the pro-\(C\) integer completion when the coefficient indices are directed.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem denseRange_intToProCInteger_of_directed
    [Nonempty (ProCIntegerIndex C)]
    (hdir : Directed (· ≤ ·) (id : ProCIntegerIndex C → ProCIntegerIndex C)) :
    DenseRange (intToProCInteger (C := C))
ProCGroups.Completion.directed_proCIntegerIndex_allFinite

All-finite pro-integer coefficient indices are directed by common multiples.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem directed_proCIntegerIndex_allFinite :
    Directed (· ≤ ·)
      (id : ProCIntegerIndex (FiniteGroupClass.allFinite : FiniteGroupClass.{u}) →
        ProCIntegerIndex (FiniteGroupClass.allFinite : FiniteGroupClass.{u}))
ProCGroups.Completion.hasOpenNormalBasisInClass_multiplicative_proCInteger_allFinite

The multiplicative group of ordinary profinite integers has an open-normal basis for the all-finite quotient class.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem hasOpenNormalBasisInClass_multiplicative_proCInteger_allFinite :
    ProCGroups.ProC.HasOpenNormalBasisInClass
      (FiniteGroupClass.allFinite : FiniteGroupClass.{0})
      (Multiplicative
        (ProCIntegerLimitCarrier (FiniteGroupClass.allFinite : FiniteGroupClass.{0})))
ProCGroups.Completion.denseRange_intToProCInteger_allFinite

The ordinary integers are dense in the profinite completion with all finite cyclic coefficient stages.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem denseRange_intToProCInteger_allFinite :
    DenseRange (intToProCInteger
      (C := (FiniteGroupClass.allFinite : FiniteGroupClass.{u})))
ProCGroups.Completion.proCIntegerOne

The distinguished multiplicative element corresponding to \(1\) in the additive pro-\(C\) integers. It is a topological generator only for suitable finite-group classes.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
def proCIntegerOne : Multiplicative (ProCIntegerLimitCarrier C)
ProCGroups.Completion.multiplicativeIntToProCInteger

The canonical homomorphism from the infinite cyclic group to multiplicative pro-\(C\) integers.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
def multiplicativeIntToProCInteger :
    Multiplicative ℤ →* Multiplicative (ProCIntegerLimitCarrier C) where
  toFun z := Multiplicative.ofAdd ((z.toAdd : ℤ) : ProCIntegerLimitCarrier C)
  map_one' := by
    apply Multiplicative.ext
    simp only [toAdd_one, Int.cast_zero, ofAdd_zero]
  map_mul' z w := by
    apply Multiplicative.ext
    ext i
    change (((z * w).toAdd : ℤ) : ProCIntegerStage C i) =
      ((z.toAdd : ℤ) : ProCIntegerStage C i) + ((w.toAdd : ℤ) : ProCIntegerStage C i)
    exact Int.cast_add z.toAdd w.toAdd
ProCGroups.Completion.multiplicativeIntToProCInteger_apply

On the multiplicative copy of an integer n, the canonical cyclic homomorphism returns the multiplicative form of the coordinatewise cast of n into the pro-\(C\) integers.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem multiplicativeIntToProCInteger_apply (n : ℤ) :
    multiplicativeIntToProCInteger (C := C) (Multiplicative.ofAdd n) =
      Multiplicative.ofAdd ((n : ℤ) : ProCIntegerLimitCarrier C)
ProCGroups.Completion.multiplicativeIntToProCInteger_zpow_one

The dense infinite-cyclic map sends n to the n-th power of the canonical generator.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem multiplicativeIntToProCInteger_zpow_one (n : ℤ) :
    multiplicativeIntToProCInteger (C := C) (Multiplicative.ofAdd n) =
      (proCIntegerOne (C := C)) ^ n
ProCGroups.Completion.denseRange_multiplicativeIntToProCInteger_allFinite

The multiplicative infinite-cyclic map is dense in the ordinary profinite integers.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem denseRange_multiplicativeIntToProCInteger_allFinite :
    DenseRange
      (multiplicativeIntToProCInteger
        (C := (FiniteGroupClass.allFinite : FiniteGroupClass.{u})))
ProCGroups.Completion.topologicallyGenerates_singleton_proCIntegerOne_allFinite

The distinguished element 1 topologically generates the ordinary profinite integers.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem topologicallyGenerates_singleton_proCIntegerOne_allFinite :
    ProCGroups.Generation.TopologicallyGenerates
      (G := Multiplicative
        (ProCIntegerLimitCarrier (FiniteGroupClass.allFinite : FiniteGroupClass.{0})))
      ({(proCIntegerOne
        (C := (FiniteGroupClass.allFinite : FiniteGroupClass.{0})))} : Set _)
ProCGroups.Completion.hasCyclicOpenNormalBasis_multiplicative_proCInteger_allFinite

The ordinary profinite integers have a cyclic open-normal quotient basis.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped Topology
namespace ProCGroups.Completion
noncomputable section
universe u v
variable (C : FiniteGroupClass.{u})
theorem hasCyclicOpenNormalBasis_multiplicative_proCInteger_allFinite :
    ProCGroups.ProC.HasCyclicOpenNormalBasis
      (Multiplicative
        (ProCIntegerLimitCarrier (FiniteGroupClass.allFinite : FiniteGroupClass.{0})))