FoxDifferential.Completed.Continuous.Topology

27 Theorem | 6 Definition | 26 Instance

This module develops the Fox-differential part of the theory. It records the formulas that connect generators, boundaries, Jacobians, and completed coordinates.

import
Imported by

Declarations

instance instFactFiniteOnlyAllFiniteProCFiniteQuotientClass :
    Fact (ProCGroups.FiniteGroupClass.FiniteOnly
      ProCGroups.ProC.allFiniteProC.finiteQuotientClass) :=
  ⟨by
    intro G _ hG
    exact (ProCGroups.ProC.allFiniteProC_finiteQuotientClass_iff_finite).1 hG⟩

The finite quotients of the all-finite pro-\(C\) predicate are exactly finite groups.

theorem continuous_foxBoundaryMap (generatorBoundary : X → R) :
    Continuous (foxBoundaryMap generatorBoundary)

A finite Fox boundary map is continuous over any topological ring.

Show proof
instance instTopologicalSpaceZCCompletedGroupAlgebraStage
    (i : ZCCompletedGroupAlgebraIndex C G) :
    TopologicalSpace (ZCCompletedGroupAlgebraStage C G i) :=
  ⊥

Each finite-stage \(\mathbb{Z}_C\)-completed group algebra carries its finite-stage topology.

instance instDiscreteTopologyZCCompletedGroupAlgebraStage
    (i : ZCCompletedGroupAlgebraIndex C G) :
    DiscreteTopology (ZCCompletedGroupAlgebraStage C G i) :=
  ⟨rfl

Each finite-stage \(\mathbb{Z}_C\)-completed group algebra carries the discrete topology.

instance instCompactSpaceZCCompletedGroupAlgebraStage
    (i : ZCCompletedGroupAlgebraIndex C G) :
    CompactSpace (ZCCompletedGroupAlgebraStage C G i) := by
  letI : Fact (0 < i.1.modulus) := ⟨i.1.positive⟩
  letI : Finite (ZCCompletedGroupAlgebraStage C G i) :=
    finite_modNCompletedGroupAlgebraStageInClass
      (n := i.1.modulus) (G := G) C
      (Fact.out (p := ProCGroups.FiniteGroupClass.FiniteOnly C)) i.2
  letI : Fintype (ZCCompletedGroupAlgebraStage C G i) := Fintype.ofFinite _
  infer_instance

Each finite-stage \(\mathbb{Z}_C\)-completed group algebra is compact.

instance instT2SpaceZCCompletedGroupAlgebraStage
    (i : ZCCompletedGroupAlgebraIndex C G) :
    T2Space (ZCCompletedGroupAlgebraStage C G i) :=
  inferInstance

Each finite-stage \(\mathbb{Z}_C\)-completed group algebra is a \(T_2\) space.

instance instTotallyDisconnectedSpaceZCCompletedGroupAlgebraStage
    (i : ZCCompletedGroupAlgebraIndex C G) :
    TotallyDisconnectedSpace (ZCCompletedGroupAlgebraStage C G i) :=
  inferInstance

Each finite-stage \(\mathbb{Z}_C\)-completed group algebra is totally disconnected.

instance instCompactSpaceZCCompletedGroupAlgebra :
    CompactSpace (ZCCompletedGroupAlgebra C G) := by
  let S := zcCompletedGroupAlgebraSystem C G
  change CompactSpace S.inverseLimit
  letI : ∀ i : ZCCompletedGroupAlgebraIndex C G, TopologicalSpace (S.X i) := fun _ =>
    inferInstance
  letI : ∀ i : ZCCompletedGroupAlgebraIndex C G, CompactSpace (S.X i) := fun i => by
    dsimp [S, zcCompletedGroupAlgebraSystem]
    infer_instance
  letI : ∀ i : ZCCompletedGroupAlgebraIndex C G, T2Space (S.X i) := fun i => by
    dsimp [S, zcCompletedGroupAlgebraSystem]
    infer_instance
  infer_instance

The completed \(\mathbb{Z}_C\)-group algebra is compact.

instance instT2SpaceZCCompletedGroupAlgebra :
    T2Space (ZCCompletedGroupAlgebra C G) := by
  let S := zcCompletedGroupAlgebraSystem C G
  change T2Space S.inverseLimit
  letI : ∀ i : ZCCompletedGroupAlgebraIndex C G, TopologicalSpace (S.X i) := fun _ =>
    inferInstance
  letI : ∀ i : ZCCompletedGroupAlgebraIndex C G, T2Space (S.X i) := fun i => by
    dsimp [S, zcCompletedGroupAlgebraSystem]
    infer_instance
  exact S.t2Space_inverseLimit

