FoxDifferential/Completed/FiniteStage/RelationSubmodule.lean

1import FoxDifferential.Completed.FiniteStage.RelationAction
3/-
4PUBLIC_PAGE_SNAPSHOT
5generated_at: 2026-05-27T09:47:29+09:00
6lean_source: lean4/FoxDifferential/Completed/FiniteStage/RelationSubmodule.lean
7translation_root: data/translation
8purpose: identifies the local data snapshot used to build pages/
9placement: after imports, never before imports
10-/
11/-!
12# Finite-stage relation-boundary submodule
14The finite-stage relation boundary image is naturally an additive subgroup, because it comes from
15`ker(F/[N,N]N^n -> F/N)`. The finite Blanchfield--Lyndon statement is module-theoretic, so this
16file packages the `Z/nZ[F/N]`-submodule generated by those relation-boundary vectors and separates
17module-level exactness from the stronger set-level source-kernel coverage needed in the completed
18density step.
19-/
21namespace FoxDifferential
23noncomputable section
25open ProCGroups.InverseSystems
26open ProCGroups.ProC
28universe u
30variable {X : Type u} [DecidableEq X]
31variable (N : Subgroup (FreeGroup X)) [N.Normal] (n : ℕ)
33/-- The `Z/nZ[F/N]`-submodule generated by finite-stage relation-boundary vectors. -/
35 Submodule (finiteFoxStageTargetGroupAlgebra (X := X) N n)
37 Submodule.span (finiteFoxStageTargetGroupAlgebra (X := X) N n)
41/-- Every actual relation-boundary vector lies in the generated relation-boundary submodule. -/
44 Set (finiteFoxStageCoordinateVector (X := X) N n)) ⊆
46 exact Submodule.subset_span
48/-- A relation boundary of a finite-stage relation lies in the generated submodule. -/
50 (q : Additive (finiteFoxStageRelationGroup (X := X) N n)) :
54 exact (mem_finiteFoxStageRelationBoundaryRange_iff (X := X) N n).2 ⟨q, rfl
56/-- The actual relation-boundary image is stable under arbitrary finite group-algebra scalars. -/
60 (hv : v ∈ finiteFoxStageRelationBoundaryRange (X := X) N n) :
61 a • v ∈ finiteFoxStageRelationBoundaryRange (X := X) N n := by
62 classical
63 refine MonoidAlgebra.induction_linear
66 (p := fun a : finiteFoxStageTargetGroupAlgebra (X := X) N n =>
67 a • v ∈ finiteFoxStageRelationBoundaryRange (X := X) N n)
68 a ?zero ?add ?single
69 · simp only [zero_smul, zero_mem]
70 · intro a b ha hb
71 rw [add_smul]
72 exact (finiteFoxStageRelationBoundaryRange (X := X) N n).add_mem ha hb
73 · intro h c
74 rcases ZMod.intCast_surjective c with ⟨m, rfl
75 have hbase :
76 (MonoidAlgebra.of (ModNCompletedCoeff n)
77 (finiteFoxStageTargetQuotient (X := X) N) h) • v ∈
80 have hsingle :
81 ((MonoidAlgebra.single h (m : ModNCompletedCoeff n) :
82 finiteFoxStageTargetGroupAlgebra (X := X) N n) • v :
84 (m : ℤ) •
85 ((MonoidAlgebra.of (ModNCompletedCoeff n)
86 (finiteFoxStageTargetQuotient (X := X) N) h) • v :
88 have hsingleAlg :
89 (MonoidAlgebra.single h (m : ModNCompletedCoeff n) :
92 MonoidAlgebra.of (ModNCompletedCoeff n)
93 (finiteFoxStageTargetQuotient (X := X) N) h := by
94 simp only [MonoidAlgebra.of, MonoidHom.coe_mk, OneHom.coe_mk, MonoidAlgebra.smul_single, smul_eq_mul, mul_one]
95 rw [hsingleAlg]
96 rw [smul_assoc]
97 exact Int.cast_smul_eq_zsmul (ModNCompletedCoeff n) m
98 ((MonoidAlgebra.of (ModNCompletedCoeff n)
99 (finiteFoxStageTargetQuotient (X := X) N) h) • v :
101 rw [hsingle]
102 exact (finiteFoxStageRelationBoundaryRange (X := X) N n).zsmul_mem hbase m
104/-- The actual relation-boundary image as a finite group-algebra submodule. -/
106 Submodule (finiteFoxStageTargetGroupAlgebra (X := X) N n)
107 (finiteFoxStageCoordinateVector (X := X) N n) where
109 zero_mem' := (finiteFoxStageRelationBoundaryRange (X := X) N n).zero_mem
110 add_mem' := by
111 intro x y hx hy
112 exact (finiteFoxStageRelationBoundaryRange (X := X) N n).add_mem hx hy
113 smul_mem' := by
114 intro a v hv
117@[simp]
120 Submodule (finiteFoxStageTargetGroupAlgebra (X := X) N n)
122 Set (finiteFoxStageCoordinateVector (X := X) N n)) =
125 Submodule.coe_set_mk, AddSubmonoid.coe_set_mk, AddSubsemigroup.coe_set_mk]
127/-- The generated relation-boundary submodule is the actual relation-boundary image, because the
128image is already stable under the finite target group algebra. -/
132 apply le_antisymm
133 · refine Submodule.span_le.2 ?_
134 intro v hv
135 exact hv
136 · intro v hv
140/-- The relation-boundary submodule is contained in the finite Fox boundary cycles. -/
142 [Fintype X] :
145 refine Submodule.span_le.2 ?_
146 intro v hv
149/-- Module-level finite-stage exactness at the coordinate module:
150`ker ∂` is contained in the submodule generated by finite relation boundaries. -/
155/-- Function-level relation-boundary exactness implies the module-level finite exactness target. -/
157 [Fintype X]
158 (hexact : finiteFoxStageRelationBoundaryExact (X := X) N n) :
160 intro v hv
163 (X := X) N n hexact
164 have hvsource : v ∈ finiteFoxStageSourceKernelDerivativeSet (X := X) N n :=
165 hcovered hv
166 have hvrange : v ∈ finiteFoxStageRelationBoundaryRange (X := X) N n := by
168 exact hvsource
170 (X := X) N n hvrange
172/-- The set-level finite coverage target implies the module-level finite exactness target. -/
174 [Fintype X]
177 intro v hv
178 have hvsource : v ∈ finiteFoxStageSourceKernelDerivativeSet (X := X) N n := hcovered hv
179 have hvrange : v ∈ finiteFoxStageRelationBoundaryRange (X := X) N n := by
181 exact hvsource
183 (X := X) N n hvrange
185/-- Module-level finite exactness is strong enough to recover the set-level source-kernel coverage,
186because the relation-boundary image is already a finite group-algebra submodule. -/
188 [Fintype X]
191 intro v hv
192 have hvrel : v ∈ finiteFoxStageRelationBoundarySubmodule (X := X) N n := hexact hv
197/-- Module exactness is equivalent to equality between `ker ∂` and the generated relation-boundary
198submodule. -/
200 [Fintype X] :
204 constructor
205 · intro hexact
206 exact le_antisymm
208 hexact
209 · intro h v hv
210 rw [h]
211 exact hv
213/-- Function-level finite exactness identifies `ker ∂` with the generated relation-boundary
214submodule. -/
216 [Fintype X]
217 (hexact : finiteFoxStageRelationBoundaryExact (X := X) N n) :
221 (X := X) N n).1
223 (X := X) N n hexact)
225end
227end FoxDifferential