FoxDifferential.Completed.FreeProC.SemidirectLift

61 Theorem | 22 Definition

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

def freeProCZCCompletedFoxSemidirectGenerator (φ : X → H) :
    X → ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H :=
  fun x =>
    { left := Pi.single x (1 : ZCCompletedGroupAlgebra ProC.finiteQuotientClass H)
      right := φ x }

The generator map into the completed Fox semidirect target attached to a basis-value map \(\varphi: X \to H\).

theorem freeProCZCCompletedFoxSemidirectGenerator_left
    (φ : X → H) (x : X) :
    (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ x).left =
      Pi.single x (1 : ZCCompletedGroupAlgebra ProC.finiteQuotientClass H)

The generator map has the expected left coordinate.

Show proof
theorem freeProCZCCompletedFoxSemidirectGenerator_right
    (φ : X → H) (x : X) :
    (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ x).right = φ x

The generator map has the expected right coordinate.

Show proof
theorem freeProCZCCompletedFoxSemidirectGenerator_convergesToOne_of_finite
    [Finite X] (φ : X → H) :
    FamilyConvergesToOne
      (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
      (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)

For a finite generator set, the completed Fox semidirect generator map automatically converges to \(1\).

Show proof
def freeProCZCCompletedFoxSemidirectClosedGeneratedTarget (φ : X → H) :
    ClosedSubgroup (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H) :=
  ProCGroups.Generation.closedSubgroupGenerated
    (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
    (Set.range (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))

The closed subgroup of the completed Fox semidirect target generated by the Fox graph generators.

theorem freeProCZCCompletedFoxSemidirectClosedGeneratedTarget_proCGroup
    [ProC.HasFiniteQuotientMelnikovFormation] [ProC.HasFiniteQuotientHereditary]
    [ProC.DeterminedByFiniteQuotients]
    [ProCGroups.ProC.ProCGroup ProC
      (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)]
    (φ : X → H) :
    ProCGroups.ProC.ProCGroup ProC
      (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))

If the ambient completed Fox semidirect target is a pro-\(C\) group, then the closed target generated by the Fox graph generators is pro-\(C\) by closed-subgroup permanence.

Show proof
theorem freeProCZCCompletedFoxSemidirectClosedGeneratedTarget_proC
    [ProC.HasFiniteQuotientMelnikovFormation] [ProC.HasFiniteQuotientHereditary]
    [ProC.DeterminedByFiniteQuotients]
    [ProCGroups.ProC.ProCGroup ProC
      (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)]
    (φ : X → H) :
    ProC
      (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))

The closed generated target of the free pro-\(C\), \(\mathbb{Z}_C\)-completed Fox semidirect construction is a pro-\(C\) group.

Show proof
def freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (φ : X → H) :
    X →
      (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)) :=
  ProCGroups.Generation.closedSubgroupGeneratedMap
    (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
    (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)

The Fox graph generator map, with codomain restricted to the closed subgroup it generates.

theorem freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator_val
    (φ : X → H) (x : X) :
    (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ x :
      ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H) =
      freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ x

The closed-generated Fox semidirect generator has underlying value equal to the corresponding semidirect generator.

Show proof
theorem freeProCZCCompletedFoxSemidirectGenerator_mem_closedGeneratedTarget
    (φ : X → H) (x : X) :
    freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ x ∈
      (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))

Each Fox graph generator belongs to the closed subgroup generated by the Fox graph.

Show proof
theorem zcCompletedFoxSemidirectLift_freeGroupLift_mem_closedGeneratedTarget
    (φ : X → H) (w : FreeGroup X) :
    zcCompletedFoxSemidirectLift ProC.finiteQuotientClass (FreeGroup.lift φ) w ∈
      (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))

The completed semidirect Fox graph of every abstract free-group word lies in the closed subgroup generated by the Fox graph generators.

Show proof
theorem freeProCZCFoxClosedGenTarget_mem_of_freeFoxDerivVec
    (φ : X → H) (w : FreeGroup X) :
    ({ left :=
        zcFreeGroupFoxDerivativeVector ProC.finiteQuotientClass (FreeGroup.lift φ) w,
       right := FreeGroup.lift φ w } :
      ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H) ∈
      (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))

Equivalently, the pair consisting of the completed free Fox derivative vector and the target word value belongs to the closed generated Fox graph.

Show proof
theorem freeProCZCFoxClosedGenTarget_mem_of_freeFoxDerivVec_kernel
    (φ : X → H) {w : FreeGroup X} (hw : FreeGroup.lift φ w = 1) :
    ({ left :=
        zcFreeGroupFoxDerivativeVector ProC.finiteQuotientClass (FreeGroup.lift φ) w,
       right := (1 : H) } :
      ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H) ∈
      (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))

If an abstract free-group word maps trivially to the target group, its completed Fox derivative vector gives a genuine cycle point \((D w, 1)\) in the closed generated Fox graph.

Show proof
def freeProCZCCompletedFoxSemidirectKernelCycleSet (φ : X → H) :
    Set (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H) :=
  { y | ∃ w : FreeGroup X, FreeGroup.lift φ w = 1 ∧
      y =
        ({ left :=
            zcFreeGroupFoxDerivativeVector ProC.finiteQuotientClass
              (FreeGroup.lift φ) w,
           right := (1 : H) } :
          ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H) }

The algebraic kernel-word cycle points in the completed Fox semidirect product. These are the points \((D w, 1)\) obtained from abstract free-group words whose target value is 1. The remaining density step for the completed Fox cycles is formulated using the closure of this set.