The completed \(\mathbb{Z}_C\)-group algebra is a \(T_2\) space.

theorem continuous_zcCompletedGroupAlgebraProjection
    (i : ZCCompletedGroupAlgebraIndex C G) :
    Continuous (zcCompletedGroupAlgebraProjection C G i)

A finite stage projection from \(\mathbb{Z}_C\llbracket G\rrbracket\) is continuous.

Show proof
theorem continuous_zcCompletedGroupAlgebraProjectionRingHom
    (i : ZCCompletedGroupAlgebraIndex C G) :
    Continuous (zcCompletedGroupAlgebraProjectionRingHom C G i)

A finite stage projection from \(\mathbb{Z}_C\llbracket G\rrbracket\), regarded as a ring homomorphism, is continuous.

Show proof
instance instTotallyDisconnectedSpaceZCCompletedGroupAlgebra :
    TotallyDisconnectedSpace (ZCCompletedGroupAlgebra C G) := by
  let S := zcCompletedGroupAlgebraSystem C G
  change TotallyDisconnectedSpace S.inverseLimit
  letI : ∀ i : ZCCompletedGroupAlgebraIndex C G, TopologicalSpace (S.X i) := fun _ =>
    inferInstance
  letI : ∀ i : ZCCompletedGroupAlgebraIndex C G, TotallyDisconnectedSpace (S.X i) := fun i => by
    dsimp [S, zcCompletedGroupAlgebraSystem]
    infer_instance
  exact S.totallyDisconnectedSpace_inverseLimit

The completed \(\mathbb{Z}_C\)-group algebra is totally disconnected.

instance instContinuousAddZCCompletedGroupAlgebra :
    ContinuousAdd (ZCCompletedGroupAlgebra C G) where
  continuous_add := by
    have hval : Continuous (fun p : ZCCompletedGroupAlgebra C G ×
        ZCCompletedGroupAlgebra C G =>
        ((p.1 + p.2 : ZCCompletedGroupAlgebra C G) :
          (i : ZCCompletedGroupAlgebraIndex C G) → ZCCompletedGroupAlgebraStage C G i)) := by
      exact continuous_pi fun i =>
        (continuous_of_discreteTopology :
          Continuous (fun q : ZCCompletedGroupAlgebraStage C G i ×
              ZCCompletedGroupAlgebraStage C G i => q.1 + q.2)).comp
            (((continuous_apply i).comp (continuous_subtype_val.comp continuous_fst)).prodMk
              ((continuous_apply i).comp (continuous_subtype_val.comp continuous_snd)))
    simpa [Subtype.eta] using
      (Continuous.subtype_mk (p := ZCCompletedGroupAlgebraCompatible C G) hval
        (fun p => (p.1 + p.2 : ZCCompletedGroupAlgebra C G).property))

Addition on \(\mathbb{Z}_C\llbracket H\rrbracket\) is continuous for the inverse-limit topology.

instance instContinuousNegZCCompletedGroupAlgebra :
    ContinuousNeg (ZCCompletedGroupAlgebra C G) where
  continuous_neg := by
    change Continuous (fun x : ZCCompletedGroupAlgebra C G => -x)
    have hval : Continuous (fun x : ZCCompletedGroupAlgebra C G =>
        ((-x : ZCCompletedGroupAlgebra C G) :
          (i : ZCCompletedGroupAlgebraIndex C G) → ZCCompletedGroupAlgebraStage C G i)) := by
      exact continuous_pi fun i =>
        (continuous_of_discreteTopology :
          Continuous (fun y : ZCCompletedGroupAlgebraStage C G i => -y)).comp
          ((continuous_apply i).comp continuous_subtype_val)
    simpa [Subtype.eta] using
      (Continuous.subtype_mk (p := ZCCompletedGroupAlgebraCompatible C G) hval
        (fun x => (-x : ZCCompletedGroupAlgebra C G).property))

Negation on the completed group algebra is continuous for the inverse-limit topology.

instance instIsTopologicalAddGroupZCCompletedGroupAlgebra :
    IsTopologicalAddGroup (ZCCompletedGroupAlgebra C G) where
  continuous_add := continuous_add
  continuous_neg := continuous_neg

The completed group algebra has addition defined coordinatewise on compatible families.

