Module

CrossedDifferentialModule.lean

Nyll.ProCGroups.FoxDifferential.Common.CrossedDifferentialModule
33 declarations indexed from sourceView source ↗

Fox differential: common — crossed differential module

The principal declarations in this module are:

  • CrossedDifferentialPreModule

The free \(R\)-module on the underlying set of a group \(G\).

  • crossedDifferentialRelationElement

The universal crossed-differential relation \(d(g_1g_2) = d(g_1) + \mathrm{coeff}(g_1) \cdot d(g_2)\) in the free pre-module.

  • crossedDifferentialRelationElement_mem

Every defining crossed-differential relation belongs to the relation submodule.

  • universalCrossedDifferential_mul

The universal crossed differential satisfies the crossed product rule.

Declarations

FoxDifferential.CrossedDifferentialPreModule

The free \(R\)-module on the underlying set of a group \(G\).

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
abbrev CrossedDifferentialPreModule (R G : Type*) [Ring R] : Type _
FoxDifferential.crossedDifferentialRelationElement

The universal crossed-differential relation \(d(g_1g_2) = d(g_1) + \mathrm{coeff}(g_1) \cdot d(g_2)\) in the free pre-module.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
def crossedDifferentialRelationElement (coeff : G →* R) (g₁ g₂ : G) :
    CrossedDifferentialPreModule R G
FoxDifferential.crossedDifferentialRelationSubmodule

The submodule generated by all universal crossed-differential relations.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
def crossedDifferentialRelationSubmodule (coeff : G →* R) :
    Submodule R (CrossedDifferentialPreModule R G)
FoxDifferential.CrossedDifferentialModule

The universal module representing crossed differentials with coefficient homomorphism \(\mathrm{coeff}:G\to R\), viewed multiplicatively.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
abbrev CrossedDifferentialModule (coeff : G →* R) : Type _
FoxDifferential.universalCrossedDifferential

The universal crossed differential d_coeff : G -> CrossedDifferentialModule coeff.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
def universalCrossedDifferential (coeff : G →* R) (g : G) :
    CrossedDifferentialModule coeff
FoxDifferential.crossedDifferentialRelationElement_mem

Every defining crossed-differential relation belongs to the relation submodule.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
theorem crossedDifferentialRelationElement_mem (coeff : G →* R) (g₁ g₂ : G) :
    crossedDifferentialRelationElement coeff g₁ g₂ ∈
      crossedDifferentialRelationSubmodule coeff
FoxDifferential.universalCrossedDifferential_mul

The universal crossed differential satisfies the crossed product rule.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
theorem universalCrossedDifferential_mul (coeff : G →* R) (g₁ g₂ : G) :
    universalCrossedDifferential coeff (g₁ * g₂) =
      universalCrossedDifferential coeff g₁ +
        coeff g₁ • universalCrossedDifferential coeff g₂
FoxDifferential.universalCrossedHom

The universal crossed differential \(d_{\mathrm{coeff}} : G \to \mathrm{CrossedDifferentialModule}(\mathrm{coeff})\).

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
def universalCrossedHom (coeff : G →* R) :
    ScalarCrossedHom coeff (CrossedDifferentialModule coeff) where
  toFun := universalCrossedDifferential coeff
  map_mul' := by
    intro g₁ g₂
    change universalCrossedDifferential coeff (g₁ * g₂) =
      universalCrossedDifferential coeff g₁ +
        coeff g₁ • universalCrossedDifferential coeff g₂
    exact universalCrossedDifferential_mul coeff g₁ g₂
FoxDifferential.universalCrossedDifferential_one

The universal crossed differential vanishes at the identity.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
theorem universalCrossedDifferential_one (coeff : G →* R) :
    universalCrossedDifferential coeff (1 : G) = 0
FoxDifferential.crossedDifferentialModuleLiftLinear

