FoxDifferential/Completed/Comparison/FiniteStage.lean
1import FoxDifferential.Completed.DifferentialModule.Identity
2import FoxDifferential.Completed.FiniteStage.MagnusQuotient
3import FoxDifferential.Completed.ProCIntegerCoefficients.Naturality
5/-
6PUBLIC_PAGE_SNAPSHOT
7generated_at: 2026-05-27T09:47:29+09:00
8lean_source: lean4/FoxDifferential/Completed/Comparison/FiniteStage.lean
9translation_root: data/translation
10purpose: identifies the local data snapshot used to build pages/
11placement: after imports, never before imports
12-/
13/-!
14# Discrete-completed comparison
16Finite quotient stages are used to compare completed Fox boundaries, derivatives, and relation modules with explicit finite group-algebra calculations.
17-/
18namespace FoxDifferential
20noncomputable section
22open scoped BigOperators
24universe u
26section FiniteStageCompletedComparison
28variable (C : ProCGroups.FiniteGroupClass.{u})
29variable {X : Type u} [DecidableEq X]
30variable (N : Subgroup (FreeGroup X)) [N.Normal]
31variable [TopologicalSpace (finiteFoxStageTargetQuotient (X := X) N)]
32variable [IsTopologicalGroup (finiteFoxStageTargetQuotient (X := X) N)]
34abbrev zcFiniteStageTarget (X : Type u) [DecidableEq X]
35 (N : Subgroup (FreeGroup X)) [N.Normal] :=
36 finiteFoxStageTargetQuotient (X := X) N
38/-- The coefficient homomorphism obtained by projecting the completed `Z_C[[F/N]]`
41 (j : ZCCompletedGroupAlgebraIndex C (zcFiniteStageTarget X N)) :
42 FreeGroup X →* ZCCompletedGroupAlgebraStage C (zcFiniteStageTarget X N) j where
43 toFun w :=
45 (zcCompletedGroupAlgebraScalar C (QuotientGroup.mk' N) w)
46 map_one' := by
48 map_mul' u v := by
49 simp only [zcCompletedGroupAlgebraScalar, MonoidHom.coe_comp, QuotientGroup.coe_mk', Function.comp_apply,
51 MonoidAlgebra.of_apply, MonoidAlgebra.single_mul_single, mul_one]
53/-- Projecting the completed coefficient homomorphism agrees with the finite-stage quotient map
55@[simp]
57 (j : ZCCompletedGroupAlgebraIndex C (zcFiniteStageTarget X N))
58 (w : FreeGroup X) :
59 zcCompletedGroupAlgebraScalarStage C N j w =
60 (letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
61 modNCompletedGroupAlgebraStageMapInClass j.1.modulus
62 (zcFiniteStageTarget X N) C j.2
63 (finiteFoxStageCoefficient (X := X) N j.1.modulus w)) := by
64 letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
66 rfl
68/-- The projected completed Fox derivative vector is a crossed differential at one finite
69pro-`C` stage. -/
71 (j : ZCCompletedGroupAlgebraIndex C (zcFiniteStageTarget X N)) :
73 (zcCompletedGroupAlgebraScalarStage C N j)
74 (fun w : FreeGroup X =>
75 fun i : X =>
77 (zcFreeGroupFoxDerivativeVector C (QuotientGroup.mk' N) w i)) := by
78 intro u v
79 funext i
80 have h :=
81 congrArg
82 (zcCompletedGroupAlgebraProjection C (zcFiniteStageTarget X N) j)
83 (congrFun
84 (zcFreeGroupFoxDerivativeVector_mul C (QuotientGroup.mk' N) u v) i)
85 simpa only [Pi.add_apply, Pi.smul_apply, smul_eq_mul, zcCompletedGroupAlgebraScalarStage,
88/-- The finite-stage Fox derivative vector, pushed to one pro-`C` quotient stage of the target,
89is a crossed differential with the projected completed coefficient homomorphism. -/
91 (j : ZCCompletedGroupAlgebraIndex C (zcFiniteStageTarget X N)) :
93 (zcCompletedGroupAlgebraScalarStage C N j)
94 (fun w : FreeGroup X =>
95 fun i : X =>
96 letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
97 modNCompletedGroupAlgebraStageMapInClass j.1.modulus
98 (zcFiniteStageTarget X N) C j.2
99 (finiteFoxStageDerivative (X := X) N j.1.modulus i w)) := by
100 intro u v
101 funext i
102 letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
103 have h :=
104 congrArg
105 (modNCompletedGroupAlgebraStageMapInClass j.1.modulus
106 (zcFiniteStageTarget X N) C j.2)
107 (finiteFoxStageDerivative_mul (X := X) N j.1.modulus i u v)
108 simpa only [Pi.add_apply, Pi.smul_apply, smul_eq_mul, finiteFoxStageDerivative,
111/-- Projecting the completed derivative vector to a finite pro-`C` stage recovers the finite
112Fox derivative vector, mapped to that stage. -/
114 (j : ZCCompletedGroupAlgebraIndex C (zcFiniteStageTarget X N))
115 (w : FreeGroup X) :
116 (fun i : X =>
118 (zcFreeGroupFoxDerivativeVector C (QuotientGroup.mk' N) w i)) =
119 fun i : X =>
120 letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
121 modNCompletedGroupAlgebraStageMapInClass j.1.modulus
122 (zcFiniteStageTarget X N) C j.2
123 (finiteFoxStageDerivative (X := X) N j.1.modulus i w) := by
124 letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
125 let projected : FreeGroup X →
126 X → ZCCompletedGroupAlgebraStage C (zcFiniteStageTarget X N) j :=
127 fun w i =>
129 (zcFreeGroupFoxDerivativeVector C (QuotientGroup.mk' N) w i)
130 let staged : FreeGroup X →
131 X → ZCCompletedGroupAlgebraStage C (zcFiniteStageTarget X N) j :=
132 fun w i =>
133 modNCompletedGroupAlgebraStageMapInClass j.1.modulus
134 (zcFiniteStageTarget X N) C j.2
135 (finiteFoxStageDerivative (X := X) N j.1.modulus i w)
136 have hprojected :
137 projected =
139 (A := X → ZCCompletedGroupAlgebraStage C (zcFiniteStageTarget X N) j)
141 (fun x : X =>
142 Pi.single x
143 (1 : ZCCompletedGroupAlgebraStage C (zcFiniteStageTarget X N) j)) := by
145 (A := X → ZCCompletedGroupAlgebraStage C (zcFiniteStageTarget X N) j)
147 (fun x : X =>
148 Pi.single x
149 (1 : ZCCompletedGroupAlgebraStage C (zcFiniteStageTarget X N) j))
150 projected ?_ ?_
151 · simpa [projected] using
153 · intro x
154 funext i
155 by_cases hi : i = x
156 · subst i
157 simp only [zcFreeGroupFoxDerivativeVector_of, Pi.single_eq_same, zcCompletedGroupAlgebraProjection_one,
158 projected]
159 · simp only [zcFreeGroupFoxDerivativeVector_of, Pi.single_eq_of_ne hi, zcCompletedGroupAlgebraProjection_zero,
160 projected]
161 have hstaged :
162 staged =
164 (A := X → ZCCompletedGroupAlgebraStage C (zcFiniteStageTarget X N) j)
166 (fun x : X =>
167 Pi.single x
168 (1 : ZCCompletedGroupAlgebraStage C (zcFiniteStageTarget X N) j)) := by
170 (A := X → ZCCompletedGroupAlgebraStage C (zcFiniteStageTarget X N) j)
172 (fun x : X =>
173 Pi.single x
174 (1 : ZCCompletedGroupAlgebraStage C (zcFiniteStageTarget X N) j))
175 staged ?_ ?_
176 · simpa [staged] using
178 · intro x
179 funext i
180 have h :=
181 congrFun (finiteFoxStageDerivativeVector_of (X := X) N j.1.modulus x) i
182 change
183 (modNCompletedGroupAlgebraStageMapInClass j.1.modulus
184 (zcFiniteStageTarget X N) C j.2)
185 (finiteFoxStageDerivativeVector (X := X) N j.1.modulus
186 (FreeGroup.of x) i) =
187 ((Pi.single x
188 (1 : ZCCompletedGroupAlgebraStage C (zcFiniteStageTarget X N) j)) :
189 X → ZCCompletedGroupAlgebraStage C (zcFiniteStageTarget X N) j) i
190 rw [h]
191 by_cases hi : i = x
192 · subst i
195 exact congrFun (hprojected.trans hstaged.symm) w
197/-- Component form of `zcFreeGroupFoxDerivativeVector_finiteStageProjection`. -/
198@[simp]
200 (j : ZCCompletedGroupAlgebraIndex C (zcFiniteStageTarget X N))
201 (i : X) (w : FreeGroup X) :
203 (zcFreeGroupFoxDerivative C (QuotientGroup.mk' N) i w) =
204 (letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
205 modNCompletedGroupAlgebraStageMapInClass j.1.modulus
206 (zcFiniteStageTarget X N) C j.2
207 (finiteFoxStageDerivative (X := X) N j.1.modulus i w)) := by
208 have h := congrFun
210 simpa [zcFreeGroupFoxDerivative] using h
212/-- If the universal completed differential of a word is zero, then every finite `Z_C` stage
215 (j : ZCCompletedGroupAlgebraIndex C (zcFiniteStageTarget X N))
216 (i : X) {w : FreeGroup X}
217 (hw : zcUniversalDifferential C (QuotientGroup.mk' N) w = 0) :
218 (letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
219 modNCompletedGroupAlgebraStageMapInClass j.1.modulus
220 (zcFiniteStageTarget X N) C j.2
221 (finiteFoxStageDerivative (X := X) N j.1.modulus i w)) = 0 := by
222 letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
223 have hcompleted :
224 zcFreeGroupFoxDerivative C (QuotientGroup.mk' N) i w = 0 :=
226 (C := C) (QuotientGroup.mk' N) i hw
227 have hprojection :
229 (zcFreeGroupFoxDerivative C (QuotientGroup.mk' N) i w) = 0 := by
230 simpa using
231 congrArg
232 (zcCompletedGroupAlgebraProjection C (zcFiniteStageTarget X N) j)
233 hcompleted
234 exact
235 (zcFreeGroupFoxDerivative_finiteStageProjection C N j i w).symm.trans hprojection
237/-- Vector form of
240 (j : ZCCompletedGroupAlgebraIndex C (zcFiniteStageTarget X N))
241 {w : FreeGroup X}
242 (hw : zcUniversalDifferential C (QuotientGroup.mk' N) w = 0) :
243 (fun i : X =>
244 letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
245 modNCompletedGroupAlgebraStageMapInClass j.1.modulus
246 (zcFiniteStageTarget X N) C j.2
247 (finiteFoxStageDerivative (X := X) N j.1.modulus i w)) = 0 := by
248 funext i
249 exact
251 (C := C) (X := X) N j i hw
253/-- At the identity quotient stage, a zero universal completed differential forces the finite Fox
254derivative itself to vanish modulo every allowed pro-`C` coefficient modulus. -/
256 [DiscreteTopology (zcFiniteStageTarget X N)]
257 (hIso : ProCGroups.FiniteGroupClass.IsomClosed C)
258 (hCtarget : C.pred (zcFiniteStageTarget X N))
260 (i : X) {w : FreeGroup X}
261 (hw : zcUniversalDifferential C (QuotientGroup.mk' N) w = 0) :
262 finiteFoxStageDerivative (X := X) N j.modulus i w = 0 := by
263 letI : Fact (0 < j.modulus) := ⟨j.positive⟩
264 let U : CompletedGroupAlgebraIndexInClass (zcFiniteStageTarget X N) C :=
265 identityCompletedGroupAlgebraIndexInClassOfMem C (zcFiniteStageTarget X N) hIso hCtarget
266 have hstage :
267 modNCompletedGroupAlgebraStageMapInClass j.modulus
268 (zcFiniteStageTarget X N) C U
269 (finiteFoxStageDerivative (X := X) N j.modulus i w) = 0 := by
270 simpa [U] using
272 (C := C) (X := X) N (j, U) i hw
273 exact
275 j.modulus C (zcFiniteStageTarget X N) hIso hCtarget) hstage
277/-- Vector form of
280 [DiscreteTopology (zcFiniteStageTarget X N)]
281 (hIso : ProCGroups.FiniteGroupClass.IsomClosed C)
282 (hCtarget : C.pred (zcFiniteStageTarget X N))
284 {w : FreeGroup X}
285 (hw : zcUniversalDifferential C (QuotientGroup.mk' N) w = 0) :
286 finiteFoxStageDerivativeVector (X := X) N j.modulus w = 0 := by
287 funext i
288 exact
290 (C := C) (X := X) N hIso hCtarget j i hw
292/-- At the identity quotient stage, a zero completed component derivative forces the finite Fox
293derivative itself to vanish modulo the corresponding pro-`C` coefficient modulus. -/
295 [DiscreteTopology (zcFiniteStageTarget X N)]
296 (hIso : ProCGroups.FiniteGroupClass.IsomClosed C)
297 (hCtarget : C.pred (zcFiniteStageTarget X N))
299 (i : X) {w : FreeGroup X}
300 (hw : zcFreeGroupFoxDerivative C (QuotientGroup.mk' N) i w = 0) :
301 finiteFoxStageDerivative (X := X) N j.modulus i w = 0 := by
302 letI : Fact (0 < j.modulus) := ⟨j.positive⟩
303 let U : CompletedGroupAlgebraIndexInClass (zcFiniteStageTarget X N) C :=
304 identityCompletedGroupAlgebraIndexInClassOfMem C (zcFiniteStageTarget X N) hIso hCtarget
305 have hstage :
306 modNCompletedGroupAlgebraStageMapInClass j.modulus
307 (zcFiniteStageTarget X N) C U
308 (finiteFoxStageDerivative (X := X) N j.modulus i w) = 0 := by
309 have hprojection :
310 zcCompletedGroupAlgebraProjection C (zcFiniteStageTarget X N) (j, U)
311 (zcFreeGroupFoxDerivative C (QuotientGroup.mk' N) i w) = 0 := by
312 simpa using
313 congrArg
314 (zcCompletedGroupAlgebraProjection C (zcFiniteStageTarget X N) (j, U))
315 hw
316 exact
317 (zcFreeGroupFoxDerivative_finiteStageProjection C N (j, U) i w).symm.trans
318 hprojection
319 exact
321 j.modulus C (zcFiniteStageTarget X N) hIso hCtarget) hstage
323/-- Vector form of
326 [DiscreteTopology (zcFiniteStageTarget X N)]
327 (hIso : ProCGroups.FiniteGroupClass.IsomClosed C)
328 (hCtarget : C.pred (zcFiniteStageTarget X N))
330 {w : FreeGroup X}
331 (hw : zcFreeGroupFoxDerivativeVector C (QuotientGroup.mk' N) w = 0) :
332 finiteFoxStageDerivativeVector (X := X) N j.modulus w = 0 := by
333 funext i
334 have hcoord :
335 zcFreeGroupFoxDerivative C (QuotientGroup.mk' N) i w = 0 := by
336 simpa [zcFreeGroupFoxDerivative] using congrFun hw i
337 exact
339 (C := C) (X := X) N hIso hCtarget j i hcoord
341/-- At the identity quotient stage, it is enough for the completed derivative vector to vanish
344 [DiscreteTopology (zcFiniteStageTarget X N)]
345 (hIso : ProCGroups.FiniteGroupClass.IsomClosed C)
346 (hCtarget : C.pred (zcFiniteStageTarget X N))
348 {w : FreeGroup X}
349 (hw :
350 (fun i : X =>
353 C (zcFiniteStageTarget X N) hIso hCtarget)
354 (zcFreeGroupFoxDerivativeVector C (QuotientGroup.mk' N) w i)) = 0) :
355 finiteFoxStageDerivativeVector (X := X) N j.modulus w = 0 := by
356 funext i
357 letI : Fact (0 < j.modulus) := ⟨j.positive⟩
358 let U : CompletedGroupAlgebraIndexInClass (zcFiniteStageTarget X N) C :=
359 identityCompletedGroupAlgebraIndexInClassOfMem C (zcFiniteStageTarget X N) hIso hCtarget
360 have hstage :
361 modNCompletedGroupAlgebraStageMapInClass j.modulus
362 (zcFiniteStageTarget X N) C U
363 (finiteFoxStageDerivative (X := X) N j.modulus i w) = 0 := by
364 have hcoord := congrFun hw i
365 simpa [U] using
366 (zcFreeGroupFoxDerivative_finiteStageProjection C N (j, U) i w).symm.trans hcoord
367 exact
369 j.modulus C (zcFiniteStageTarget X N) hIso hCtarget) hstage
371/-- A completed component derivative is determined by all of its finite pro-`C` stage
372projections. -/
374 (i : X)
375 (delta : FreeGroup X → ZCCompletedGroupAlgebra C (zcFiniteStageTarget X N))
376 (hprojection : ∀ w
377 (j : ZCCompletedGroupAlgebraIndex C (zcFiniteStageTarget X N)),
378 zcCompletedGroupAlgebraProjection C (zcFiniteStageTarget X N) j (delta w) =
379 (letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
380 modNCompletedGroupAlgebraStageMapInClass j.1.modulus
381 (zcFiniteStageTarget X N) C j.2
382 (finiteFoxStageDerivative (X := X) N j.1.modulus i w))) :
383 delta = zcFreeGroupFoxDerivative C (QuotientGroup.mk' N) i := by
384 funext w
385 apply Subtype.ext
386 funext j
387 change zcCompletedGroupAlgebraProjection C (zcFiniteStageTarget X N) j (delta w) =
389 (zcFreeGroupFoxDerivative C (QuotientGroup.mk' N) i w)
390 rw [hprojection w j, zcFreeGroupFoxDerivative_finiteStageProjection C N j i w]
392/-- Existence and uniqueness of the completed component derivative characterized by all finite
393pro-`C` stage projection formulas. -/
395 (i : X) :
396 ∃! delta : FreeGroup X → ZCCompletedGroupAlgebra C (zcFiniteStageTarget X N),
397 ∀ w (j : ZCCompletedGroupAlgebraIndex C (zcFiniteStageTarget X N)),
398 zcCompletedGroupAlgebraProjection C (zcFiniteStageTarget X N) j (delta w) =
399 (letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
400 modNCompletedGroupAlgebraStageMapInClass j.1.modulus
401 (zcFiniteStageTarget X N) C j.2
402 (finiteFoxStageDerivative (X := X) N j.1.modulus i w)) := by
403 refine ⟨zcFreeGroupFoxDerivative C (QuotientGroup.mk' N) i, ?_, ?_⟩
404 · intro w j
405 exact zcFreeGroupFoxDerivative_finiteStageProjection C N j i w
406 · intro delta hprojection
407 exact zcFreeGroupFoxDerivative_unique_finiteStageProjection C N i delta hprojection
409/-- The completed derivative vector is determined by all finite pro-`C` stage projection
410formulas. -/
412 (delta : FreeGroup X →
413 ZCFreeFoxCoordinates C (X := X) (H := zcFiniteStageTarget X N))
414 (hprojection : ∀ w
415 (j : ZCCompletedGroupAlgebraIndex C (zcFiniteStageTarget X N)),
416 (fun i : X =>
418 (delta w i)) =
419 fun i : X =>
420 letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
421 modNCompletedGroupAlgebraStageMapInClass j.1.modulus
422 (zcFiniteStageTarget X N) C j.2
423 (finiteFoxStageDerivative (X := X) N j.1.modulus i w)) :
424 delta = zcFreeGroupFoxDerivativeVector C (QuotientGroup.mk' N) := by
425 funext w i
426 apply Subtype.ext
427 funext j
428 change zcCompletedGroupAlgebraProjection C (zcFiniteStageTarget X N) j (delta w i) =
430 (zcFreeGroupFoxDerivativeVector C (QuotientGroup.mk' N) w i)
431 have hcoord := congrFun (hprojection w j) i
432 rw [hcoord]
433 exact (by
434 simpa [zcFreeGroupFoxDerivative] using
435 (zcFreeGroupFoxDerivative_finiteStageProjection C N j i w).symm)
437/-- Existence and uniqueness of the completed derivative vector characterized by all finite
438pro-`C` stage projection formulas. -/
440 ∃! delta : FreeGroup X →
441 ZCFreeFoxCoordinates C (X := X) (H := zcFiniteStageTarget X N),
442 ∀ w (j : ZCCompletedGroupAlgebraIndex C (zcFiniteStageTarget X N)),
443 (fun i : X =>
445 (delta w i)) =
446 fun i : X =>
447 letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
448 modNCompletedGroupAlgebraStageMapInClass j.1.modulus
449 (zcFiniteStageTarget X N) C j.2
450 (finiteFoxStageDerivative (X := X) N j.1.modulus i w) := by
451 refine ⟨zcFreeGroupFoxDerivativeVector C (QuotientGroup.mk' N), ?_, ?_⟩
452 · intro w j
453 exact zcFreeGroupFoxDerivativeVector_finiteStageProjection C N j w
454 · intro delta hprojection
456 C N delta hprojection
458section FundamentalFormula
460variable [Fintype X]
462/-- The completed Fox-Euler formula for the quotient map `F -> F/N`. -/
464 (w : FreeGroup X) :
465 zcCompletedGroupAlgebraBoundary C (QuotientGroup.mk' N) w =
466 ∑ i : X,
467 zcFreeGroupFoxDerivative C (QuotientGroup.mk' N) i w *
468 (zcGroupLike C (zcFiniteStageTarget X N)
469 (QuotientGroup.mk' N (FreeGroup.of i)) - 1) := by
470 exact zcFreeGroupFoxDerivative_fundamental_formula C (QuotientGroup.mk' N) w
472/-- Projection of the completed Fox-Euler formula to one finite pro-`C` target stage. -/
474 (w : FreeGroup X)
475 (j : ZCCompletedGroupAlgebraIndex C (zcFiniteStageTarget X N)) :
477 (zcCompletedGroupAlgebraBoundary C (QuotientGroup.mk' N) w) =
478 ∑ i : X,
480 (zcFreeGroupFoxDerivative C (QuotientGroup.mk' N) i w) *
482 (zcGroupLike C (zcFiniteStageTarget X N)
483 (QuotientGroup.mk' N (FreeGroup.of i)) - 1) := by
484 have h := congrArg
485 (zcCompletedGroupAlgebraProjection C (zcFiniteStageTarget X N) j)
487 rw [zcCompletedGroupAlgebraProjection_sum] at h
488 simpa using h
490/-- Projection of the completed Fox-Euler formula with derivative coordinates rewritten as
493 (w : FreeGroup X)
494 (j : ZCCompletedGroupAlgebraIndex C (zcFiniteStageTarget X N)) :
496 (zcCompletedGroupAlgebraBoundary C (QuotientGroup.mk' N) w) =
497 ∑ i : X,
498 (letI : Fact (0 < j.1.modulus) := ⟨j.1.positive⟩
499 modNCompletedGroupAlgebraStageMapInClass j.1.modulus
500 (zcFiniteStageTarget X N) C j.2
501 (finiteFoxStageDerivative (X := X) N j.1.modulus i w)) *
503 (zcGroupLike C (zcFiniteStageTarget X N)
504 (QuotientGroup.mk' N (FreeGroup.of i)) - 1) := by
506 apply Finset.sum_congr rfl
507 intro i _
508 rw [zcFreeGroupFoxDerivative_finiteStageProjection C N j i w]
510end FundamentalFormula
512end FiniteStageCompletedComparison
514section FiniteTargetStageZero
516variable (C : ProCGroups.FiniteGroupClass.{u})
517variable (hC : ProCGroups.FiniteGroupClass.Hereditary C)
518variable {X : Type u} [DecidableEq X]
519variable {H : Type u} [Group H] [TopologicalSpace H] [IsTopologicalGroup H]
520variable [DiscreteTopology H]
522include hC
524/-- Surjective-target form of finite-stage zero from completed universal zero.
526The quotient-map theorem is applied after transporting the target along
527`FreeGroup X / ker ψ ≃* H`; this avoids redoing the quotient identification at Crowell use sites. -/
529 (hIso : ProCGroups.FiniteGroupClass.IsomClosed C)
530 (hCH : C.pred H)
531 (ψ : FreeGroup X →* H) (hψ : Function.Surjective ψ)
533 {w : FreeGroup X}
534 (hw : zcUniversalDifferential C ψ w = 0) :
535 finiteFoxStageDerivativeVector (X := X) ψ.ker j.modulus w = 0 := by
536 let N : Subgroup (FreeGroup X) := ψ.ker
537 let Q : Type u := finiteFoxStageTargetQuotient (X := X) N
538 letI : TopologicalSpace Q := ⊥
539 letI : DiscreteTopology Q := ⟨rfl⟩
540 letI : IsTopologicalGroup Q := inferInstance
541 let e : Q ≃* H := QuotientGroup.quotientKerEquivOfSurjective ψ hψ
542 let q : FreeGroup X →* Q := QuotientGroup.mk' N
543 have hQ : C.pred Q :=
544 ProCGroups.FiniteGroupClass.IsomClosed.of_mulEquiv hIso e.symm hCH
545 have he_apply (g : FreeGroup X) : e (q g) = ψ g := by
546 change QuotientGroup.quotientKerEquivOfSurjective ψ hψ
547 (QuotientGroup.mk' ψ.ker g) = ψ g
548 rfl
549 let eSymm : H →ₜ* Q :=
550 { toMonoidHom := e.symm.toMonoidHom
551 continuous_toFun := continuous_of_discreteTopology }
552 have hcompSymm : eSymm.toMonoidHom.comp ψ = q := by
553 apply MonoidHom.ext
554 intro g
555 apply e.injective
556 change e (e.symm (ψ g)) = e (q g)
557 simpa using (he_apply g).symm
558 have hq :
559 zcUniversalDifferential C q w = 0 := by
560 have htarget :
561 zcUniversalDifferential C (eSymm.toMonoidHom.comp ψ) w = 0 :=
562 zcUniversalDifferential_eq_zero_of_target C hC ψ eSymm hw
563 rwa [hcompSymm] at htarget
564 exact
566 (C := C) (X := X) N hIso hQ j hq
568/-- Finite-quotient commutator conclusion from completed universal zero, assuming only the
570kernel.
572The coefficient modulus is not an extra hypothesis: under formation plus hereditary hypotheses,
573`ProCIntegerIndex.exists_index_kills_finite_group_of_mem` chooses an allowed modulus that kills
576 [Fintype X]
577 (hForm : ProCGroups.FiniteGroupClass.Formation C)
578 (hCH : C.pred H)
579 {Q : Type u} [Group Q]
580 (α : FreeGroup X →* Q) (hα : Function.Surjective α)
581 (β : Q →* H) (hβ : Function.Surjective β)
582 (hCker : C.pred β.ker)
583 (hmag :
585 (∀ k : β.ker, k ^ j.modulus = 1) →
586 ∀ w : FreeGroup X,
588 residueUniversalDifferential j.modulus
592 {w : FreeGroup X}
594 (hzero : zcUniversalDifferential C (β.comp α) w = 0) :
595 (⟨α w, by
596 change β (α w) = 1
597 simpa [MonoidHom.mem_ker, MonoidHom.comp_apply] using hwker⟩ : β.ker) ∈
598 commutator β.ker := by
599 letI : Finite β.ker := hForm.finiteOnly hCker
601 (C := C) hForm hC hCker with ⟨j, hpow⟩
602 have hψ : Function.Surjective (β.comp α) := by
603 intro h
604 rcases hβ h with ⟨q, rfl⟩
605 rcases hα q with ⟨g, rfl⟩
606 exact ⟨g, rfl⟩
607 have hder :
608 finiteFoxStageDerivativeVector (X := X) (β.comp α).ker j.modulus w = 0 :=
610 (C := C) (X := X) hC hForm.isomClosed hCH
611 (β.comp α) hψ j hzero
612 have hres :
613 residueUniversalDifferential j.modulus
617 exact
619 (X := X) α β j.modulus hpow (hmag j hpow) hwker hres
621end FiniteTargetStageZero
623end
625end FoxDifferential