instance instContinuousMulZCCompletedGroupAlgebra :
    ContinuousMul (ZCCompletedGroupAlgebra C G) where
  continuous_mul := by
    have hval : Continuous (fun p : ZCCompletedGroupAlgebra C G ×
        ZCCompletedGroupAlgebra C G =>
        ((p.1 * p.2 : ZCCompletedGroupAlgebra C G) :
          (i : ZCCompletedGroupAlgebraIndex C G) → ZCCompletedGroupAlgebraStage C G i)) := by
      exact continuous_pi fun i =>
        (continuous_of_discreteTopology :
          Continuous (fun q : ZCCompletedGroupAlgebraStage C G i ×
              ZCCompletedGroupAlgebraStage C G i => q.1 * q.2)).comp
            (((continuous_apply i).comp (continuous_subtype_val.comp continuous_fst)).prodMk
              ((continuous_apply i).comp (continuous_subtype_val.comp continuous_snd)))
    simpa [Subtype.eta] using
      (Continuous.subtype_mk (p := ZCCompletedGroupAlgebraCompatible C G) hval
        (fun p => (p.1 * p.2 : ZCCompletedGroupAlgebra C G).property))

Multiplication on the completed group algebra is continuous for the inverse-limit topology.

instance instIsTopologicalRingZCCompletedGroupAlgebra :
    IsTopologicalRing (ZCCompletedGroupAlgebra C G) where
  continuous_add := continuous_add
  continuous_mul := continuous_mul
  continuous_neg := continuous_neg

The completed group algebra inherits a ring structure from the compatible finite-stage rings.

instance instContinuousSMulZCCompletedGroupAlgebraSelf :
    ContinuousSMul (ZCCompletedGroupAlgebra C G) (ZCCompletedGroupAlgebra C G) :=
  ContinuousMul.to_continuousSMul

Scalar multiplication is continuous for the relevant inverse-limit topology.

theorem continuous_zcCompletedGroupAlgebra_smul :
    Continuous (fun p : ZCCompletedGroupAlgebra C G × ZCCompletedGroupAlgebra C G =>
      p.1 • p.2)

The scalar action map on the completed group algebra is continuous.

Show proof
theorem continuous_zcGroupLike : Continuous (zcGroupLike C G)

The completed group-like map \(G \to \mathbb{Z}_C\llbracket G\rrbracket\) is continuous.

Show proof
theorem continuous_zcCompletedGroupAlgebraAugmentation
    [ProCGroups.FiniteGroupClass.ContainsTrivialQuotients C] :
    Continuous (zcCompletedGroupAlgebraAugmentation C G)

The completed augmentation \(\mathbb{Z}_C\llbracket G\rrbracket \to \mathbb{Z}_C\) is continuous in the inverse-limit topology.

Show proof
theorem isClosed_zcCompletedGroupAlgebraAugmentationIdeal
    [ProCGroups.FiniteGroupClass.ContainsTrivialQuotients C] :
    IsClosed
      ((zcCompletedGroupAlgebraAugmentationIdeal C G :
        Ideal (ZCCompletedGroupAlgebra C G)) : Set (ZCCompletedGroupAlgebra C G))

The completed augmentation ideal is closed in \(\mathbb{Z}_C\llbracket G\rrbracket\).

Show proof
instance instCompactSpaceZCCompletedGroupAlgebraAugmentationIdeal
    [ProCGroups.FiniteGroupClass.ContainsTrivialQuotients C] :
    CompactSpace (ZCCompletedGroupAlgebraAugmentationIdeal C G) := by
  exact
    (isClosed_zcCompletedGroupAlgebraAugmentationIdeal
      (C := C) (G := G)).isClosedEmbedding_subtypeVal.compactSpace

The completed \(\mathbb{Z}_C\)-group algebra augmentation ideal is compact.

instance instT2SpaceZCCompletedGroupAlgebraAugmentationIdeal
    [ProCGroups.FiniteGroupClass.ContainsTrivialQuotients C] :
    T2Space (ZCCompletedGroupAlgebraAugmentationIdeal C G) :=
  inferInstance

The completed \(\mathbb{Z}_C\)-group algebra augmentation ideal is a \(T_2\) space.

theorem continuous_zcCompletedGroupAlgebraBoundary
    (ψ : A →* G) (hψ : Continuous ψ) :
    Continuous (zcCompletedGroupAlgebraBoundary C ψ)

The completed group-algebra boundary \(a \mapsto [\psi(a)] - 1\) is continuous whenever \(\psi\) is continuous.

Show proof
theorem continuous_zcFreeGroupFoxBoundary (ψ : FreeGroup X →* G) :
    Continuous (zcFreeGroupFoxBoundary C ψ)

The completed \(\mathbb{Z}_C\llbracket G\rrbracket\) Fox boundary/Euler map is continuous.

Show proof
def freeProCZCCompletedFoxBoundary (φ : X → H) :
    ZCFreeFoxCoordinates C (X := X) (H := H) →ₗ[ZCCompletedGroupAlgebra C H]
      ZCCompletedGroupAlgebra C H :=
  foxBoundaryMap (fun x : X => zcGroupLike C H (φ x) - 1)