The linear extension of a map out of G to the free crossed-differential pre-module.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section UniversalProperty
variable {A : Type*} [AddCommGroup A] [Module R A]
def crossedDifferentialModuleLiftLinear (delta : G → A) :
    CrossedDifferentialPreModule R G →ₗ[R] A
FoxDifferential.crossedDifferentialModuleLiftLinear_single

The linear extension of a map evaluates on a single basis vector by scalar multiplication.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section UniversalProperty
variable {A : Type*} [AddCommGroup A] [Module R A]
omit [Group G] in
theorem crossedDifferentialModuleLiftLinear_single (delta : G → A) (g : G) (r : R) :
    crossedDifferentialModuleLiftLinear (R := R) delta (Finsupp.single g r) = r • delta g
FoxDifferential.crossedHomModuleLiftLinear_relationElement

A crossed differential kills each defining universal relation.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section UniversalProperty
variable {A : Type*} [AddCommGroup A] [Module R A]
theorem crossedHomModuleLiftLinear_relationElement
    (coeff : G →* R) (delta : ScalarCrossedHom coeff A) (g₁ g₂ : G) :
    crossedDifferentialModuleLiftLinear (R := R) delta
      (crossedDifferentialRelationElement coeff g₁ g₂) = 0
FoxDifferential.crossedHomRelationSubmodule_le_ker

The relation submodule is contained in the kernel of the linear extension of a crossed differential.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section UniversalProperty
variable {A : Type*} [AddCommGroup A] [Module R A]
theorem crossedHomRelationSubmodule_le_ker
    (coeff : G →* R) (delta : ScalarCrossedHom coeff A) :
    crossedDifferentialRelationSubmodule coeff ≤
      LinearMap.ker (crossedDifferentialModuleLiftLinear (R := R) delta)
FoxDifferential.crossedHomModuleLift

The universal linear map induced by a crossed differential.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section UniversalProperty
variable {A : Type*} [AddCommGroup A] [Module R A]
def crossedHomModuleLift
    (coeff : G →* R) (delta : ScalarCrossedHom coeff A) :
    CrossedDifferentialModule coeff →ₗ[R] A
FoxDifferential.crossedHomModuleLift_mkQ

The universal lift evaluated on a quotient representative is the finite linear combination of the prescribed crossed differential on that representative.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section UniversalProperty
variable {A : Type*} [AddCommGroup A] [Module R A]
theorem crossedHomModuleLift_mkQ
    (coeff : G →* R) (delta : ScalarCrossedHom coeff A)
    (x : CrossedDifferentialPreModule R G) :
    crossedHomModuleLift (A := A) coeff delta
        ((crossedDifferentialRelationSubmodule coeff).mkQ x) =
      crossedDifferentialModuleLiftLinear (R := R) delta x
FoxDifferential.crossedHomModuleLift_universal

The universal lift evaluates on \(d_{\mathrm{coeff}}(g)\) as the original crossed differential.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section UniversalProperty
variable {A : Type*} [AddCommGroup A] [Module R A]
theorem crossedHomModuleLift_universal
    (coeff : G →* R) (delta : ScalarCrossedHom coeff A) (g : G) :
    crossedHomModuleLift (A := A) coeff delta (universalCrossedDifferential coeff g) = delta g
FoxDifferential.crossedDifferentialModuleHom_ext

Linear maps out of the universal crossed-differential module are equal when they agree on all universal differentials.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section UniversalProperty
variable {A : Type*} [AddCommGroup A] [Module R A]
theorem crossedDifferentialModuleHom_ext
    (coeff : G →* R) {f h : CrossedDifferentialModule coeff →ₗ[R] A}
    (hfh : ∀ g, f (universalCrossedDifferential coeff g) =
      h (universalCrossedDifferential coeff g)) :
    f = h
FoxDifferential.crossedHomModuleLift_unique

