FoxDifferential.Common.CrossedDifferential

20 Theorem | 2 Definition

This module develops Fox differentials and completed Fox coordinates for free, profinite, and pro-\(C\) group constructions.

import
  • Mathlib.Algebra.Group.Commutator
  • Mathlib.Algebra.Group.Subgroup.Lattice
  • Mathlib.Algebra.Module.BigOperators
  • Mathlib.Algebra.Module.LinearMap.Basic
Imported by

Declarations

def IsCrossedDifferential
    {R G A : Type*} [Semiring R] [Group G] [AddCommMonoid A] [Module R A]
    (coeff : G →* R) (delta : G → A) : Prop :=
  ∀ g h, delta (g * h) = delta g + coeff g • delta h

A crossed differential with coefficient homomorphism \(\mathrm{coeff}:G\to R\), viewed multiplicatively. The rule is the Fox Leibniz rule \(\delta(gh)=\delta(g)+\mathrm{coeff}(g)\,\delta(h)\).

theorem zero :
    IsCrossedDifferential coeff (fun _ : G => (0 : A))

The zero map is a crossed differential.

Show proof
theorem add {delta epsilon : G → A}
    (hdelta : IsCrossedDifferential coeff delta)
    (hepsilon : IsCrossedDifferential coeff epsilon) :
    IsCrossedDifferential coeff (fun g => delta g + epsilon g)

Crossed differentials with the same coefficient homomorphism are closed under addition.

Show proof
theorem neg (hdelta : IsCrossedDifferential coeff delta) :
    IsCrossedDifferential coeff (fun g => -delta g)

Crossed differentials are closed under negation.

Show proof
theorem sub {delta epsilon : G → A}
    (hdelta : IsCrossedDifferential coeff delta)
    (hepsilon : IsCrossedDifferential coeff epsilon) :
    IsCrossedDifferential coeff (fun g => delta g - epsilon g)

Crossed differentials with the same coefficient homomorphism are closed under subtraction.

Show proof
theorem map_linear {B : Type*} [AddCommGroup B] [Module R B]
    (hdelta : IsCrossedDifferential coeff delta) (f : A →ₗ[R] B) :
    IsCrossedDifferential coeff (fun g => f (delta g))

A linear map sends crossed differentials to crossed differentials.

Show proof
theorem comp_monoidHom {K : Type*} [Group K]
    (hdelta : IsCrossedDifferential coeff delta) (φ : K →* G) :
    IsCrossedDifferential (coeff.comp φ) (fun k : K => delta (φ k))

Pulling a crossed differential back along a group homomorphism is a crossed differential.

Show proof
def restrictTrivialSubgroupAddMonoidHom
    (hdelta : IsCrossedDifferential coeff delta) (N : Subgroup G)
    (hN : ∀ n : N, coeff n = 1) :
    Additive N →+ A where
  toFun x := delta ((Additive.toMul x : N) : G)
  map_zero' := by
    change delta (1 : G) = 0
    have h := hdelta 1 1
    rw [map_one, one_smul] at h
    have h' := congrArg (fun z : A => z - delta 1) h
    have hzero : 0 = delta 1 := by
      simpa [sub_eq_add_neg, add_assoc, add_left_comm, add_comm] using h'
    simpa using hzero.symm
  map_add' x y := by
    change delta (((Additive.toMul x : N) * (Additive.toMul y : N) : N) : G) =
      delta ((Additive.toMul x : N) : G) + delta ((Additive.toMul y : N) : G)
    have h :=
      hdelta ((Additive.toMul x : N) : G) ((Additive.toMul y : N) : G)
    simpa [hN (Additive.toMul x)] using h

@[simp]

Restricting a crossed differential to any subgroup on which the coefficient homomorphism is trivial gives an ordinary additive homomorphism.

theorem restrictTrivialSubgroupAddMonoidHom_apply
    (hdelta : IsCrossedDifferential coeff delta) (N : Subgroup G)
    (hN : ∀ n : N, coeff n = 1) (g : N) :
    restrictTrivialSubgroupAddMonoidHom hdelta N hN (Additive.ofMul g) = delta g