Source-shaped completed Fox boundary map for a finite generating set. It evaluates a vector of completed Fox coefficients against the generator boundaries \([\varphi(x)]-1\).

theorem freeProCZCCompletedFoxBoundary_apply
    (φ : X → H) (v : ZCFreeFoxCoordinates C (X := X) (H := H)) :
    freeProCZCCompletedFoxBoundary C φ v =
      ∑ x : X, v x * (zcGroupLike C H (φ x) - 1)

The boundary map is evaluated on the canonical generators and then extended linearly to the completed coordinate module.

Show proof
theorem freeProCZCCompletedFoxBoundary_single
    (φ : X → H) (x : X) :
    freeProCZCCompletedFoxBoundary C φ
        (Pi.single x (1 : ZCCompletedGroupAlgebra C H)) =
      zcGroupLike C H (φ x) - 1

The source-shaped completed Fox boundary map sends the standard basis vector at \(x\) to \([\varphi(x)]-1\).

Show proof
theorem continuous_freeProCZCCompletedFoxBoundary (φ : X → H) :
    Continuous (freeProCZCCompletedFoxBoundary C φ)

The source-shaped completed Fox boundary map is continuous for finite generating sets.

Show proof
theorem freeProCZCCompletedFoxBoundary_range
    (φ : X → H) :
    (freeProCZCCompletedFoxBoundary C φ).range =
      Submodule.span (ZCCompletedGroupAlgebra C H)
        (Set.range fun x : X => zcGroupLike C H (φ x) - 1)

The source-shaped completed Fox boundary has image equal to the submodule generated by the augmentation generators \([\varphi(x)]-1\).

Show proof
theorem freeProCZCCompletedFoxBoundary_range_eq_standardAugmentationIdeal_of_surjective
    (φ : X → H) (hφ : Function.Surjective φ) :
    (freeProCZCCompletedFoxBoundary C φ).range =
      (zcCompletedGroupAlgebraStandardAugmentationIdeal C H :
        Submodule (ZCCompletedGroupAlgebra C H) (ZCCompletedGroupAlgebra C H))

If the chosen finite source hits every element of H, the source-shaped completed Fox boundary has image equal to the algebraic standard-generator ideal.

Show proof
instance instTopologicalSpaceZCCompletedFoxSemidirect :
    TopologicalSpace (ZCCompletedFoxSemidirect C X H) :=
  TopologicalSpace.induced
    (fun a : ZCCompletedFoxSemidirect C X H => (a.left, a.right)) inferInstance

The completed Fox semidirect product carries the inverse-limit topological space structure.

def zcCompletedFoxSemidirectHomeomorphProd :
    ZCCompletedFoxSemidirect C X H ≃ₜ (ZCFreeFoxCoordinates C (X := X) (H := H) × H) where
  toEquiv :=
    { toFun := fun a => (a.left, a.right)
      invFun := fun p => { left := p.1, right := p.2 }
      left_inv := by
        intro a
        cases a
        rfl
      right_inv := by
        intro p
        cases p
        rfl }
  continuous_toFun := continuous_induced_dom
  continuous_invFun := by
    rw [continuous_induced_rng]
    exact continuous_id

The completed Fox semidirect target is homeomorphic to its product of components.

theorem continuous_zcCompletedFoxSemidirect_toProd :
    Continuous (fun a : ZCCompletedFoxSemidirect C X H => (a.left, a.right))

The component-pair map from the semidirect target is continuous.

Show proof
theorem continuous_zcCompletedFoxSemidirect_left :
    Continuous (fun a : ZCCompletedFoxSemidirect C X H => a.left)

The Fox-coordinate projection from the semidirect target is continuous.

Show proof
theorem continuous_zcCompletedFoxSemidirect_right :
    Continuous (fun a : ZCCompletedFoxSemidirect C X H => a.right)

The group projection from the semidirect target is continuous.

Show proof
instance instCompactSpaceZCCompletedFoxSemidirect [CompactSpace H] :
    CompactSpace (ZCCompletedFoxSemidirect C X H) := by
  exact (zcCompletedFoxSemidirectHomeomorphProd C X H).symm.compactSpace

The completed Fox semidirect product is compact as an inverse limit of finite stages.

instance instT2SpaceZCCompletedFoxSemidirect [T2Space H] :
    T2Space (ZCCompletedFoxSemidirect C X H) := by
  exact (zcCompletedFoxSemidirectHomeomorphProd C X H).symm.t2Space

The completed Fox semidirect product is Hausdorff for the inverse-limit topology.

instance instTotallyDisconnectedSpaceZCCompletedFoxSemidirect [TotallyDisconnectedSpace H] :
    TotallyDisconnectedSpace (ZCCompletedFoxSemidirect C X H) := by
  exact (zcCompletedFoxSemidirectHomeomorphProd C X H).symm.totallyDisconnectedSpace