The universal lift is the unique linear map with prescribed values on universal differentials.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section UniversalProperty
variable {A : Type*} [AddCommGroup A] [Module R A]
theorem crossedHomModuleLift_unique
    (coeff : G →* R) (delta : ScalarCrossedHom coeff A)
    (f : CrossedDifferentialModule coeff →ₗ[R] A)
    (hf : ∀ g, f (universalCrossedDifferential coeff g) = delta g) :
    f = crossedHomModuleLift (A := A) coeff delta
FoxDifferential.existsUnique_crossedHomModuleLift

Existence and uniqueness of the linear map representing a crossed differential.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section UniversalProperty
variable {A : Type*} [AddCommGroup A] [Module R A]
theorem existsUnique_crossedHomModuleLift
    (coeff : G →* R) (delta : ScalarCrossedHom coeff A) :
    ∃! f : CrossedDifferentialModule coeff →ₗ[R] A,
      ∀ g, f (universalCrossedDifferential coeff g) = delta g
FoxDifferential.crossedHomOfModuleLinearMap

The crossed differential induced by a linear map out of the universal module.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section UniversalProperty
variable {A : Type*} [AddCommGroup A] [Module R A]
def crossedHomOfModuleLinearMap
    (coeff : G →* R) (f : CrossedDifferentialModule coeff →ₗ[R] A) :
    ScalarCrossedHom coeff A where
  toFun g := f (universalCrossedDifferential coeff g)
  map_mul' := by
    intro g₁ g₂
    change f (universalCrossedDifferential coeff (g₁ * g₂)) =
      f (universalCrossedDifferential coeff g₁) +
        coeff g₁ • f (universalCrossedDifferential coeff g₂)
    rw [universalCrossedDifferential_mul, map_add, map_smul]
FoxDifferential.crossedHomOfModuleLinearMap_apply

The crossed homomorphism induced by a linear map evaluates the map on the universal differential.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section UniversalProperty
variable {A : Type*} [AddCommGroup A] [Module R A]
theorem crossedHomOfModuleLinearMap_apply
    (coeff : G →* R) (f : CrossedDifferentialModule coeff →ₗ[R] A) (g : G) :
    crossedHomOfModuleLinearMap (A := A) coeff f g =
      f (universalCrossedDifferential coeff g)
FoxDifferential.crossedHomModuleEquivLinearMap

Crossed differentials \(G \to A\) with coefficient homomorphism \(\mathrm{coeff}:G \to R\) are represented by \(R\)-linear maps out of the universal module \(\mathrm{CrossedDifferentialModule}\,\mathrm{coeff}\).

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section UniversalProperty
variable {A : Type*} [AddCommGroup A] [Module R A]
def crossedHomModuleEquivLinearMap (coeff : G →* R) :
    ScalarCrossedHom coeff A ≃ (CrossedDifferentialModule coeff →ₗ[R] A) where
  toFun delta := crossedHomModuleLift (A := A) coeff delta
  invFun f := crossedHomOfModuleLinearMap (A := A) coeff f
  left_inv delta := by
    apply CrossedHom.ext
    intro g
    change crossedHomModuleLift (A := A) coeff delta
      (universalCrossedDifferential coeff g) = delta g
    exact crossedHomModuleLift_universal (A := A) coeff delta g
  right_inv f := by
    apply crossedDifferentialModuleHom_ext coeff
    intro g
    change crossedHomModuleLift (A := A) coeff
      (crossedHomOfModuleLinearMap (A := A) coeff f)
        (universalCrossedDifferential coeff g) =
      f (universalCrossedDifferential coeff g)
    exact crossedHomModuleLift_universal (A := A) coeff
      (crossedHomOfModuleLinearMap (A := A) coeff f) g
FoxDifferential.monoidAlgebraToIdentityCrossedDifferentialModule