def freeProCZCCompletedFoxSemidirectBoundaryCycleSet [Fintype X] (φ : X → H) :
    Set (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H) :=
  { y | y.right = 1 ∧
      zcFreeGroupFoxBoundary ProC.finiteQuotientClass (FreeGroup.lift φ) y.left = 0 }

The completed Fox boundary-cycle set inside the completed Fox semidirect product. Its points are exactly the pairs \((v,1)\) whose coordinate vector is killed by the source-shaped completed Fox boundary. The remaining density step can be expressed as saying that this boundary-cycle set is contained in the closure of the algebraic kernel-word cycle set.

def freeProCZCCompletedFoxSemidirectGraphWordPoint (φ : X → H) (w : FreeGroup X) :
    ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H :=
  { left :=
      zcFreeGroupFoxDerivativeVector ProC.finiteQuotientClass (FreeGroup.lift φ) w,
    right := FreeGroup.lift φ w }

The genuine completed Fox graph point \((D w, \varphi(w))\) attached to an abstract free-group word.

theorem freeProCZCCompletedFoxSemidirectGraphWordPoint_left
    (φ : X → H) (w : FreeGroup X) :
    (freeProCZCCompletedFoxSemidirectGraphWordPoint (ProC := ProC) φ w).left =
      zcFreeGroupFoxDerivativeVector ProC.finiteQuotientClass (FreeGroup.lift φ) w

The left component of a semidirect graph-word point is the completed free-group Fox derivative vector of the word.

Show proof
theorem freeProCZCCompletedFoxSemidirectGraphWordPoint_right
    (φ : X → H) (w : FreeGroup X) :
    (freeProCZCCompletedFoxSemidirectGraphWordPoint (ProC := ProC) φ w).right =
      FreeGroup.lift φ w

The right component of a semidirect graph-word point is \(\mathrm{FreeGroup.lift}(\varphi)(w)\).

Show proof
def freeProCZCCompletedFoxSemidirectGraphWordSet (φ : X → H) :
    Set (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H) :=
  { y | ∃ w : FreeGroup X,
      y = freeProCZCCompletedFoxSemidirectGraphWordPoint (ProC := ProC) φ w }

The set of all completed Fox graph points attached to abstract free-group words.

theorem mem_freeProCZCCompletedFoxSemidirectGraphWordSet_iff
    (φ : X → H)
    (y : ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H) :
    y ∈ freeProCZCCompletedFoxSemidirectGraphWordSet (ProC := ProC) φ ↔
      ∃ w : FreeGroup X,
        y = freeProCZCCompletedFoxSemidirectGraphWordPoint (ProC := ProC) φ w

Membership in the completed Fox semidirect graph word set is equivalent to the displayed coordinate condition.

Show proof
theorem freeProCZCCompletedFoxSemidirectGraphWordPoint_mem_closedGeneratedTarget
    (φ : X → H) (w : FreeGroup X) :
    freeProCZCCompletedFoxSemidirectGraphWordPoint (ProC := ProC) φ w ∈
      (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))

Every completed graph-word point lies in the closed subgroup generated by the Fox graph generators.

Show proof
theorem freeProCZCCompletedFoxSemidirectGraphWordSet_subset_closedGeneratedTarget
    (φ : X → H) :
    freeProCZCCompletedFoxSemidirectGraphWordSet (ProC := ProC) φ ⊆
      ((freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)) : Set
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))

The graph-word set lies in the closed subgroup generated by the Fox graph generators.

Show proof
theorem closure_freeProCZCFoxSemiGraphWordSet_subset_closedGenTarget
    (φ : X → H) :
    closure (freeProCZCCompletedFoxSemidirectGraphWordSet (ProC := ProC) φ) ⊆
      ((freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)) : Set
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))

The closure of the graph-word set remains in the closed generated Fox graph target.

Show proof
theorem freeProCZCFoxBoundaryCycles_subset_closedGenTarget_of_graphWord_density
    [Fintype X] (φ : X → H)
    (hdensity :
      freeProCZCCompletedFoxSemidirectBoundaryCycleSet (ProC := ProC) φ ⊆
        closure (freeProCZCCompletedFoxSemidirectGraphWordSet (ProC := ProC) φ)) :
    freeProCZCCompletedFoxSemidirectBoundaryCycleSet (ProC := ProC) φ ⊆
      ((freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)) : Set
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))

Graph-word density places every completed boundary cycle in the closed generated Fox graph target.

Show proof
theorem zcFreeGroupFoxBoundary_zcFreeGroupFoxDerivativeVector_of_kernel
    [Fintype X] (φ : X → H) {w : FreeGroup X}
    (hw : FreeGroup.lift φ w = 1) :
    zcFreeGroupFoxBoundary ProC.finiteQuotientClass (FreeGroup.lift φ)
        (zcFreeGroupFoxDerivativeVector ProC.finiteQuotientClass (FreeGroup.lift φ) w) = 0

A kernel word has zero completed Fox boundary. This is the completed Fox fundamental formula applied before taking closures: if \(w\) maps to \(1\), then the Euler boundary of its Fox derivative vector is zero.

Show proof
theorem freeProCZCCompletedFoxSemidirectKernelCycleSet_subset_boundaryCycleSet
    [Fintype X] (φ : X → H) :
    freeProCZCCompletedFoxSemidirectKernelCycleSet (ProC := ProC) φ ⊆
      freeProCZCCompletedFoxSemidirectBoundaryCycleSet (ProC := ProC) φ

Every algebraic kernel-word cycle point is an actual completed Fox boundary cycle.

