FoxDifferential/Completed/FiniteStage/RelationIdealDerivative.lean
1import FoxDifferential.Completed.FiniteStage.SourceBoundary
3/-
4PUBLIC_PAGE_SNAPSHOT
5generated_at: 2026-05-27T09:47:29+09:00
6lean_source: lean4/FoxDifferential/Completed/FiniteStage/RelationIdealDerivative.lean
7translation_root: data/translation
8purpose: identifies the local data snapshot used to build pages/
9placement: after imports, never before imports
10-/
11/-!
15The source-to-target group-algebra kernel has already been identified with the relation
16augmentation ideal generated by `q - 1`. Here we differentiate that ideal and prove that its
18calculation that differentiating the source boundary `Σ a_i([x_i]-1)` recovers the target
19coordinate vector closes the source-boundary relation-ideal reduction.
20-/
22namespace FoxDifferential
24noncomputable section
26open ProCGroups.InverseSystems
27open ProCGroups.ProC
29universe u
31variable {X : Type u} [DecidableEq X]
32variable (N : Subgroup (FreeGroup X)) [N.Normal] (n : ℕ)
34/-- The vector of target-valued finite Fox derivatives of a source group-algebra element. -/
36 (x : finiteFoxStageSourceGroupAlgebra (X := X) N n) :
37 finiteFoxStageCoordinateVector (X := X) N n :=
38 fun i => finiteFoxStageGroupAlgebraDerivative (X := X) N n i x
40@[simp]
42 (x : finiteFoxStageSourceGroupAlgebra (X := X) N n) (i : X) :
43 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n x i =
44 finiteFoxStageGroupAlgebraDerivative (X := X) N n i x :=
45 rfl
47@[simp]
49 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n 0 = 0 := by
50 funext i
51 simp only [finiteFoxStageGroupAlgebraDerivativeVector_apply, map_zero, Pi.zero_apply]
53@[simp]
55 (x y : finiteFoxStageSourceGroupAlgebra (X := X) N n) :
56 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n (x + y) =
57 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n x +
58 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n y := by
59 funext i
60 simp only [finiteFoxStageGroupAlgebraDerivativeVector, map_add, Pi.add_apply]
62@[simp]
64 (x : finiteFoxStageSourceGroupAlgebra (X := X) N n) :
65 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n (-x) =
66 -finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n x := by
67 funext i
68 simp only [finiteFoxStageGroupAlgebraDerivativeVector_apply, map_neg, Pi.neg_apply]
70@[simp]
72 (x y : finiteFoxStageSourceGroupAlgebra (X := X) N n) :
73 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n (x - y) =
74 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n x -
75 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n y := by
76 funext i
77 simp only [finiteFoxStageGroupAlgebraDerivativeVector, map_sub, Pi.sub_apply]
79/-- Product rule for the vector of target-valued derivatives. -/
81 (x y : finiteFoxStageSourceGroupAlgebra (X := X) N n) :
82 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n (x * y) =
83 (algebraMap (ModNCompletedCoeff n)
84 (finiteFoxStageTargetGroupAlgebra (X := X) N n)
86 (F := FreeGroup X) N n y)) •
87 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n x +
88 finiteFoxCommutatorPowerGroupAlgebraMap (F := FreeGroup X) N n x •
89 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n y := by
90 funext i
92 Algebra.smul_def, MonoidAlgebra.coe_algebraMap, Algebra.algebraMap_self, RingHom.coe_id, Function.comp_apply, id_eq,
93 Pi.add_apply, Pi.smul_apply, smul_eq_mul]
95/-- The derivative vector of a relation augmentation generator is the corresponding relation
96boundary vector. -/
98 (q : finiteFoxStageRelationGroup (X := X) N n) :
99 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n
100 (finiteFoxStageRelationAugmentationGenerator (X := X) N n q) =
101 finiteFoxStageRelationBoundaryAddMonoidHom (X := X) N n (Additive.ofMul q) := by
102 funext i
105 rw [finiteFoxStageRelationAugmentationGenerator, map_sub,
107 finiteFoxStageGroupAlgebraDerivative_one, sub_zero]
108 rfl
110omit [DecidableEq X] in
111/-- Relation augmentation generators have zero source augmentation. -/
113 (q : finiteFoxStageRelationGroup (X := X) N n) :
115 (F := FreeGroup X) N n
116 (finiteFoxStageRelationAugmentationGenerator (X := X) N n q) = 0 := by
117 rw [finiteFoxStageRelationAugmentationGenerator, map_sub, map_one,
119 simp only [sub_self]
121omit [DecidableEq X] in
122/-- Relation augmentation generators have zero target image. -/
124 (q : finiteFoxStageRelationGroup (X := X) N n) :
125 finiteFoxCommutatorPowerGroupAlgebraMap (F := FreeGroup X) N n
126 (finiteFoxStageRelationAugmentationGenerator (X := X) N n q) = 0 := by
127 exact
128 (mem_finiteFoxStageGroupAlgebraMapKernelIdeal (X := X) (N := N) (n := n)).1
130 (X := X) N n q)
132/-- The derivative vector of every element of the finite relation augmentation ideal lies in the
133relation-boundary submodule. The proof keeps the two extra invariants used by the product rule:
136 {x : finiteFoxStageSourceGroupAlgebra (X := X) N n}
137 (hx : x ∈ finiteFoxStageRelationAugmentationIdeal (X := X) N n) :
138 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n x ∈
139 finiteFoxStageRelationBoundarySubmodule (X := X) N n := by
140 let P : finiteFoxStageSourceGroupAlgebra (X := X) N n → Prop := fun z =>
141 finiteFoxCommutatorPowerGroupAlgebraMap (F := FreeGroup X) N n z = 0 ∧
142 finiteFoxCommutatorPowerSourceGroupAlgebraAugmentation (F := FreeGroup X) N n z = 0 ∧
143 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n z ∈
144 finiteFoxStageRelationBoundarySubmodule (X := X) N n
145 have hP : P x := by
146 change x ∈ Submodule.span (finiteFoxStageSourceGroupAlgebra (X := X) N n)
147 (Set.range (finiteFoxStageRelationAugmentationGenerator (X := X) N n)) at hx
148 refine Submodule.span_induction (p := fun z _ => P z) ?hgen ?hzero ?hadd ?hsmul hx
149 · rintro z ⟨q, rfl⟩
150 refine ⟨?_, ?_, ?_⟩
152 (X := X) N n q
154 (X := X) N n q
157 (X := X) N n (Additive.ofMul q)
158 · refine ⟨?_, ?_, ?_⟩
161 · simp only [finiteFoxStageGroupAlgebraDerivativeVector_zero, zero_mem]
162 · intro a b _ _ ha hb
163 rcases ha with ⟨ha_map, ha_aug, ha_der⟩
164 rcases hb with ⟨hb_map, hb_aug, hb_der⟩
165 refine ⟨?_, ?_, ?_⟩
169 exact (finiteFoxStageRelationBoundarySubmodule (X := X) N n).add_mem ha_der hb_der
170 · intro a z _ hz
171 rcases hz with ⟨hz_map, hz_aug, hz_der⟩
172 refine ⟨?_, ?_, ?_⟩
173 · change finiteFoxCommutatorPowerGroupAlgebraMap (F := FreeGroup X) N n (a * z) = 0
174 rw [RingHom.map_mul, hz_map, mul_zero]
176 (F := FreeGroup X) N n (a * z) = 0
178 · have hderivative :
179 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n (a * z) =
180 finiteFoxCommutatorPowerGroupAlgebraMap (F := FreeGroup X) N n a •
181 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n z := by
183 rw [hz_aug]
184 simp only [MonoidAlgebra.coe_algebraMap, Algebra.algebraMap_self, RingHom.coe_id, Function.comp_apply, id_eq,
185 Finsupp.single_zero, zero_smul, zero_add]
186 change finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n (a * z) ∈
187 finiteFoxStageRelationBoundarySubmodule (X := X) N n
188 rw [hderivative]
189 exact (finiteFoxStageRelationBoundarySubmodule (X := X) N n).smul_mem _ hz_der
190 exact hP.2.2
192/-- Differentiating the source Fox boundary recovers the coordinatewise source-to-target image. -/
194 [Fintype X]
195 (a : finiteFoxStageSourceCoordinateVector (X := X) N n) :
196 finiteFoxStageGroupAlgebraDerivativeVector (X := X) N n
197 (finiteFoxStageSourceFoxBoundary (X := X) N n a) =
198 finiteFoxStageCoordinateSourceToTarget (X := X) N n a := by
199 funext j
203 have hgen_aug (i : X) :
205 (F := FreeGroup X) N n
206 (MonoidAlgebra.of (ModNCompletedCoeff n)
207 (FreeGroup X ⧸ finiteFoxCommutatorPowerSubgroup (F := FreeGroup X) N n)
208 (QuotientGroup.mk'
209 (finiteFoxCommutatorPowerSubgroup (F := FreeGroup X) N n)
210 (FreeGroup.of i)) - 1) = 0 := by
212 simp only [sub_self]
213 have hgen_derivative (i : X) :
214 finiteFoxStageGroupAlgebraDerivative (X := X) N n j
215 (MonoidAlgebra.of (ModNCompletedCoeff n)
216 (FreeGroup X ⧸ finiteFoxCommutatorPowerSubgroup (F := FreeGroup X) N n)
217 (QuotientGroup.mk'
218 (finiteFoxCommutatorPowerSubgroup (F := FreeGroup X) N n)
219 (FreeGroup.of i)) - 1) =
220 (Pi.single i (1 : finiteFoxStageTargetGroupAlgebra (X := X) N n) :
221 X → finiteFoxStageTargetGroupAlgebra (X := X) N n) j := by
222 rw [map_sub, finiteFoxStageGroupAlgebraDerivative_of,
223 finiteFoxStageGroupAlgebraDerivative_one, sub_zero]
224 simp only [finiteFoxStageDerivative, finiteFoxStageDerivativeVector_of]
225 calc
226 finiteFoxStageGroupAlgebraDerivative (X := X) N n j
227 (∑ i : X,
228 a i *
229 (MonoidAlgebra.of (ModNCompletedCoeff n)
230 (FreeGroup X ⧸ finiteFoxCommutatorPowerSubgroup (F := FreeGroup X) N n)
231 (QuotientGroup.mk'
232 (finiteFoxCommutatorPowerSubgroup (F := FreeGroup X) N n)
233 (FreeGroup.of i)) - 1))
234 =
235 ∑ i : X,
236 finiteFoxCommutatorPowerGroupAlgebraMap (F := FreeGroup X) N n (a i) *
237 ((Pi.single i (1 : finiteFoxStageTargetGroupAlgebra (X := X) N n) :
238 X → finiteFoxStageTargetGroupAlgebra (X := X) N n) j) := by
239 rw [map_sum]
240 apply Finset.sum_congr rfl
241 intro i hi
243 rw [hgen_aug i, zero_smul, zero_add, hgen_derivative i]
244 _ = finiteFoxCommutatorPowerGroupAlgebraMap (F := FreeGroup X) N n (a j) := by
245 rw [Finset.sum_eq_single j]
246 · simp only [Pi.single_eq_same, mul_one]
247 · intro i _ hij
248 rw [Pi.single_eq_of_ne hij.symm]
249 simp only [mul_zero]
250 · simp only [Finset.mem_univ, not_true_eq_false, Pi.single_eq_same, mul_one, IsEmpty.forall_iff]
252/-- The source-boundary relation-ideal reduction is a theorem: if the source boundary of a lift is
253in the relation ideal, differentiating that boundary gives the desired relation-boundary vector. -/
255 [Fintype X] :
256 finiteFoxStageSourceBoundaryRelationIdealReduction (X := X) N n := by
257 intro a ha
258 have hderivative :=
260 (X := X) N n (x := finiteFoxStageSourceFoxBoundary (X := X) N n a) ha
261 rw [finiteFoxStageGroupAlgebraDerivativeVector_sourceFoxBoundary (X := X) N n a] at hderivative
262 exact hderivative
264/-- Finite-stage relation-boundary module exactness follows from differentiating the relation
265augmentation ideal. -/
267 [Fintype X] :
268 finiteFoxStageRelationBoundaryModuleExact (X := X) N n :=
270 (X := X) N n
272 (X := X) N n)
274/-- Finite-stage coordinate coverage follows from the relation-ideal derivative calculation. -/
276 [Fintype X] :
277 finiteFoxStageBoundaryCyclesCoveredBySourceKernel (X := X) N n :=
279 (X := X) N n
282/-- Finite-stage semidirect coverage follows from the relation-ideal derivative calculation. -/
284 [Fintype X] :
285 finiteFoxStageSemidirectBoundaryCyclesCoveredBySourceKernel (X := X) N n :=
286 (finiteFoxStageSemidirectBoundaryCyclesCoveredBySourceKernel_iff (X := X) N n).2
288 (X := X) N n)
290end
292end FoxDifferential