The S-linear map from a group algebra to the identity crossed-differential module sending \([g]\) to the universal differential d g.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section MonoidAlgebraIdentityBoundary
variable {S : Type*} [CommRing S]
def monoidAlgebraToIdentityCrossedDifferentialModule :
    MonoidAlgebra S G →ₗ[S]
      CrossedDifferentialModule (MonoidAlgebra.of S G)
FoxDifferential.monoidAlgebraToIdentityCrossedDifferentialModule_single

A group-algebra basis term maps to its coefficient times the corresponding universal differential.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section MonoidAlgebraIdentityBoundary
variable {S : Type*} [CommRing S]
theorem monoidAlgebraToIdentityCrossedDifferentialModule_single (g : G) (a : S) :
    monoidAlgebraToIdentityCrossedDifferentialModule
        (MonoidAlgebra.single g a : MonoidAlgebra S G) =
      a • universalCrossedDifferential (MonoidAlgebra.of S G) g
FoxDifferential.monoidAlgebraToIdentityCrossedDifferentialModule_mul_sub_one

The linear map from the group algebra to the identity crossed-differential module sends \(a([g]-1)\) to \(a\) acting on the universal differential of \(g\).

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section MonoidAlgebraIdentityBoundary
variable {S : Type*} [CommRing S]
theorem monoidAlgebraToIdentityCrossedDifferentialModule_mul_sub_one
    (a : MonoidAlgebra S G) (g : G) :
    monoidAlgebraToIdentityCrossedDifferentialModule
        (a * (MonoidAlgebra.of S G g - 1)) =
      a • universalCrossedDifferential (MonoidAlgebra.of S G) g
FoxDifferential.identityGroupAlgebraCrossedHom

The group-algebra boundary g ↦ [g] - 1, bundled as a scalar crossed homomorphism.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section MonoidAlgebraIdentityBoundary
variable {S : Type*} [CommRing S]
def identityGroupAlgebraCrossedHom :
    ScalarCrossedHom (MonoidAlgebra.of S G) (MonoidAlgebra S G) where
  toFun g := MonoidAlgebra.of S G g - 1
  map_mul' := by
    intro g h
    change MonoidAlgebra.of S G (g * h) - 1 =
      (MonoidAlgebra.of S G g - 1) +
        MonoidAlgebra.of S G g • (MonoidAlgebra.of S G h - 1)
    simp only [map_mul, MonoidAlgebra.of_apply,
      MonoidAlgebra.single_mul_single, mul_one, sub_eq_add_neg, smul_eq_mul, mul_add,
      mul_neg, add_comm, add_assoc, neg_add_cancel_left]
FoxDifferential.identityGroupAlgebraCrossedHom_apply

The identity-coefficient crossed homomorphism sends a group element to its group-like term minus one.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section MonoidAlgebraIdentityBoundary
variable {S : Type*} [CommRing S]
theorem identityGroupAlgebraCrossedHom_apply (g : G) :
    identityGroupAlgebraCrossedHom (S := S) (G := G) g =
      MonoidAlgebra.of S G g - 1
FoxDifferential.identityCrossedDifferentialBoundary

The identity crossed-differential boundary sends \(d g\) to \([g] - 1\) over a group algebra.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section MonoidAlgebraIdentityBoundary
variable {S : Type*} [CommRing S]
def identityCrossedDifferentialBoundary :
    CrossedDifferentialModule (MonoidAlgebra.of S G) →ₗ[MonoidAlgebra S G]
      MonoidAlgebra S G
FoxDifferential.identityCrossedDifferentialBoundary_universal

The identity crossed-differential boundary sends the universal differential at \(g\) to the group-algebra element \([g]-1\).

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section MonoidAlgebraIdentityBoundary
variable {S : Type*} [CommRing S]
theorem identityCrossedDifferentialBoundary_universal (g : G) :
    identityCrossedDifferentialBoundary
        (universalCrossedDifferential (MonoidAlgebra.of S G) g) =
      MonoidAlgebra.of S G g - 1