Show proof
def freeProCZCCompletedFoxSemidirectBoundaryCycleSubgroup
    [Fintype X] (φ : X → H) :
    Subgroup (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H) where
  carrier := freeProCZCCompletedFoxSemidirectBoundaryCycleSet (ProC := ProC) φ
  one_mem' := by
    constructor
    · rfl
    · simp only [ZCCompletedFoxSemidirect.one_left, map_zero]
  mul_mem' := by
    intro a b ha hb
    rcases ha with ⟨ha_right, ha_boundary⟩
    rcases hb with ⟨hb_right, hb_boundary⟩
    constructor
    · simp only [ZCCompletedFoxSemidirect.mul_right, ha_right, hb_right, mul_one]
    · calc
        zcFreeGroupFoxBoundary ProC.finiteQuotientClass (FreeGroup.lift φ) (a * b).left
            = zcFreeGroupFoxBoundary ProC.finiteQuotientClass (FreeGroup.lift φ)
                (a.left + b.left) := by
                simp only [ZCCompletedFoxSemidirect.mul_left, ha_right, map_one, one_smul, map_add]
        _ = zcFreeGroupFoxBoundary ProC.finiteQuotientClass (FreeGroup.lift φ) a.left +
              zcFreeGroupFoxBoundary ProC.finiteQuotientClass (FreeGroup.lift φ) b.left := by
                rw [map_add]
        _ = 0 := by
                simp only [ha_boundary, hb_boundary, add_zero]
  inv_mem' := by
    intro a ha
    rcases ha with ⟨ha_right, ha_boundary⟩
    constructor
    · simp only [ZCCompletedFoxSemidirect.inv_right, ha_right, inv_one]
    · calc
        zcFreeGroupFoxBoundary ProC.finiteQuotientClass (FreeGroup.lift φ) a⁻¹.left
            = zcFreeGroupFoxBoundary ProC.finiteQuotientClass (FreeGroup.lift φ) (-a.left) := by
                simp only [ZCCompletedFoxSemidirect.inv_left, ha_right, inv_one, map_one, one_smul, map_neg]
        _ = -zcFreeGroupFoxBoundary ProC.finiteQuotientClass (FreeGroup.lift φ) a.left := by
                rw [map_neg]
        _ = 0 := by
                simp only [ha_boundary, neg_zero]

The boundary-cycle points form an actual subgroup of the completed Fox semidirect product. Algebraically this is the additive kernel of the source-shaped completed Fox boundary, embedded as the right-trivial subgroup \((v,1)\).

theorem freeProCZCCompletedFoxSemidirectBoundaryCycleSubgroup_coe
    [Fintype X] (φ : X → H) :
    ((freeProCZCCompletedFoxSemidirectBoundaryCycleSubgroup
      (ProC := ProC) φ : Subgroup
        (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)) : Set
        (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)) =
      freeProCZCCompletedFoxSemidirectBoundaryCycleSet (ProC := ProC) φ

The \(\mathbb{Z}_C\)-completed differential-module boundary is the finite-stage boundary obtained from the source and target coordinates.

Show proof
theorem isClosed_freeProCZCCompletedFoxSemidirectBoundaryCycleSet_of_continuous
    [Fintype X] [T1Space H]
    [TopologicalSpace (ZCCompletedGroupAlgebra ProC.finiteQuotientClass H)]
    [T1Space (ZCCompletedGroupAlgebra ProC.finiteQuotientClass H)]
    (φ : X → H)
    (hleft :
      Continuous
        (fun y : ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H => y.left))
    (hright :
      Continuous
        (fun y : ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H => y.right))
    (hboundary :
      Continuous
        (zcFreeGroupFoxBoundary ProC.finiteQuotientClass (FreeGroup.lift φ))) :
    IsClosed (freeProCZCCompletedFoxSemidirectBoundaryCycleSet (ProC := ProC) φ)

The completed Fox boundary-cycle set is closed whenever the two semidirect projections and the source-shaped completed Fox boundary are continuous. This is the topological half of the density frontier: algebraic kernel-word cycles stay inside actual boundary cycles after taking closure.

Show proof
theorem closure_freeProCZCFoxSemiKernelCycleSet_subset_boundaryCycleSet_of_continuous
    [Fintype X] [T1Space H]
    [TopologicalSpace (ZCCompletedGroupAlgebra ProC.finiteQuotientClass H)]
    [T1Space (ZCCompletedGroupAlgebra ProC.finiteQuotientClass H)]
    (φ : X → H)
    (hleft :
      Continuous
        (fun y : ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H => y.left))
    (hright :
      Continuous
        (fun y : ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H => y.right))
    (hboundary :
      Continuous
        (zcFreeGroupFoxBoundary ProC.finiteQuotientClass (FreeGroup.lift φ))) :
    closure (freeProCZCCompletedFoxSemidirectKernelCycleSet (ProC := ProC) φ) ⊆
      freeProCZCCompletedFoxSemidirectBoundaryCycleSet (ProC := ProC) φ

Closure of algebraic kernel-word cycle points remains inside the actual completed Fox boundary-cycle set, assuming the displayed boundary-cycle set is topologically closed.