The Fox differential coordinate map is evaluated by the generator formula and the crossed-derivation rule.

Show proof
theorem one (hdelta : IsCrossedDifferential coeff delta) :
    delta 1 = 0

A crossed differential vanishes at the identity.

Show proof
theorem inv (hdelta : IsCrossedDifferential coeff delta) (g : G) :
    delta g⁻¹ = -(coeff g⁻¹ • delta g)

The inverse rule for a crossed differential.

Show proof
theorem mul (hdelta : IsCrossedDifferential coeff delta) (g h : G) :
    delta (g * h) = delta g + coeff g • delta h

Product rule, restated as a theorem for namespaced rewriting.

Show proof
theorem inv_mul (hdelta : IsCrossedDifferential coeff delta) (g h : G) :
    delta (g⁻¹ * h) =
      -(coeff g⁻¹ • delta g) + coeff g⁻¹ • delta h

Formula for multiplying by an inverse on the left.

Show proof
theorem mul_inv (hdelta : IsCrossedDifferential coeff delta) (g h : G) :
    delta (g * h⁻¹) =
      delta g - coeff (g * h⁻¹) • delta h

Formula for multiplying by an inverse on the right.

Show proof
theorem div (hdelta : IsCrossedDifferential coeff delta) (g h : G) :
    delta (g / h) =
      delta g - coeff (g / h) • delta h

Division rule for a crossed differential.

Show proof
theorem conj (hdelta : IsCrossedDifferential coeff delta) (g h : G) :
    delta (g * h * g⁻¹) =
      delta g + coeff g • delta h - coeff (g * h * g⁻¹) • delta g

Conjugation rule for a crossed differential.

Show proof
theorem commutator (hdelta : IsCrossedDifferential coeff delta) (g h : G) :
    delta ⁅g, h⁆ =
      delta g + coeff g • delta h -
        coeff (g * h * g⁻¹) • delta g -
        coeff ⁅g, h⁆ • delta h

Commutator rule for a crossed differential.

Show proof
theorem eqOn_closure {delta epsilon : G → A}
    (hdelta : IsCrossedDifferential coeff delta)
    (hepsilon : IsCrossedDifferential coeff epsilon)
    {s : Set G} (hs : Set.EqOn delta epsilon s) :
    Set.EqOn delta epsilon ((Subgroup.closure s : Subgroup G) : Set G)

Two crossed differentials with the same coefficients that agree on a set agree on the abstract subgroup generated by that set.

Show proof
theorem eq_of_closure_eq_top {delta epsilon : G → A}
    (hdelta : IsCrossedDifferential coeff delta)
    (hepsilon : IsCrossedDifferential coeff epsilon)
    {s : Set G} (hsgen : Subgroup.closure s = ⊤)
    (hs : Set.EqOn delta epsilon s) :
    delta = epsilon

Crossed differentials with the same coefficients are determined by a generating set.

Show proof
theorem pow (hdelta : IsCrossedDifferential coeff delta) (g : G) (n : ℕ) :
    delta (g ^ n) =
      (Finset.range n).sum (fun k => coeff (g ^ k) • delta g)

Positive power rule for a crossed differential.

Show proof
theorem pow_smul_sum (hdelta : IsCrossedDifferential coeff delta) (g : G) (n : ℕ) :
    delta (g ^ n) =
      ((Finset.range n).sum (fun k => coeff (g ^ k))) • delta g

Positive power rule with the coefficient sum factored out.

Show proof
theorem inv_pow (hdelta : IsCrossedDifferential coeff delta) (g : G) (n : ℕ) :
    delta (g⁻¹ ^ n) =
      (Finset.range n).sum (fun k =>
        coeff (g⁻¹ ^ k) • (-(coeff g⁻¹ • delta g)))

Positive power rule applied to the inverse element.

Show proof