ProCGroups.FoxDifferential.Discrete.DifferentialModule.Universal
The principal declarations in this module are:
DifferentialHomA \(\psi\)-differential map is a map satisfying the Fox Leibniz rule. -liftLinearThe linear map out of the free pre-module determined by \(\delta\). -liftLinear_singleThe linear extension of a map evaluates on a single basis vector by scalar multiplication. -differentialHomLiftLinear_relationElementA crossed differential kills each defining relation of the universal differential module.
abbrev DifferentialHom (ψ : G →* H) (A : Type*) [AddCommGroup A] [Module (GroupRing H) A] :=
ScalarCrossedHom (groupRingScalar ψ) AA \(\psi\)-differential map is a map satisfying the Fox Leibniz rule.
def liftLinear (δ : G → A) : DifferentialPreModule H G →ₗ[GroupRing H] A :=
Finsupp.linearCombination (GroupRing H) δThe linear map out of the free pre-module determined by \(\delta\).
omit [Group G] in
@[simp]
theorem liftLinear_single (δ : G → A) (g : G) (r : GroupRing H) :
liftLinear δ (Finsupp.single g r) = r • δ gThe linear extension of a map evaluates on a single basis vector by scalar multiplication.
Show Lean proof
by
simp only [liftLinear, Finsupp.linearCombination_single]
theorem differentialHomLiftLinear_relationElement
(ψ : G →* H) (δ : DifferentialHom ψ A) (g₁ g₂ : G) :
liftLinear δ (relationElement ψ g₁ g₂) = 0A crossed differential kills each defining relation of the universal differential module.
Show Lean proof
by
simp only [liftLinear, relationElement, MonoidAlgebra.of_apply, Finsupp.smul_single,
smul_eq_mul, mul_one, map_sub, Finsupp.linearCombination_single,
ScalarCrossedHom.map_mul, groupRingScalar_apply, smul_add, one_smul, map_add,
sub_self]
theorem differentialHomRelationSubmodule_le_ker
(ψ : G →* H) (δ : DifferentialHom ψ A) :
relationSubmodule ψ ≤ LinearMap.ker (liftLinear δ)The relation submodule is contained in the kernel of the linear extension of a crossed differential.
Show Lean proof
by
refine Submodule.span_le.2 ?_
rintro _ ⟨⟨g₁, g₂⟩, rfl⟩
simpa [LinearMap.mem_ker] using
differentialHomLiftLinear_relationElement (A := A) ψ δ g₁ g₂
def differentialModuleLift (ψ : G →* H) (δ : DifferentialHom ψ A) :
DifferentialModule ψ →ₗ[GroupRing H] A :=
(relationSubmodule ψ).liftQ (liftLinear δ)
(differentialHomRelationSubmodule_le_ker (A := A) ψ δ)A crossed differential factors uniquely through the universal differential module as a linear map.
@[simp]
theorem differentialModuleLift_d (ψ : G →* H) (δ : DifferentialHom ψ A) (g : G) :
differentialModuleLift ψ δ (universalDifferential ψ g) = δ gThe universal lift evaluates on universalDifferential g as the original crossed differential.
Show Lean proof
by
change
(relationSubmodule ψ).liftQ (liftLinear δ)
(differentialHomRelationSubmodule_le_ker (A := A) ψ δ)
((relationSubmodule ψ).mkQ (Finsupp.single g 1)) = δ g
rw [Submodule.mkQ_apply, Submodule.liftQ_apply]
simp only [liftLinear_single, one_smul]
@[ext]
theorem hom_ext (ψ : G →* H) {f g : DifferentialModule ψ →ₗ[GroupRing H] A}
(hfg : ∀ g', f (universalDifferential ψ g') = g (universalDifferential ψ g')) : f = gLinear maps out of the universal differential module are equal when they agree on all universal differentials.
Show Lean proof
by
apply Submodule.linearMap_qext _
apply Finsupp.lhom_ext
intro g' r
have hsingle : ((relationSubmodule ψ).mkQ (Finsupp.single g' r) : DifferentialModule ψ) =
r • universalDifferential ψ g' := by
rw [← Finsupp.smul_single_one]
rfl
change f ((relationSubmodule ψ).mkQ (Finsupp.single g' r)) =
g ((relationSubmodule ψ).mkQ (Finsupp.single g' r))
rw [hsingle]
simpa [map_smul] using congrArg (fun z => r • z) (hfg g')
theorem differentialModuleLift_unique
(ψ : G →* H) (δ : DifferentialHom ψ A)
(f : DifferentialModule ψ →ₗ[GroupRing H] A)
(hf : ∀ g, f (universalDifferential ψ g) = δ g) :
f = differentialModuleLift (A := A) ψ δThe universal lift is the unique linear map with prescribed values on universal differentials.
Show Lean proof
by
apply hom_ext ψ
intro g
rw [hf g, differentialModuleLift_d]
theorem existsUnique_differentialModuleLift
(ψ : G →* H) (δ : DifferentialHom ψ A) :
∃! f : DifferentialModule ψ →ₗ[GroupRing H] A,
∀ g, f (universalDifferential ψ g) = δ gExistence and uniqueness of the linear map representing a discrete Fox crossed differential.
Show Lean proof
by
refine ⟨differentialModuleLift (A := A) ψ δ, ?_, ?_⟩
· intro g
exact differentialModuleLift_d (A := A) ψ δ g
· intro f hf
exact differentialModuleLift_unique (A := A) ψ δ f hf
def differentialHomOfLinearMap
(ψ : G →* H) (f : DifferentialModule ψ →ₗ[GroupRing H] A) : DifferentialHom ψ A where
toFun g := f (universalDifferential ψ g)
map_mul' := by
intro g₁ g₂
change f (universalDifferential ψ (g₁ * g₂)) =
f (universalDifferential ψ g₁) +
(MonoidAlgebra.of ℤ H (ψ g₁) : GroupRing H) •
f (universalDifferential ψ g₂)
rw [universalDifferential_mul, map_add, map_smul]The crossed differential induced by a linear map out of the universal differential module.
@[simp]
theorem differentialHomOfLinearMap_apply
(ψ : G →* H) (f : DifferentialModule ψ →ₗ[GroupRing H] A) (g : G) :
differentialHomOfLinearMap (A := A) ψ f g = f (universalDifferential ψ g)The differential induced by a linear map evaluates that map on the universal differential.
Show Lean proof
rfl
def differentialHomEquivLinearMap (ψ : G →* H) :
DifferentialHom ψ A ≃ (DifferentialModule ψ →ₗ[GroupRing H] A) where
toFun δ := differentialModuleLift (A := A) ψ δ
invFun f := differentialHomOfLinearMap (A := A) ψ f
left_inv δ := by
apply CrossedHom.ext
intro g
exact differentialModuleLift_d (A := A) ψ δ g
right_inv f := by
apply hom_ext ψ
intro g
exact differentialModuleLift_d (A := A) ψ
(differentialHomOfLinearMap (A := A) ψ f) gDiscrete Fox crossed differentials \(G \to A\) with respect to \(\psi: G \to H\) are represented by \(\mathbb{Z}[H]\)-linear maps out of the universal differential module \(A_{\psi}\).
theorem differentialHomEquivLinearMap_eq_generic
(ψ : G →* H) (δ : DifferentialHom ψ A) :
differentialHomEquivLinearMap (A := A) ψ δ =
(crossedHomModuleEquivLinearMap
(A := A) (groupRingScalar ψ) δ).comp
(differentialModuleEquivCrossedDifferentialModule ψ).toLinearMapThe compatibility between the discrete representation theorem and the generic crossed-differential-module representation theorem.
Show Lean proof
by
apply hom_ext ψ
intro g
change
differentialModuleLift (A := A) ψ δ (universalDifferential ψ g) =
crossedHomModuleLift (A := A) (groupRingScalar ψ) δ
(universalCrossedDifferential (groupRingScalar ψ) g)
rw [differentialModuleLift_d, crossedHomModuleLift_universal]