Show proof
theorem closure_freeProCZCFoxSemiKernelCycleSet_eq_boundaryCycleSet_iff_density
    [Fintype X] [T1Space H]
    [TopologicalSpace (ZCCompletedGroupAlgebra ProC.finiteQuotientClass H)]
    [T1Space (ZCCompletedGroupAlgebra ProC.finiteQuotientClass H)]
    (φ : X → H)
    (hleft :
      Continuous
        (fun y : ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H => y.left))
    (hright :
      Continuous
        (fun y : ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H => y.right))
    (hboundary :
      Continuous
        (zcFreeGroupFoxBoundary ProC.finiteQuotientClass (FreeGroup.lift φ))) :
    closure (freeProCZCCompletedFoxSemidirectKernelCycleSet (ProC := ProC) φ) =
        freeProCZCCompletedFoxSemidirectBoundaryCycleSet (ProC := ProC) φ ↔
      freeProCZCCompletedFoxSemidirectBoundaryCycleSet (ProC := ProC) φ ⊆
        closure (freeProCZCCompletedFoxSemidirectKernelCycleSet (ProC := ProC) φ)

With the continuity inputs in place, the remaining density statement is equivalently the claim that the closure of algebraic kernel-word cycle points is exactly the boundary-cycle set.

Show proof
theorem freeProCZCCompletedFoxSemidirectKernelCycleSet_subset_closedGeneratedTarget
    (φ : X → H) :
    freeProCZCCompletedFoxSemidirectKernelCycleSet (ProC := ProC) φ ⊆
      ((freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)) : Set
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))

Every algebraic kernel-word cycle point lies in the closed generated Fox graph target.

Show proof
theorem closure_freeProCZCFoxSemiKernelCycleSet_subset_closedGenTarget
    (φ : X → H) :
    closure (freeProCZCCompletedFoxSemidirectKernelCycleSet (ProC := ProC) φ) ⊆
      ((freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)) : Set
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))

The closure of algebraic kernel-word cycle points is still contained in the closed generated Fox graph target.

Show proof
theorem freeProCZCFoxBoundaryCycles_subset_closedGenTarget_of_density
    [Fintype X] (φ : X → H)
    (hdensity :
      freeProCZCCompletedFoxSemidirectBoundaryCycleSet (ProC := ProC) φ ⊆
        closure (freeProCZCCompletedFoxSemidirectKernelCycleSet (ProC := ProC) φ)) :
    freeProCZCCompletedFoxSemidirectBoundaryCycleSet (ProC := ProC) φ ⊆
      ((freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)) : Set
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))

If the boundary-cycle set is dense in the algebraic kernel-word closure, then every completed Fox boundary cycle belongs to the closed subgroup generated by the Fox graph.

Show proof
theorem freeProCZCFoxClosedGenTarget_mem_of_mem_closure_kernelCycleSet
    (φ : X → H)
    {y : ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H}
    (hy :
      y ∈ closure
        (freeProCZCCompletedFoxSemidirectKernelCycleSet (ProC := ProC) φ)) :
    y ∈
      (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))

Pointwise form of the closure step for algebraic kernel-word cycle points.