The completed Fox semidirect product is totally disconnected as an inverse limit of finite discrete stages.

instance instIsTopologicalGroupZCCompletedFoxSemidirect :
    IsTopologicalGroup (ZCCompletedFoxSemidirect C X H) where
  continuous_mul := by
    letI : ContinuousMul H := (inferInstanceAs (IsTopologicalGroup H)).toContinuousMul
    rw [continuous_induced_rng]
    have hleft : Continuous (fun p : ZCCompletedFoxSemidirect C X H ×
        ZCCompletedFoxSemidirect C X H => (p.1 * p.2).left) := by
      refine continuous_pi fun x => ?_
      have hleftA : Continuous (fun p : ZCCompletedFoxSemidirect C X H ×
          ZCCompletedFoxSemidirect C X H => p.1.left x) :=
        (continuous_apply x).comp
          ((continuous_zcCompletedFoxSemidirect_left C X H).comp continuous_fst)
      have hrightA : Continuous (fun p : ZCCompletedFoxSemidirect C X H ×
          ZCCompletedFoxSemidirect C X H => p.2.left x) :=
        (continuous_apply x).comp
          ((continuous_zcCompletedFoxSemidirect_left C X H).comp continuous_snd)
      have hgroup : Continuous (fun p : ZCCompletedFoxSemidirect C X H ×
          ZCCompletedFoxSemidirect C X H => zcGroupLike C H p.1.right) :=
        (continuous_zcGroupLike (C := C) (G := H)).comp
          ((continuous_zcCompletedFoxSemidirect_right C X H).comp continuous_fst)
      change Continuous (fun p : ZCCompletedFoxSemidirect C X H ×
          ZCCompletedFoxSemidirect C X H =>
        p.1.left x + zcGroupLike C H p.1.right * p.2.left x)
      exact hleftA.add (hgroup.mul hrightA)
    have hright : Continuous (fun p : ZCCompletedFoxSemidirect C X H ×
        ZCCompletedFoxSemidirect C X H => (p.1 * p.2).right) := by
      exact ((continuous_zcCompletedFoxSemidirect_right C X H).comp continuous_fst).mul
        ((continuous_zcCompletedFoxSemidirect_right C X H).comp continuous_snd)
    exact hleft.prodMk hright
  continuous_inv := by
    letI : ContinuousInv H := (inferInstanceAs (IsTopologicalGroup H)).toContinuousInv
    rw [continuous_induced_rng]
    have hleft : Continuous (fun a : ZCCompletedFoxSemidirect C X H => a⁻¹.left) := by
      refine continuous_pi fun x => ?_
      have hleftA : Continuous (fun a : ZCCompletedFoxSemidirect C X H => a.left x) :=
        (continuous_apply x).comp (continuous_zcCompletedFoxSemidirect_left C X H)
      have hgroup : Continuous (fun a : ZCCompletedFoxSemidirect C X H =>
          zcGroupLike C H a.right⁻¹) :=
        (continuous_zcGroupLike (C := C) (G := H)).comp
          ((continuous_zcCompletedFoxSemidirect_right C X H).inv)
      change Continuous (fun a : ZCCompletedFoxSemidirect C X H =>
        -(zcGroupLike C H a.right⁻¹ * a.left x))
      exact (hgroup.mul hleftA).neg
    have hright : Continuous (fun a : ZCCompletedFoxSemidirect C X H => a⁻¹.right) := by
      exact (continuous_zcCompletedFoxSemidirect_right C X H).inv
    exact hleft.prodMk hright

The completed Fox semidirect product is a topological group for the inverse-limit topology.

theorem isProfiniteGroup_zcCompletedFoxSemidirect
    [CompactSpace H] [T2Space H] [TotallyDisconnectedSpace H] :
    ProCGroups.IsProfiniteGroup (ZCCompletedFoxSemidirect C X H)

The completed Fox semidirect target is profinite when the group component is profinite.

Show proof
instance instAllFiniteProCGroupZCCompletedFoxSemidirect
    [CompactSpace H] [T2Space H] [TotallyDisconnectedSpace H] :
    ProCGroups.ProC.ProCGroup ProCGroups.ProC.allFiniteProC
      (ZCCompletedFoxSemidirect C X H) :=
  ProCGroups.ProC.allFiniteProCGroup_of_profinite
    (isProfiniteGroup_zcCompletedFoxSemidirect C X H)

The completed Fox semidirect target is an all-finite pro-\(C\) group when the group component is profinite.

