FoxDifferential.Common.Jacobian

10 Theorem | 3 Definition

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

import
  • Mathlib.Algebra.Module.LinearMap.Basic
  • Mathlib.Data.Matrix.Mul
Imported by

Declarations

def foxJacobianMatrix (jac : X → Y → R) : Matrix X Y R :=
  jac

A Fox-Jacobian family packaged as a finite matrix.

theorem foxJacobianMatrix_apply (jac : X → Y → R) (x : X) (y : Y) :
    foxJacobianMatrix jac x y = jac x y

The packaged Fox-Jacobian matrix entry is the corresponding Jacobian family entry.

Show proof
def foxJacobianId : X → X → R := fun x => Pi.single x (1 : R)

The identity Fox-Jacobian family with Kronecker-delta entries.

theorem foxJacobianId_apply (x y : X) :
    foxJacobianId (R := R) (X := X) x y = (Pi.single x (1 : R) : X → R) y

The identity Fox-Jacobian evaluates to the Kronecker-delta coefficient at the chosen pair of indices.

Show proof
theorem foxJacobianMatrix_id :
    foxJacobianMatrix (R := R) (X := X) (Y := X) (foxJacobianId (R := R) (X := X)) =
      (1 : Matrix X X R)

The identity Fox-Jacobian family is the identity matrix.

Show proof
def foxJacobianLinearMap [Fintype X] (jac : X → Y → R) :
    (X → R) →ₗ[R] (Y → R) where
  toFun v := fun y => ∑ x : X, v x * jac x y
  map_add' v w := by
    funext y
    simp only [Pi.add_apply, add_mul, Finset.sum_add_distrib]
  map_smul' a v := by
    funext y
    simp only [Pi.smul_apply]
    change (∑ x : X, (a * v x) * jac x y) = a * ∑ x : X, v x * jac x y
    simp only [mul_assoc, Finset.mul_sum]

A Fox-Jacobian family determines the corresponding finite linear map between free coefficient modules.

theorem foxJacobianLinearMap_apply
    [Fintype X]
    (jac : X → Y → R) (v : X → R) (y : Y) :
    foxJacobianLinearMap jac v y = ∑ x : X, v x * jac x y

The linear map associated with a Fox-Jacobian family is evaluated by the finite matrix coefficient formula.

Show proof
theorem foxJacobianLinearMap_eq_vecMul
    [Fintype X]
    (jac : X → Y → R) (v : X → R) :
    foxJacobianLinearMap jac v = Matrix.vecMul v (foxJacobianMatrix jac)

The Fox-Jacobian linear map is row-vector multiplication by the corresponding matrix.

Show proof
theorem foxJacobianLinearMap_id [Fintype X] [DecidableEq X] :
    foxJacobianLinearMap (R := R) (X := X) (Y := X) (foxJacobianId (R := R) (X := X)) =
      (LinearMap.id : (X → R) →ₗ[R] (X → R))

The identity Fox-Jacobian induces the identity linear map on the finite free coefficient module.

Show proof
theorem foxJacobianLinearMap_comp
    [Fintype X] [Fintype Y]
    (jacXY : X → Y → R) (jacYZ : Y → Z → R) :
    (foxJacobianLinearMap jacYZ).comp (foxJacobianLinearMap jacXY) =
      foxJacobianLinearMap (fun x z => ∑ y : Y, jacXY x y * jacYZ y z)

Composition of finite Fox-Jacobian linear maps is given by multiplication of the corresponding Jacobian matrices.

Show proof
theorem foxJacobianMatrix_comp
    [Fintype Y]
    (jacXY : X → Y → R) (jacYZ : Y → Z → R) :
    foxJacobianMatrix (R := R) (X := X) (Y := Z)
        (fun x z => ∑ y : Y, jacXY x y * jacYZ y z) =
      foxJacobianMatrix (R := R) (X := X) (Y := Y) jacXY *
        foxJacobianMatrix (R := R) (X := Y) (Y := Z) jacYZ

Composition of Fox-Jacobian matrices is finite matrix multiplication.

Show proof
theorem foxJacobianLinearMap_single [Fintype X] [DecidableEq X] (jac : X → Y → R) (x : X) :
    foxJacobianLinearMap jac (Pi.single x (1 : R)) = jac x

A Fox-Jacobian linear map sends a standard source coordinate to the corresponding Jacobian row.

Show proof
theorem linearMap_ext_pi_single
    [Finite X] [DecidableEq X]
    {L₁ L₂ : (X → R) →ₗ[R] M}
    (h : ∀ x : X, L₁ (Pi.single x (1 : R)) = L₂ (Pi.single x (1 : R))) :
    L₁ = L₂

Linear maps out of finite coordinate vectors are determined by their values on the standard coordinate vectors.

Show proof