Show proof
theorem freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator_topologicallyGenerates
    (φ : X → H) :
    ProCGroups.Generation.TopologicallyGenerates
      (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
      (Set.range
        (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ))

The restricted Fox graph generators topologically generate their closed generated target.

Show proof
theorem freeProCZCFoxSemiClosedGenGenerator_convergesToOne_of_finite
    [Finite X] (φ : X → H) :
    FamilyConvergesToOne
      (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
      (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ)

For a finite generator set, the restricted Fox graph generators converge to \(1\).

Show proof
def freeProCZCCompletedFoxSemidirectLiftToClosedGenerated
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (φ : X → H)
    (htarget :
      ProC (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))))
    (hφconv :
      FamilyConvergesToOne
        (G :=
          (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
            (ProC := ProC) φ : Subgroup
              (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
        (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ)) :
    F →*
      (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)) :=
  hι.lift htarget
    (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ)
    hφconv
    (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator_topologicallyGenerates
      (ProC := ProC) φ)

The completed Fox semidirect lift into the closed target generated by the graph generators. This is the converging-set version needed when the graph generators do not generate the whole semidirect product.

def freeProCZCCompletedFoxSemidirectLiftHomToClosedGenerated
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (φ : X → H)
    (htarget :
      ProC (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))))
    (hφconv :
      FamilyConvergesToOne
        (G :=
          (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
            (ProC := ProC) φ : Subgroup
              (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
        (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ)) :
    F →ₜ*
      (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)) :=
  hι.liftHom htarget
    (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ)
    hφconv
    (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator_topologicallyGenerates
      (ProC := ProC) φ)

Continuous homomorphism form of the closed-generated semidirect lift.

theorem freeProCZCCompletedFoxSemidirectLiftHomToClosedGenerated_toMonoidHom
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (φ : X → H)
    (htarget :
      ProC (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))))
    (hφconv :
      FamilyConvergesToOne
        (G :=
          (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
            (ProC := ProC) φ : Subgroup
              (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
        (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ)) :
    (freeProCZCCompletedFoxSemidirectLiftHomToClosedGenerated
        (ProC := ProC) hι φ htarget hφconv).toMonoidHom =
      freeProCZCCompletedFoxSemidirectLiftToClosedGenerated
        (ProC := ProC) hι φ htarget hφconv

Forgetting continuity from the closed-generated semidirect lift homomorphism recovers the underlying closed-generated semidirect lift.

Show proof
theorem freeProCZCCompletedFoxSemidirectLiftToClosedGenerated_generator
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (φ : X → H)
    (htarget :
      ProC (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))))
    (hφconv :
      FamilyConvergesToOne
        (G :=
          (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
            (ProC := ProC) φ : Subgroup
              (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
        (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ))
    (x : X) :
    freeProCZCCompletedFoxSemidirectLiftToClosedGenerated
        (ProC := ProC) hι φ htarget hφconv (ι x) =
      freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ x

The closed-generated semidirect lift sends each free pro-\(C\) generator to the corresponding closed-generated Fox semidirect generator.

Show proof
theorem freeProCZCCompletedFoxSemidirectLiftHomToClosedGenerated_surjective
    [CompactSpace F]
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (φ : X → H)
    [T2Space
      (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))]
    (htarget :
      ProC (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))))
    (hφconv :
      FamilyConvergesToOne
        (G :=
          (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
            (ProC := ProC) φ : Subgroup
              (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
        (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ)) :
    Function.Surjective
      (freeProCZCCompletedFoxSemidirectLiftHomToClosedGenerated
        (ProC := ProC) hι φ htarget hφconv)

The closed-generated semidirect lift is surjective onto the closed target generated by the Fox graph generators. This is the mathematically valid replacement for the generally false claim that the Fox graph generators fill the whole completed semidirect product: the universal map from the free pro-\(C\) group is onto exactly the closed subgroup generated by those graph generators.

Show proof
def freeProCZCCompletedFoxSemidirectLiftViaClosedGenerated
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (φ : X → H)
    (htarget :
      ProC (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))))
    (hφconv :
      FamilyConvergesToOne
        (G :=
          (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
            (ProC := ProC) φ : Subgroup
              (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
        (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ)) :
    F →* ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H :=
  (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
      (ProC := ProC) φ : Subgroup
        (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)).subtype.comp
    (freeProCZCCompletedFoxSemidirectLiftToClosedGenerated
      (ProC := ProC) hι φ htarget hφconv)

The lift through the closed generated subgroup, composed with the inclusion into the full completed Fox semidirect product.

theorem freeProCZCFoxSemiLiftViaClosedGen_exists_preimage_of_mem_closedGenTarget
    [CompactSpace F]
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (φ : X → H)
    [T2Space
      (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))]
    (htarget :
      ProC (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))))
    (hφconv :
      FamilyConvergesToOne
        (G :=
          (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
            (ProC := ProC) φ : Subgroup
              (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
        (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ))
    {y : ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H}
    (hy : y ∈
      (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
        (ProC := ProC) φ : Subgroup
          (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))) :
    ∃ g : F,
      freeProCZCCompletedFoxSemidirectLiftViaClosedGenerated
        (ProC := ProC) hι φ htarget hφconv g = y

Elementwise form of the semidirect lift theorem, formulated in the ambient completed Fox semidirect product. Every element of the closed Fox graph target has a preimage under the free pro-\(C\) semidirect lift.

Show proof
theorem freeProCZCCompletedFoxSemidirectLiftViaClosedGenerated_generator
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (φ : X → H)
    (htarget :
      ProC (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))))
    (hφconv :
      FamilyConvergesToOne
        (G :=
          (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
            (ProC := ProC) φ : Subgroup
              (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
        (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ))
    (x : X) :
    freeProCZCCompletedFoxSemidirectLiftViaClosedGenerated
        (ProC := ProC) hι φ htarget hφconv (ι x) =
      freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ x

The closed-generated semidirect lift into the ambient semidirect product sends each free pro-\(C\) generator to the corresponding Fox semidirect generator.

Show proof
def freeProCZCCompletedFoxRightHomViaClosedGenerated
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (φ : X → H)
    (htarget :
      ProC (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))))
    (hφconv :
      FamilyConvergesToOne
        (G :=
          (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
            (ProC := ProC) φ : Subgroup
              (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
        (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ)) :
    F →* H :=
  (ZCCompletedFoxSemidirect.rightMonoidHom ProC.finiteQuotientClass X H).comp
    (freeProCZCCompletedFoxSemidirectLiftViaClosedGenerated
      (ProC := ProC) hι φ htarget hφconv)

The right component of the closed-generated semidirect lift.

theorem freeProCZCCompletedFoxRightHomViaClosedGenerated_generator
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (φ : X → H)
    (htarget :
      ProC (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))))
    (hφconv :
      FamilyConvergesToOne
        (G :=
          (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
            (ProC := ProC) φ : Subgroup
              (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
        (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ))
    (x : X) :
    freeProCZCCompletedFoxRightHomViaClosedGenerated
        (ProC := ProC) hι φ htarget hφconv (ι x) = φ x

The right component of the closed-generated semidirect lift sends each generator to its prescribed value \(\varphi(x)\).

Show proof
def freeProCZCCompletedFoxDerivativeVectorViaClosedGenerated
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (φ : X → H)
    (htarget :
      ProC (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))))
    (hφconv :
      FamilyConvergesToOne
        (G :=
          (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
            (ProC := ProC) φ : Subgroup
              (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
        (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ))
    (g : F) :
    ZCFreeFoxCoordinates ProC.finiteQuotientClass (X := X) (H := H) :=
  (freeProCZCCompletedFoxSemidirectLiftViaClosedGenerated
      (ProC := ProC) hι φ htarget hφconv g).left

The derivative-vector component of the closed-generated semidirect lift.

theorem freeProCZCCompletedFoxDerivativeVectorViaClosedGenerated_generator
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (φ : X → H)
    (htarget :
      ProC (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))))
    (hφconv :
      FamilyConvergesToOne
        (G :=
          (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
            (ProC := ProC) φ : Subgroup
              (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
        (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ))
    (x : X) :
    freeProCZCCompletedFoxDerivativeVectorViaClosedGenerated
        (ProC := ProC) hι φ htarget hφconv (ι x) =
      Pi.single x (1 : ZCCompletedGroupAlgebra ProC.finiteQuotientClass H)

The derivative-vector component of the closed-generated semidirect lift has standard basis value at each generator.

Show proof
theorem freeProCZCCompletedFoxDerivativeVectorViaClosedGenerated_isCrossedDifferential
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (φ : X → H)
    (htarget :
      ProC (G :=
        (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
          (ProC := ProC) φ : Subgroup
            (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))))
    (hφconv :
      FamilyConvergesToOne
        (G :=
          (freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
            (ProC := ProC) φ : Subgroup
              (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)))
        (freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator (ProC := ProC) φ)) :
    IsCrossedDifferential
      (zcCompletedGroupAlgebraScalar ProC.finiteQuotientClass
        (freeProCZCCompletedFoxRightHomViaClosedGenerated
          (ProC := ProC) hι φ htarget hφconv))
      (freeProCZCCompletedFoxDerivativeVectorViaClosedGenerated
        (ProC := ProC) hι φ htarget hφconv)

The closed-generated derivative vector is a crossed differential with respect to its right component.

Show proof
def freeProCZCCompletedFoxSemidirectLift
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)) :
    F →* ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H :=
  hι.lift htarget (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ) hφ

The continuous completed Fox semidirect lift from a free pro-\(C\) source.

def freeProCZCCompletedFoxSemidirectLiftHom
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)) :
    F →ₜ* ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H :=
  hι.liftHom htarget (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ) hφ

The continuous homomorphism form of the completed Fox semidirect lift from a free pro-\(C\) source.

theorem freeProCZCCompletedFoxSemidirectLiftHom_toMonoidHom
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)) :
    (freeProCZCCompletedFoxSemidirectLiftHom
        (ProC := ProC) hι htarget φ hφ).toMonoidHom =
      freeProCZCCompletedFoxSemidirectLift
        (ProC := ProC) hι htarget φ hφ

Forgetting continuity from the continuous semidirect lift gives the underlying semidirect lift.

Show proof
theorem continuous_freeProCZCCompletedFoxSemidirectLift
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)) :
    Continuous (freeProCZCCompletedFoxSemidirectLift
        (ProC := ProC) hι htarget φ hφ)

The free pro-\(C\) semidirect lift is continuous.

Show proof
theorem freeProCZCCompletedFoxSemidirectLift_generator
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (x : X) :
    freeProCZCCompletedFoxSemidirectLift
        (ProC := ProC) hι htarget φ hφ (ι x) =
      freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ x

The free pro-\(C\) semidirect lift has the prescribed completed Fox generator values.

Show proof
theorem freeProCZCCompletedFoxSemidirectLiftHom_generator
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (x : X) :
    freeProCZCCompletedFoxSemidirectLiftHom
        (ProC := ProC) hι htarget φ hφ (ι x) =
      freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ x

The continuous semidirect lift has the prescribed completed Fox generator values.

Show proof
def freeProCZCCompletedFoxSemidirectLiftOfConvergingSet
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφconv :
      FamilyConvergesToOne
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (hφgen :
      ProCGroups.Generation.TopologicallyGenerates
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (Set.range (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))) :
    F →* ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H :=
  hι.lift htarget (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)
    hφconv hφgen

The completed Fox semidirect lift from a converging-set free pro-\(C\) source. The generator map into the semidirect target is required to converge to \(1\) and topologically generate the target, matching the universal property of a free pro-\(C\) group on a converging set.

def freeProCZCCompletedFoxSemidirectLiftHomOfConvergingSet
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφconv :
      FamilyConvergesToOne
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (hφgen :
      ProCGroups.Generation.TopologicallyGenerates
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (Set.range (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))) :
    F →ₜ* ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H :=
  hι.liftHom htarget (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)
    hφconv hφgen

Continuous homomorphism form of the converging-set completed Fox semidirect lift.

theorem freeProCZCCompletedFoxSemidirectLiftHomOfConvergingSet_toMonoidHom
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφconv :
      FamilyConvergesToOne
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (hφgen :
      ProCGroups.Generation.TopologicallyGenerates
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (Set.range (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))) :
    (freeProCZCCompletedFoxSemidirectLiftHomOfConvergingSet
        (ProC := ProC) hι htarget φ hφconv hφgen).toMonoidHom =
      freeProCZCCompletedFoxSemidirectLiftOfConvergingSet
        (ProC := ProC) hι htarget φ hφconv hφgen

Forgetting continuity from the converging-set semidirect lift homomorphism gives the unbundled lift.

Show proof
theorem continuous_freeProCZCCompletedFoxSemidirectLiftOfConvergingSet
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφconv :
      FamilyConvergesToOne
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (hφgen :
      ProCGroups.Generation.TopologicallyGenerates
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (Set.range (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))) :
    Continuous (freeProCZCCompletedFoxSemidirectLiftOfConvergingSet
        (ProC := ProC) hι htarget φ hφconv hφgen)

The completed Fox semidirect lift associated to a converging generator family is continuous.

Show proof
theorem freeProCZCCompletedFoxSemidirectLiftOfConvergingSet_generator
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφconv :
      FamilyConvergesToOne
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (hφgen :
      ProCGroups.Generation.TopologicallyGenerates
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (Set.range (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)))
    (x : X) :
    freeProCZCCompletedFoxSemidirectLiftOfConvergingSet
        (ProC := ProC) hι htarget φ hφconv hφgen (ι x) =
      freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ x

The converging-set semidirect lift has the prescribed generator values.

Show proof
theorem freeProCZCCompletedFoxSemidirectLiftHomOfConvergingSet_surjective
    [CompactSpace F]
    [T2Space (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)]
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφconv :
      FamilyConvergesToOne
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (hφgen :
      ProCGroups.Generation.TopologicallyGenerates
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (Set.range (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))) :
    Function.Surjective
      (freeProCZCCompletedFoxSemidirectLiftHomOfConvergingSet
        (ProC := ProC) hι htarget φ hφconv hφgen)

The converging-set semidirect lift is surjective once its prescribed generator values topologically generate the semidirect target.

Show proof
def freeProCZCCompletedFoxRightHomOfConvergingSet
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφconv :
      FamilyConvergesToOne
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (hφgen :
      ProCGroups.Generation.TopologicallyGenerates
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (Set.range (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))) :
    F →* H :=
  (ZCCompletedFoxSemidirect.rightMonoidHom ProC.finiteQuotientClass X H).comp
    (freeProCZCCompletedFoxSemidirectLiftOfConvergingSet
      (ProC := ProC) hι htarget φ hφconv hφgen)

The right component of the converging-set semidirect lift.

def freeProCZCCompletedFoxDerivativeVectorOfConvergingSet
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφconv :
      FamilyConvergesToOne
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (hφgen :
      ProCGroups.Generation.TopologicallyGenerates
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (Set.range (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)))
    (g : F) :
    ZCFreeFoxCoordinates ProC.finiteQuotientClass (X := X) (H := H) :=
  (freeProCZCCompletedFoxSemidirectLiftOfConvergingSet
    (ProC := ProC) hι htarget φ hφconv hφgen g).left

The derivative-vector component of the converging-set semidirect lift.

theorem freeProCZCCompletedFoxRightHomOfConvergingSet_generator
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφconv :
      FamilyConvergesToOne
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (hφgen :
      ProCGroups.Generation.TopologicallyGenerates
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (Set.range (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)))
    (x : X) :
    freeProCZCCompletedFoxRightHomOfConvergingSet
        (ProC := ProC) hι htarget φ hφconv hφgen (ι x) = φ x

The right component of the converging-set semidirect lift sends each generator to its prescribed value \(\varphi(x)\).

Show proof
theorem freeProCZCCompletedFoxDerivativeVectorOfConvergingSet_generator
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφconv :
      FamilyConvergesToOne
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (hφgen :
      ProCGroups.Generation.TopologicallyGenerates
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (Set.range (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)))
    (x : X) :
    freeProCZCCompletedFoxDerivativeVectorOfConvergingSet
        (ProC := ProC) hι htarget φ hφconv hφgen (ι x) =
      Pi.single x (1 : ZCCompletedGroupAlgebra ProC.finiteQuotientClass H)

The derivative-vector component of the converging-set semidirect lift has standard basis value at each generator.

Show proof
theorem freeProCZCCompletedFoxDerivativeVectorOfConvergingSet_isCrossedDifferential
    {ι : X → F} (hι : IsFreeProCGroupOnConvergingSet (ProC := ProC) X F ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφconv :
      FamilyConvergesToOne
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (hφgen :
      ProCGroups.Generation.TopologicallyGenerates
        (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)
        (Set.range (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))) :
    IsCrossedDifferential
      (zcCompletedGroupAlgebraScalar ProC.finiteQuotientClass
        (freeProCZCCompletedFoxRightHomOfConvergingSet
          (ProC := ProC) hι htarget φ hφconv hφgen))
      (freeProCZCCompletedFoxDerivativeVectorOfConvergingSet
        (ProC := ProC) hι htarget φ hφconv hφgen)

The converging-set derivative vector is a crossed differential with respect to its right component.

Show proof
def freeProCZCCompletedFoxSemidirectLiftMorphism
    [ProCGroups.ProC.ProCGroup ProC F]
    [ProCGroups.ProC.ProCGroup ProC (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)]
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)) :
    ProCGrp.of ProC F ⟶
      ProCGrp.of ProC (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H) :=
  hι.liftMorphism
    (ProCGrp.of ProC (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ) hφ

The categorical completed Fox semidirect lift from a free pro-\(C\) source is bundled as a morphism in ProCGrp.

theorem freeProCZCCompletedFoxSemidirectLiftMorphism_hom
    [ProCGroups.ProC.ProCGroup ProC F]
    [ProCGroups.ProC.ProCGroup ProC (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)]
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)) :
    (freeProCZCCompletedFoxSemidirectLiftMorphism
      (ProC := ProC) hι φ hφ).hom =
      freeProCZCCompletedFoxSemidirectLiftHom
        (ProC := ProC) hι
        (inferInstanceAs
          (ProCGroups.ProC.ProCGroup ProC (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))).isProC
        φ hφ