theorem allFiniteProC_zcCompletedFoxSemidirect
    [CompactSpace H] [T2Space H] [TotallyDisconnectedSpace H] :
    ProCGroups.ProC.allFiniteProC (G := ZCCompletedFoxSemidirect C X H)

The completed Fox semidirect target is an all-finite pro-\(C\) group when the group component is profinite. The formulation is useful when the target profiniteness hypothesis must be supplied explicitly.

Show proof
theorem finiteGroupClass_multiplicative_modNCompletedGroupAlgebraStageInClass_mem
    (hIso : ProCGroups.FiniteGroupClass.IsomClosed C)
    (hProd : ProCGroups.FiniteGroupClass.FiniteProductClosed C)
    (i : ProCIntegerIndex C) (U : CompletedGroupAlgebraIndexInClass H C) :
    C (Multiplicative (ModNCompletedGroupAlgebraStageInClass i.modulus H C U))

One finite stage \((\mathbb{Z}/n\mathbb{Z})[H/U]\), viewed multiplicatively through its additive group, belongs to \(C\). The proof identifies it with a finite product of allowed cyclic coefficient groups over the finite quotient \(H/U\).

Show proof
def zcCompletedGroupAlgebraMultiplicativeSystem :
    ProCGroups.InverseSystems.InverseSystem (I := ZCCompletedGroupAlgebraIndex C H) where
  X := fun i => Multiplicative (ZCCompletedGroupAlgebraStage C H i)
  topologicalSpace := fun _ => ⊥
  map := fun {i j} hij =>
    (zcCompletedGroupAlgebraTransition C H hij).toAddMonoidHom.toMultiplicative
  continuous_map := by
    intro i j hij
    exact continuous_of_discreteTopology
  map_id := by
    intro i
    funext x
    apply Multiplicative.ext
    change zcCompletedGroupAlgebraTransition C H (le_rfl : i ≤ i) x.toAdd = x.toAdd
    simp only [zcCompletedGroupAlgebraTransition_id, RingHom.id_apply]
  map_comp := by
    intro i j k hij hjk
    funext x
    apply Multiplicative.ext
    change
      zcCompletedGroupAlgebraTransition C H hij
          (zcCompletedGroupAlgebraTransition C H hjk x.toAdd) =
        zcCompletedGroupAlgebraTransition C H (hij.trans hjk) x.toAdd
    exact congrArg (fun f : ZCCompletedGroupAlgebraStage C H k →+*
        ZCCompletedGroupAlgebraStage C H i => f x.toAdd)
      (zcCompletedGroupAlgebraTransition_comp C H hij hjk)

The group-valued inverse system underlying the additive group of \(\mathbb{Z}_C\llbracket H\rrbracket\), written multiplicatively.

instance instGroupZCCompletedGroupAlgebraMultiplicativeSystemStage
    (i : ZCCompletedGroupAlgebraIndex C H) :
    Group ((zcCompletedGroupAlgebraMultiplicativeSystem C H).X i) := by
  dsimp [zcCompletedGroupAlgebraMultiplicativeSystem]
  infer_instance

Each finite-stage group algebra in the multiplicative system carries its group structure.

instance instIsTopologicalGroupZCCompletedGroupAlgebraMultiplicativeSystemStage
    (i : ZCCompletedGroupAlgebraIndex C H) :
    IsTopologicalGroup ((zcCompletedGroupAlgebraMultiplicativeSystem C H).X i) := by
  dsimp [zcCompletedGroupAlgebraMultiplicativeSystem]
  infer_instance

Each finite-stage group algebra in the multiplicative system is a topological group.

instance instIsGroupSystemZCCompletedGroupAlgebraMultiplicativeSystem :
    ProCGroups.InverseSystems.IsGroupSystem
      (zcCompletedGroupAlgebraMultiplicativeSystem C H) where
  map_one := by
    intro i j hij
    simp only [zcCompletedGroupAlgebraMultiplicativeSystem, RingHom.toAddMonoidHom_eq_coe,
  AddMonoidHom.coe_toMultiplicative, AddMonoidHom.coe_coe, Function.comp_apply, toAdd_one, map_zero, ofAdd_zero]
  map_mul := by
    intro i j hij x y
    simp only [zcCompletedGroupAlgebraMultiplicativeSystem, RingHom.toAddMonoidHom_eq_coe,
  AddMonoidHom.coe_toMultiplicative, AddMonoidHom.coe_coe, Function.comp_apply, toAdd_mul, map_add, ofAdd_add]
  map_inv := by
    intro i j hij x
    simp only [zcCompletedGroupAlgebraMultiplicativeSystem, RingHom.toAddMonoidHom_eq_coe,
  AddMonoidHom.coe_toMultiplicative, AddMonoidHom.coe_coe, Function.comp_apply, toAdd_inv, map_neg, ofAdd_neg]

