FoxDifferential/Discrete/FoxCalculus/Derivative.lean
1import FoxDifferential.Discrete.FoxCalculus.Semidirect
2import FoxDifferential.Discrete.DifferentialModule.Universal
3import FoxDifferential.Common.FreeCrossedDifferential
5/-
6PUBLIC_PAGE_SNAPSHOT
7generated_at: 2026-05-27T09:47:29+09:00
8lean_source: lean4/FoxDifferential/Discrete/FoxCalculus/Derivative.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 group-ring Fox calculus
16Ordinary Fox derivatives over group rings are developed through augmentation, relative differential modules, coordinates, Jacobians, and chain rules.
17-/
18namespace FoxDifferential
20noncomputable section
22namespace FoxCalculus
24open scoped BigOperators
26universe u v
29variable {H : Type v} [Group H]
30variable (X : Type u)
32variable [DecidableEq X]
33variable (ψ : FreeGroup X →* H)
35/-- The semidirect-product lift whose left component is the Fox derivative pushed forward by
36`ψ`, and whose right component is `ψ` itself. -/
37def relativeFreeGroupFoxLift : FreeGroup X →* RelativeFoxSemidirect (H := H) X :=
38 FreeGroup.lift fun x =>
40 right := ψ (FreeGroup.of x) }
42/-- The Fox derivative of a free-group word, with coefficients pushed forward to `ℤ[H]` by
43`ψ`. -/
44def relativeFreeGroupFoxDerivative (w : FreeGroup X) :
45 RelativeFreeFoxCoordinates (H := H) X :=
46 (relativeFreeGroupFoxLift (H := H) X ψ w).left
48/-- The right component of the relative Fox lift is the target homomorphism `ψ`. -/
49@[simp]
50theorem relativeFreeGroupFoxLift_right (w : FreeGroup X) :
51 (relativeFreeGroupFoxLift (H := H) X ψ w).right = ψ w := by
52 induction w using FreeGroup.induction_on with
53 | C1 =>
54 simp only [relativeFreeGroupFoxLift, map_one, RelativeFoxSemidirect.one_right]
55 | of x =>
56 simp only [relativeFreeGroupFoxLift, FreeGroup.lift_apply_of]
57 | inv_of x hx =>
58 simpa using congrArg Inv.inv hx
59 | mul x y hx hy =>
62/-- The relative Fox derivative of the identity word is zero. -/
63@[simp]
64theorem relativeFreeGroupFoxDerivative_one :
65 relativeFreeGroupFoxDerivative (H := H) X ψ (1 : FreeGroup X) = 0 := by
66 simp only [relativeFreeGroupFoxDerivative, relativeFreeGroupFoxLift, map_one, RelativeFoxSemidirect.one_left]
68/-- The relative Fox derivative of a free generator is the corresponding coordinate vector. -/
69@[simp]
70theorem relativeFreeGroupFoxDerivative_of (x : X) :
71 relativeFreeGroupFoxDerivative (H := H) X ψ (FreeGroup.of x) =
73 simp only [relativeFreeGroupFoxDerivative, relativeFreeGroupFoxLift, FreeGroup.lift_apply_of]
75/-- Relative Fox product rule. -/
76theorem relativeFreeGroupFoxDerivative_mul (w₁ w₂ : FreeGroup X) :
77 relativeFreeGroupFoxDerivative (H := H) X ψ (w₁ * w₂) =
78 relativeFreeGroupFoxDerivative (H := H) X ψ w₁ +
80 relativeFreeGroupFoxDerivative (H := H) X ψ w₂ := by
81 simp only [relativeFreeGroupFoxDerivative, map_mul, RelativeFoxSemidirect.mul_left,
82 relativeFreeGroupFoxLift_right, MonoidAlgebra.of_apply]
84/-- Relative Fox inverse rule. -/
85theorem relativeFreeGroupFoxDerivative_inv (w : FreeGroup X) :
86 relativeFreeGroupFoxDerivative (H := H) X ψ w⁻¹ =
88 relativeFreeGroupFoxDerivative (H := H) X ψ w) := by
89 simp only [relativeFreeGroupFoxDerivative, map_inv, RelativeFoxSemidirect.inv_left,
90 relativeFreeGroupFoxLift_right, MonoidAlgebra.of_apply]
92/-- The relative free-group Fox derivative is a differential map for `ψ`. -/
95 (A := RelativeFreeFoxCoordinates (H := H) X)
96 ψ
97 (relativeFreeGroupFoxDerivative (H := H) X ψ) := by
98 intro w₁ w₂
99 simpa using relativeFreeGroupFoxDerivative_mul (H := H) X ψ w₁ w₂
101/-- Uniqueness of the relative free-group Fox derivative among differential maps with standard
102coordinate values on free generators. -/
104 (delta : FreeGroup X → RelativeFreeFoxCoordinates (H := H) X)
105 (hdelta : IsDifferentialMap (A := RelativeFreeFoxCoordinates (H := H) X) ψ delta)
106 (hbasis :
107 ∀ x : X, delta (FreeGroup.of x) =
109 delta = relativeFreeGroupFoxDerivative (H := H) X ψ := by
110 have hdelta_free :
111 delta =
113 (A := RelativeFreeFoxCoordinates (H := H) X) (groupRingScalar ψ)
116 (A := RelativeFreeFoxCoordinates (H := H) X) (groupRingScalar ψ)
118 delta hdelta hbasis
119 have hrelative_free :
120 relativeFreeGroupFoxDerivative (H := H) X ψ =
122 (A := RelativeFreeFoxCoordinates (H := H) X) (groupRingScalar ψ)
125 (A := RelativeFreeFoxCoordinates (H := H) X) (groupRingScalar ψ)
127 (relativeFreeGroupFoxDerivative (H := H) X ψ)
128 (relativeFreeGroupFoxDerivative_isDifferentialMap (H := H) X ψ)
129 (relativeFreeGroupFoxDerivative_of (H := H) X ψ)
130 exact hdelta_free.trans hrelative_free.symm
132/-- Relative Fox derivative of a positive power. -/
133theorem relativeFreeGroupFoxDerivative_pow (w : FreeGroup X) (n : ℕ) :
134 relativeFreeGroupFoxDerivative (H := H) X ψ (w ^ n) =
135 (Finset.range n).sum (fun k =>
137 relativeFreeGroupFoxDerivative (H := H) X ψ w) := by
138 simpa [groupRingScalar] using
139 IsCrossedDifferential.pow
140 (relativeFreeGroupFoxDerivative_isDifferentialMap (H := H) X ψ) w n
142/-- Relative Fox derivative of a conjugate. -/
143theorem relativeFreeGroupFoxDerivative_conj (g h : FreeGroup X) :
144 relativeFreeGroupFoxDerivative (H := H) X ψ (g * h * g⁻¹) =
145 relativeFreeGroupFoxDerivative (H := H) X ψ g +
147 relativeFreeGroupFoxDerivative (H := H) X ψ h -
149 relativeFreeGroupFoxDerivative (H := H) X ψ g := by
150 simpa [groupRingScalar] using
151 IsCrossedDifferential.conj
152 (relativeFreeGroupFoxDerivative_isDifferentialMap (H := H) X ψ) g h
154/-- Relative Fox derivative of a commutator. -/
155theorem relativeFreeGroupFoxDerivative_commutator (g h : FreeGroup X) :
156 relativeFreeGroupFoxDerivative (H := H) X ψ ⁅g, h⁆ =
157 relativeFreeGroupFoxDerivative (H := H) X ψ g +
159 relativeFreeGroupFoxDerivative (H := H) X ψ h -
161 relativeFreeGroupFoxDerivative (H := H) X ψ g -
163 relativeFreeGroupFoxDerivative (H := H) X ψ h := by
164 simpa [groupRingScalar] using
165 IsCrossedDifferential.commutator
166 (relativeFreeGroupFoxDerivative_isDifferentialMap (H := H) X ψ) g h
168end FoxCalculus
170end
172end FoxDifferential