The underlying continuous homomorphism of the categorical completed Fox semidirect lift is the free pro-\(C\) continuous homomorphism supplied by liftHom.

Show proof
theorem freeProCZCCompletedFoxSemidirectLiftMorphism_hom_toMonoidHom
    [ProCGroups.ProC.ProCGroup ProC F]
    [ProCGroups.ProC.ProCGroup ProC (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)]
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)) :
    (freeProCZCCompletedFoxSemidirectLiftMorphism
      (ProC := ProC) hι φ hφ).hom.toMonoidHom =
      freeProCZCCompletedFoxSemidirectLift
        (ProC := ProC) hι
        (inferInstanceAs
          (ProCGroups.ProC.ProCGroup ProC (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))).isProC
        φ hφ

The underlying homomorphism of the categorical completed Fox semidirect lift is the unbundled completed Fox semidirect lift.

Show proof
theorem freeProCZCCompletedFoxSemidirectLiftMorphism_generator
    [ProCGroups.ProC.ProCGroup ProC F]
    [ProCGroups.ProC.ProCGroup ProC (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)]
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (x : X) :
    freeProCZCCompletedFoxSemidirectLiftMorphism
      (ProC := ProC) hι φ hφ (ι x) =
      freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ x

The categorical completed Fox semidirect lift has the prescribed generator values.