The multiplicative finite-stage group-algebra system is group-valued.

def zcCompletedGroupAlgebraMultiplicativeLimitEquiv :
    (zcCompletedGroupAlgebraMultiplicativeSystem C H).inverseLimit ≃ₜ*
      Multiplicative (ZCCompletedGroupAlgebra C H) := by
  let S := zcCompletedGroupAlgebraMultiplicativeSystem C H
  letI : ∀ i : ZCCompletedGroupAlgebraIndex C H, Group (S.X i) := fun i => by
    dsimp [S, zcCompletedGroupAlgebraMultiplicativeSystem]
    infer_instance
  letI : ProCGroups.InverseSystems.IsGroupSystem S := by
    dsimp [S]
    infer_instance
  refine
    { toMulEquiv := ?_
      continuous_toFun := ?_
      continuous_invFun := ?_ }
  · refine
      { toFun := fun x =>
          Multiplicative.ofAdd
            (⟨fun i => (S.projection i x).toAdd, by
              intro i j hij
              exact congrArg Multiplicative.toAdd (S.projection_compatible x i j hij)⟩ :
              ZCCompletedGroupAlgebra C H)
        invFun := fun x =>
          (⟨fun i =>
              Multiplicative.ofAdd
                (zcCompletedGroupAlgebraProjection C H i x.toAdd), by
            intro i j hij
            apply Multiplicative.ext
            exact x.toAdd.2 i j hij⟩ :
            S.inverseLimit)
        left_inv := by
          intro x
          apply S.ext
          intro i
          rfl
        right_inv := by
          intro x
          apply Multiplicative.ext
          ext i
          rfl
        map_mul' := by
          intro x y
          apply Multiplicative.ext
          ext i
          rfl }
  · refine continuous_ofAdd.comp ?_
    have hambient : Continuous fun x : S.inverseLimit =>
        (fun i : ZCCompletedGroupAlgebraIndex C H => (S.projection i x).toAdd :
          ∀ i : ZCCompletedGroupAlgebraIndex C H, ZCCompletedGroupAlgebraStage C H i) := by
      exact continuous_pi fun i => continuous_toAdd.comp (S.continuous_projection i)
    exact Continuous.subtype_mk hambient (fun x => by
      intro i j hij
      exact congrArg Multiplicative.toAdd (S.projection_compatible x i j hij))
  · have hambient : Continuous fun x : Multiplicative (ZCCompletedGroupAlgebra C H) =>
        (fun i : ZCCompletedGroupAlgebraIndex C H =>
          Multiplicative.ofAdd (zcCompletedGroupAlgebraProjection C H i x.toAdd) :
          ∀ i : ZCCompletedGroupAlgebraIndex C H, S.X i) := by
      exact continuous_pi fun i =>
        continuous_ofAdd.comp
          ((continuous_apply i).comp (continuous_subtype_val.comp continuous_toAdd))
    exact Continuous.subtype_mk hambient (fun x => by
      intro i j hij
      apply Multiplicative.ext
      exact x.toAdd.2 i j hij)

The multiplicative inverse limit of the finite completed group-algebra stages is the additive group underlying \(\mathbb{Z}_C\llbracket H\rrbracket\), written multiplicatively.

theorem directed_zcCompletedGroupAlgebraIndex_of_formation
    (hForm : ProCGroups.FiniteGroupClass.Formation C) :
    Directed (· ≤ ·)
      (id : ZCCompletedGroupAlgebraIndex C H → ZCCompletedGroupAlgebraIndex C H)

The two-parameter completed group-algebra index is directed when \(C\) is a formation.

Show proof
theorem isProCGroup_multiplicative_zcCompletedGroupAlgebra
    (hForm : ProCGroups.FiniteGroupClass.Formation C) :
    ProCGroups.ProC.IsProCGroup C (Multiplicative (ZCCompletedGroupAlgebra C H))

The additive group underlying \(\mathbb{Z}_C\llbracket H\rrbracket\), written multiplicatively, is pro-\(C\).

Show proof
def multiplicativePiContinuousMulEquiv
    (A : Type u) [AddCommGroup A] [TopologicalSpace A] :
    Multiplicative (X → A) ≃ₜ* (X → Multiplicative A) where
  toMulEquiv :=
    { toFun := fun f x => Multiplicative.ofAdd (f.toAdd x)
      invFun := fun f => Multiplicative.ofAdd fun x => (f x).toAdd
      left_inv := by
        intro f
        rfl
      right_inv := by
        intro f
        rfl
      map_mul' := by
        intro f g
        rfl }
  continuous_toFun := by
    exact continuous_pi fun x =>
      continuous_ofAdd.comp ((continuous_apply x).comp continuous_toAdd)
  continuous_invFun := by
    exact continuous_ofAdd.comp
      (continuous_pi fun x => continuous_toAdd.comp (continuous_apply x))

