Free-group comparison for the concrete closed-generated continuous Fox vector, with the right component already identified with the presentation map.
Source context 12 commands
Surrounding namespaces, section variables, and local commands at this declaration.
namespace CrowellExactSequence
noncomputable section
open ProCGroups.ProC
open ProCGroups.ProC.HasOpenNormalBasisInClass
open FoxDifferential
universe u
variable {H : Type u} [Group H] [TopologicalSpace H] [IsTopologicalGroup H]
variable {C : ProCGroups.FiniteGroupClass.{u}}
variable [ProCGroups.FiniteGroupClass.ContainsTrivialQuotients C]
section ProfiniteTarget
variable [CompactSpace H] [T2Space H] [TotallyDisconnectedSpace H]
omit [ProCGroups.FiniteGroupClass.ContainsTrivialQuotients C] intheorem freeFoxDerivVec_eq_freeProCClosedGenFoxVectorZC_comp_lift_mapTarget
(hForm : ProCGroups.FiniteGroupClass.Formation C)
(hC : ProCGroups.FiniteGroupClass.Hereditary C)
(sourceData : ProCGroups.FreeProC.EpimorphicallyFreeProCGroupOnConvergingSetData.{u, u} C)
{r : Nat} (hbasis : Cardinal.mk sourceData.basis = r)
(psi : ContinuousMonoidHom sourceData.carrier H) (hpsi : Function.Surjective psi)
(htarget :
ProCGroups.ProC.HasOpenNormalBasisInClass C
(FoxDifferential.freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
(C := C)
(fun i : ULift.{u} (Fin r) =>
psi (freeProCChosenULiftFamilyOfBasisCard
(C := C) sourceData hbasis i)) : Subgroup
(FoxDifferential.ZCCompletedFoxSemidirect
C (ULift.{u} (Fin r)) H)))
{K : Type u} [Group K] [TopologicalSpace K] [IsTopologicalGroup K]
(η : H →ₜ* K) (w : FreeGroup (ULift.{u} (Fin r))) :
FoxDifferential.zcFreeGroupFoxDerivativeVector C
(η.toMonoidHom.comp
(psi.toMonoidHom.comp
(FreeGroup.lift
(freeProCChosenULiftFamilyOfBasisCard
(C := C) sourceData hbasis)))) w =
FoxDifferential.zcFreeFoxCoordinatesMap
(X := ULift.{u} (Fin r)) C hC η
(freeProCCompletedFoxDerivativeVectorViaClosedGeneratedProCInteger
(H := H) (C := C) sourceData hbasis psi htarget
((FreeGroup.lift
(freeProCChosenULiftFamilyOfBasisCard
(C := C) sourceData hbasis)) w)) := by
let X : Type u := ULift.{u} (Fin r)
let ι : X → sourceData.carrier :=
freeProCChosenULiftFamilyOfBasisCard (C := C) sourceData hbasis
let hfree := freeProCChosenULiftFamilyOfBasisCard_isEpimorphicallyFree (C := C) sourceData hbasis
let φ : X → H := fun i => psi (ι i)
let hφconv :
ProCGroups.FreeProC.FamilyConvergesToOneAlongOpenSubgroups
(G :=
(FoxDifferential.freeProCZCCompletedFoxSemidirectClosedGeneratedTarget
(C := C) φ : Subgroup
(FoxDifferential.ZCCompletedFoxSemidirect C X H)))
(FoxDifferential.freeProCZCCompletedFoxSemidirectClosedGeneratedGenerator
(C := C) φ) :=
FoxDifferential.freeProCZCFoxSemiClosedGenGenerator_convergesToOneAlongOpenSubgroups_of_finite
(C := C) φ
have hH : ProCGroups.ProC.HasOpenNormalBasisInClass C (H) :=
HasOpenNormalBasisInClass.of_surjective hForm
sourceData.isEpimorphicallyFree.hasOpenNormalBasisInClass psi hpsi
have hφHconv : ProCGroups.FreeProC.FamilyConvergesToOneAlongOpenSubgroups (G := H) φ := by
simpa [φ, ι] using
freeProCChosenULiftFamilyOfBasisCard_image_convergesToOneAlongOpenSubgroups
(C := C) sourceData hbasis psi.toMonoidHom
have hφHgen :
ProCGroups.Generation.TopologicallyGenerates (G := H) (Set.range φ) := by
simpa [φ, ι] using
freeProCChosenULiftFamilyOfBasisCard_image_generates_of_surjective
(C := C) sourceData hbasis psi hpsi
have hright :
FoxDifferential.freeProCZCCompletedFoxRightHomViaClosedGenerated
(C := C) hfree φ htarget hφconv =
psi.toMonoidHom := by
have hright_lift :=
FoxDifferential.freeProCZCCompletedFoxRightHomViaClosedGenerated_eq_lift
(C := C) X H hfree hH φ htarget hφconv hφHconv hφHgen
have hlift :
hfree.lift hH φ hφHconv hφHgen = psi.toMonoidHom := by
exact
(hfree.lift_unique hH φ hφHconv hφHgen psi.continuous_toFun (by
intro i
rfl)).symm
exact hright_lift.trans hlift
have hcomp :=
FoxDifferential.zcFreeFoxDerivVec_eq_freeProCDerivVecViaClosedGen_comp_lift_mapTarget
(C := C) hfree φ htarget hφconv hC η w
have hcoeff :
η.toMonoidHom.comp
((FoxDifferential.freeProCZCCompletedFoxRightHomViaClosedGenerated
(C := C) hfree φ htarget hφconv).comp (FreeGroup.lift ι)) =
η.toMonoidHom.comp (psi.toMonoidHom.comp (FreeGroup.lift ι)) := by
rw [hright]
have hleft :=
congrArg
(fun ρ : FreeGroup X →* K =>
FoxDifferential.zcFreeGroupFoxDerivativeVector C ρ w)
hcoeff.symm
exact hleft.trans (by
simpa [freeProCCompletedFoxDerivativeVectorViaClosedGeneratedProCInteger,
X, ι, hfree, φ, hφconv] using hcomp)