Show proof
theorem freeProCZCCompletedFoxSemidirectLiftMorphism_left_generator
    [ProCGroups.ProC.ProCGroup ProC F]
    [ProCGroups.ProC.ProCGroup ProC (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)]
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (x : X) :
    (freeProCZCCompletedFoxSemidirectLiftMorphism
      (ProC := ProC) hι φ hφ (ι x)).left =
      Pi.single x (1 : ZCCompletedGroupAlgebra ProC.finiteQuotientClass H)

The left component of the categorical completed Fox semidirect lift has the standard Fox coordinate on each generator.

Show proof
theorem freeProCZCCompletedFoxSemidirectLiftMorphism_right_generator
    [ProCGroups.ProC.ProCGroup ProC F]
    [ProCGroups.ProC.ProCGroup ProC (ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H)]
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (x : X) :
    (freeProCZCCompletedFoxSemidirectLiftMorphism
      (ProC := ProC) hι φ hφ (ι x)).right = φ x

The right component of the categorical completed Fox semidirect lift has the prescribed generator value.

Show proof
theorem freeProCZCCompletedFoxSemidirectLift_left_generator
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (x : X) :
    (freeProCZCCompletedFoxSemidirectLift
        (ProC := ProC) hι htarget φ hφ (ι x)).left =
      Pi.single x (1 : ZCCompletedGroupAlgebra ProC.finiteQuotientClass H)