Coordinatewise, the multiplicative version of an additive function group is the product of the multiplicative coordinate groups.

theorem isProCGroup_multiplicative_zcFreeFoxCoordinates
    (hForm : ProCGroups.FiniteGroupClass.Formation C) :
    ProCGroups.ProC.IsProCGroup C
      (Multiplicative (ZCFreeFoxCoordinates C (X := X) (H := H)))

The additive Fox-coordinate group \(\mathbb{Z}_C\llbracket H\rrbracket^{X}\), written multiplicatively, is pro-\(C\).

Show proof
def zcCompletedFoxSemidirectRightKernelEquivCoordinates :
    ((ZCCompletedFoxSemidirect.rightMonoidHom C X H).ker :
        Subgroup (ZCCompletedFoxSemidirect C X H)) ≃ₜ*
      Multiplicative (ZCFreeFoxCoordinates C (X := X) (H := H)) where
  toMulEquiv :=
    { toFun := fun a => Multiplicative.ofAdd a.1.left
      invFun := fun v =>
        ⟨{ left := v.toAdd, right := 1 }, by
          simp only [ZCCompletedFoxSemidirect.rightMonoidHom, MonoidHom.mem_ker, MonoidHom.coe_mk, OneHom.coe_mk]⟩
      left_inv := by
        intro a
        apply Subtype.ext
        apply ZCCompletedFoxSemidirect.ext
        · rfl
        · change (1 : H) = a.1.right
          exact a.2.symm
      right_inv := by
        intro v
        rfl
      map_mul' := by
        intro a b
        apply Multiplicative.ext
        have ha : a.1.right = 1 := by
          exact a.2
        simp only [Subgroup.coe_mul, ZCCompletedFoxSemidirect.mul_left, ha, map_one, one_smul, ofAdd_add, toAdd_mul,
  toAdd_ofAdd]}
  continuous_toFun := by
    exact continuous_ofAdd.comp
      ((continuous_zcCompletedFoxSemidirect_left C X H).comp continuous_subtype_val)
  continuous_invFun := by
    refine Continuous.subtype_mk ?_ (fun v => by
      simp only [ZCCompletedFoxSemidirect.rightMonoidHom, MonoidHom.mem_ker, MonoidHom.coe_mk, OneHom.coe_mk])
    rw [continuous_induced_rng]
    exact continuous_toAdd.prodMk continuous_const

The kernel of the right projection \(\mathbb{Z}_C\llbracket H\rrbracket^{X} \rtimes H \to H\) is the additive coordinate group, written multiplicatively.

theorem isProCGroup_zcCompletedFoxSemidirect_rightKernel
    (hForm : ProCGroups.FiniteGroupClass.Formation C) :
    ProCGroups.ProC.IsProCGroup C
      ((ZCCompletedFoxSemidirect.rightMonoidHom C X H).ker :
        Subgroup (ZCCompletedFoxSemidirect C X H))

The right-projection kernel in the completed Fox semidirect product is pro-\(C\).

Show proof
theorem isProCGroup_zcCompletedFoxSemidirect_of_isProCGroup
    (hMel : ProCGroups.FiniteGroupClass.MelnikovFormation C)
    (hH : ProCGroups.ProC.IsProCGroup C H) :
    ProCGroups.ProC.IsProCGroup C (ZCCompletedFoxSemidirect C X H)

The completed Fox semidirect target \(\mathbb{Z}_C\llbracket H\rrbracket^{X} \rtimes H\) is pro-\(C\) when \(H\) is pro-\(C\).

Show proof
theorem proCGroup_zcCompletedFoxSemidirect
    (ProC : ProCGroups.ProC.ProCGroupPredicate.{u})
    [ProC.HasFiniteQuotientMelnikovFormation] [ProC.DeterminedByFiniteQuotients]
    [ProCGroups.ProC.ProCGroup ProC H] :
    ProCGroups.ProC.ProCGroup ProC
      (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)

Bundled pro-\(C\)-group form for the completed Fox semidirect target.

Show proof
theorem allFiniteProC_freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
    [CompactSpace H] [T2Space H] [TotallyDisconnectedSpace H] (φ : X → H) :
    ProCGroups.ProC.allFiniteProC
      (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProCGroups.ProC.allFiniteProC) φ : Subgroup
            (ZCCompletedFoxSemidirect
              ProCGroups.ProC.allFiniteProC.finiteQuotientClass X H)))

The closed target generated by the Fox graph generators is an all-finite pro-\(C\) group when the ambient completed Fox semidirect target is profinite.

Show proof