FoxDifferential.monoidAlgebraToIdentityCrossedDifferentialModule_comp_identityBoundary_mkQ

Composing the identity-boundary map with the monoid-algebra comparison has the stated value on quotient generators.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section MonoidAlgebraIdentityBoundary
variable {S : Type*} [CommRing S]
theorem monoidAlgebraToIdentityCrossedDifferentialModule_comp_identityBoundary_mkQ
    (x : CrossedDifferentialPreModule (MonoidAlgebra S G) G) :
    monoidAlgebraToIdentityCrossedDifferentialModule
        (crossedDifferentialModuleLiftLinear
          (R := MonoidAlgebra S G)
          (fun g : G => MonoidAlgebra.of S G g - 1) x) =
      (crossedDifferentialRelationSubmodule (MonoidAlgebra.of S G)).mkQ x := by
  refine Finsupp.induction_linear x ?zero ?add ?single
  · simp only [crossedDifferentialModuleLiftLinear, MonoidAlgebra.of_apply, map_zero]
  · intro x y hx hy
    rw [map_add, map_add]
    exact congrArg₂ (· + ·)
      (by simpa [MonoidAlgebra.of_apply] using hx)
      (by simpa [MonoidAlgebra.of_apply] using hy)
  · intro g a
    rw [crossedDifferentialModuleLiftLinear_single]
    change
      monoidAlgebraToIdentityCrossedDifferentialModule
          (a * (MonoidAlgebra.of S G g - 1)) =
        (crossedDifferentialRelationSubmodule (MonoidAlgebra.of S G)).mkQ
          (Finsupp.single g a)
    rw [monoidAlgebraToIdentityCrossedDifferentialModule_mul_sub_one]
    rw [← Finsupp.smul_single_one]
    exact
      (Submodule.Quotient.mk_smul
        (p := crossedDifferentialRelationSubmodule (MonoidAlgebra.of S G))
        (r := a) (x := Finsupp.single g 1)).symm
FoxDifferential.idCrossedDiffBoundary_monoidAlgebraToModule

The boundary of the additive lift \(\sum a_g [g] \mapsto \sum a_g d g\) is the augmentation-zero part of the group-algebra element.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section MonoidAlgebraIdentityBoundary
variable {S : Type*} [CommRing S]
theorem idCrossedDiffBoundary_monoidAlgebraToModule
    (a : MonoidAlgebra S G) :
    identityCrossedDifferentialBoundary
        (monoidAlgebraToIdentityCrossedDifferentialModule (S := S) (G := G) a) =
      a -
        MonoidAlgebra.single (1 : G)
          ((MonoidAlgebra.lift S S G (1 : G →* S)) a)
FoxDifferential.idCrossedDiffBoundary_monoidAlgebraToModule_of_augmentation_eq_zero

On the augmentation ideal, the additive lift \(\sum a_g [g] \mapsto \sum a_g d g\) is a right inverse to the identity crossed-differential boundary.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section MonoidAlgebraIdentityBoundary
variable {S : Type*} [CommRing S]
theorem idCrossedDiffBoundary_monoidAlgebraToModule_of_augmentation_eq_zero
    {a : MonoidAlgebra S G}
    (ha : (MonoidAlgebra.lift S S G (1 : G →* S)) a = 0) :
    identityCrossedDifferentialBoundary
        (monoidAlgebraToIdentityCrossedDifferentialModule (S := S) (G := G) a) = a
FoxDifferential.identityCrossedDifferentialBoundary_injective

For the identity coefficient map into a group algebra, the boundary map sending \(d g\) to \([g]

  • 1\) is injective.
Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace FoxDifferential
noncomputable section
variable {R G : Type*} [Ring R] [Group G]
section MonoidAlgebraIdentityBoundary
variable {S : Type*} [CommRing S]
theorem identityCrossedDifferentialBoundary_injective :
    Function.Injective (identityCrossedDifferentialBoundary (S := S) (G := G))