The left component of the free pro-\(C\) semidirect lift has the standard Fox coordinate on each generator.

Show proof
theorem freeProCZCCompletedFoxSemidirectLiftHom_left_generator
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (x : X) :
    (freeProCZCCompletedFoxSemidirectLiftHom
        (ProC := ProC) hι htarget φ hφ (ι x)).left =
      Pi.single x (1 : ZCCompletedGroupAlgebra ProC.finiteQuotientClass H)

The left component of the continuous free pro-\(C\) semidirect lift has the standard Fox coordinate on each generator.

Show proof
theorem freeProCZCCompletedFoxSemidirectLift_right_generator
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (x : X) :
    (freeProCZCCompletedFoxSemidirectLift
        (ProC := ProC) hι htarget φ hφ (ι x)).right = φ x

The right component of the free pro-\(C\) semidirect lift has the prescribed generator value.

Show proof
theorem freeProCZCCompletedFoxSemidirectLiftHom_right_generator
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (x : X) :
    (freeProCZCCompletedFoxSemidirectLiftHom
        (ProC := ProC) hι htarget φ hφ (ι x)).right = φ x

The right component of the continuous free pro-\(C\) semidirect lift has the prescribed generator value.

Show proof
def freeProCZCCompletedFoxRightHom
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)) :
    F →* H where
  toFun g := (freeProCZCCompletedFoxSemidirectLift
        (ProC := ProC) hι htarget φ hφ g).right
  map_one' := by
    simp only [map_one, ZCCompletedFoxSemidirect.one_right]
  map_mul' g h := by
    simp only [map_mul, ZCCompletedFoxSemidirect.mul_right]

The target-group component of the continuous completed Fox semidirect lift.

theorem freeProCZCCompletedFoxRightHom_apply
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (g : F) :
    freeProCZCCompletedFoxRightHom (ProC := ProC) hι htarget φ hφ g =
      (freeProCZCCompletedFoxSemidirectLift
        (ProC := ProC) hι htarget φ hφ g).right

The right component of the continuous completed Fox semidirect lift is the associated homomorphism.

Show proof
theorem freeProCZCCompletedFoxRightHom_generator
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (x : X) :
    freeProCZCCompletedFoxRightHom (ProC := ProC) hι htarget φ hφ (ι x) = φ x

The target-group component has the prescribed generator values.

Show proof
def freeProCZCCompletedFoxDerivativeVector
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (g : F) :
    ZCFreeFoxCoordinates ProC.finiteQuotientClass (X := X) (H := H) :=
  (freeProCZCCompletedFoxSemidirectLift
        (ProC := ProC) hι htarget φ hφ g).left

The completed Fox derivative vector is obtained as the left component of the continuous free pro-\(C\) semidirect lift.

theorem freeProCZCCompletedFoxDerivativeVector_generator
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ))
    (x : X) :
    freeProCZCCompletedFoxDerivativeVector
        (ProC := ProC) hι htarget φ hφ (ι x) =
      Pi.single x (1 : ZCCompletedGroupAlgebra ProC.finiteQuotientClass H)

The free pro-\(C\) completed Fox derivative vector has the standard coordinate value on generators.

Show proof
theorem freeProCZCCompletedFoxDerivativeVector_isCrossedDifferential
    {ι : X → F} (hι : IsFreeProCGroup (ProC := ProC) ι)
    (htarget : ProC (G := ZCCompletedFoxSemidirect ProC.finiteQuotientClass X H))
    (φ : X → H)
    (hφ : Continuous (freeProCZCCompletedFoxSemidirectGenerator (ProC := ProC) φ)) :
    IsCrossedDifferential
      (zcCompletedGroupAlgebraScalar ProC.finiteQuotientClass
        (freeProCZCCompletedFoxRightHom (ProC := ProC) hι htarget φ hφ))
      (freeProCZCCompletedFoxDerivativeVector
        (ProC := ProC) hι htarget φ hφ)

The free pro-\(C\) completed Fox derivative vector is a crossed differential with respect to the target-group component of the continuous semidirect lift.

Show proof