linear_algebra.clifford_algebra.contractionMathlib.LinearAlgebra.CliffordAlgebra.Contraction

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -370,7 +370,8 @@ theorem changeForm_ι (m : M) : changeForm h (ι _ m) = ι _ m :=
 
 #print CliffordAlgebra.changeForm_ι_mul /-
 theorem changeForm_ι_mul (m : M) (x : CliffordAlgebra Q) :
-    changeForm h (ι _ m * x) = ι _ m * changeForm h x - BilinForm.toLin B m⌋changeForm h x :=
+    changeForm h (ι _ m * x) =
+      ι _ m * changeForm h x - LinearMap.BilinForm.toLin B m⌋changeForm h x :=
   (foldr_mul _ _ _ _ _ _).trans <| by rw [foldr_ι]; rfl
 #align clifford_algebra.change_form_ι_mul CliffordAlgebra.changeForm_ι_mul
 -/
Diff
@@ -313,7 +313,7 @@ def changeForm (h : B.toQuadraticForm = Q' - Q) : CliffordAlgebra Q →ₗ[R] Cl
     (fun m x =>
       (changeFormAux_changeFormAux Q' B m x).trans <|
         by
-        dsimp [← BilinForm.toQuadraticForm_apply]
+        dsimp [← LinearMap.BilinForm.toQuadraticForm_apply]
         rw [h, QuadraticForm.sub_apply, sub_sub_cancel])
     1
 #align clifford_algebra.change_form CliffordAlgebra.changeForm
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2022 Eric Wieser. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
 -/
-import Mathbin.LinearAlgebra.ExteriorAlgebra.Basic
-import Mathbin.LinearAlgebra.CliffordAlgebra.Fold
-import Mathbin.LinearAlgebra.CliffordAlgebra.Conjugation
+import LinearAlgebra.ExteriorAlgebra.Basic
+import LinearAlgebra.CliffordAlgebra.Fold
+import LinearAlgebra.CliffordAlgebra.Conjugation
 
 #align_import linear_algebra.clifford_algebra.contraction from "leanprover-community/mathlib"@"1a51edf13debfcbe223fa06b1cb353b9ed9751cc"
 
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2022 Eric Wieser. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
-
-! This file was ported from Lean 3 source module linear_algebra.clifford_algebra.contraction
-! leanprover-community/mathlib commit 1a51edf13debfcbe223fa06b1cb353b9ed9751cc
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.LinearAlgebra.ExteriorAlgebra.Basic
 import Mathbin.LinearAlgebra.CliffordAlgebra.Fold
 import Mathbin.LinearAlgebra.CliffordAlgebra.Conjugation
 
+#align_import linear_algebra.clifford_algebra.contraction from "leanprover-community/mathlib"@"1a51edf13debfcbe223fa06b1cb353b9ed9751cc"
+
 /-!
 # Contraction in Clifford Algebras
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
 
 ! This file was ported from Lean 3 source module linear_algebra.clifford_algebra.contraction
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
+! leanprover-community/mathlib commit 1a51edf13debfcbe223fa06b1cb353b9ed9751cc
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.LinearAlgebra.CliffordAlgebra.Conjugation
 /-!
 # Contraction in Clifford Algebras
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 This file contains some of the results from [grinberg_clifford_2016][].
 The key result is `clifford_algebra.equiv_exterior`.
 
Diff
@@ -59,6 +59,7 @@ section contractLeft
 
 variable (d d' : Module.Dual R M)
 
+#print CliffordAlgebra.contractLeftAux /-
 /-- Auxiliary construction for `clifford_algebra.contract_left` -/
 @[simps]
 def contractLeftAux (d : Module.Dual R M) :
@@ -67,7 +68,9 @@ def contractLeftAux (d : Module.Dual R M) :
   d.smul_right (LinearMap.fst _ (CliffordAlgebra Q) (CliffordAlgebra Q)) -
     v_mul.compl₂ (LinearMap.snd _ (CliffordAlgebra Q) _)
 #align clifford_algebra.contract_left_aux CliffordAlgebra.contractLeftAux
+-/
 
+#print CliffordAlgebra.contractLeftAux_contractLeftAux /-
 theorem contractLeftAux_contractLeftAux (v : M) (x : CliffordAlgebra Q) (fx : CliffordAlgebra Q) :
     contractLeftAux Q d v (ι Q v * x, contractLeftAux Q d v (x, fx)) = Q v • fx :=
   by
@@ -75,9 +78,11 @@ theorem contractLeftAux_contractLeftAux (v : M) (x : CliffordAlgebra Q) (fx : Cl
   rw [mul_sub, ← mul_assoc, ι_sq_scalar, ← Algebra.smul_def, ← sub_add, mul_smul_comm, sub_self,
     zero_add]
 #align clifford_algebra.contract_left_aux_contract_left_aux CliffordAlgebra.contractLeftAux_contractLeftAux
+-/
 
 variable {Q}
 
+#print CliffordAlgebra.contractLeft /-
 /-- Contract an element of the clifford algebra with an element `d : module.dual R M` from the left.
 
 Note that $v ⌋ x$ is spelt `contract_left (Q.associated v) x`.
@@ -105,7 +110,9 @@ def contractLeft : Module.Dual R M →ₗ[R] CliffordAlgebra Q →ₗ[R] Cliffor
         dsimp only [contract_left_aux_apply_apply]
         rw [LinearMap.smul_apply, smul_assoc, mul_smul_comm, smul_sub]
 #align clifford_algebra.contract_left CliffordAlgebra.contractLeft
+-/
 
+#print CliffordAlgebra.contractRight /-
 /-- Contract an element of the clifford algebra with an element `d : module.dual R M` from the
 right.
 
@@ -115,85 +122,113 @@ This includes [grinberg_clifford_2016][] Theorem 16.75 -/
 def contractRight : CliffordAlgebra Q →ₗ[R] Module.Dual R M →ₗ[R] CliffordAlgebra Q :=
   LinearMap.flip (LinearMap.compl₂ (LinearMap.compr₂ contractLeft reverse) reverse)
 #align clifford_algebra.contract_right CliffordAlgebra.contractRight
+-/
 
+#print CliffordAlgebra.contractRight_eq /-
 theorem contractRight_eq (x : CliffordAlgebra Q) :
     contractRight x d = reverse (contractLeft d <| reverse x) :=
   rfl
 #align clifford_algebra.contract_right_eq CliffordAlgebra.contractRight_eq
+-/
 
 local infixl:70 "⌋" => contractLeft
 
 local infixl:70 "⌊" => contractRight
 
+#print CliffordAlgebra.contractLeft_ι_mul /-
 /-- This is [grinberg_clifford_2016][] Theorem 6  -/
 theorem contractLeft_ι_mul (a : M) (b : CliffordAlgebra Q) :
     d⌋(ι Q a * b) = d a • b - ι Q a * (d⌋b) :=
   foldr'_ι_mul _ _ _ _ _ _
 #align clifford_algebra.contract_left_ι_mul CliffordAlgebra.contractLeft_ι_mul
+-/
 
+#print CliffordAlgebra.contractRight_mul_ι /-
 /-- This is [grinberg_clifford_2016][] Theorem 12  -/
 theorem contractRight_mul_ι (a : M) (b : CliffordAlgebra Q) : b * ι Q a⌊d = d a • b - b⌊d * ι Q a :=
   by
   rw [contract_right_eq, reverse.map_mul, reverse_ι, contract_left_ι_mul, map_sub, map_smul,
     reverse_reverse, reverse.map_mul, reverse_ι, contract_right_eq]
 #align clifford_algebra.contract_right_mul_ι CliffordAlgebra.contractRight_mul_ι
+-/
 
+#print CliffordAlgebra.contractLeft_algebraMap_mul /-
 theorem contractLeft_algebraMap_mul (r : R) (b : CliffordAlgebra Q) :
     d⌋(algebraMap _ _ r * b) = algebraMap _ _ r * (d⌋b) := by
   rw [← Algebra.smul_def, map_smul, Algebra.smul_def]
 #align clifford_algebra.contract_left_algebra_map_mul CliffordAlgebra.contractLeft_algebraMap_mul
+-/
 
+#print CliffordAlgebra.contractLeft_mul_algebraMap /-
 theorem contractLeft_mul_algebraMap (a : CliffordAlgebra Q) (r : R) :
     d⌋(a * algebraMap _ _ r) = d⌋a * algebraMap _ _ r := by
   rw [← Algebra.commutes, contract_left_algebra_map_mul, Algebra.commutes]
 #align clifford_algebra.contract_left_mul_algebra_map CliffordAlgebra.contractLeft_mul_algebraMap
+-/
 
+#print CliffordAlgebra.contractRight_algebraMap_mul /-
 theorem contractRight_algebraMap_mul (r : R) (b : CliffordAlgebra Q) :
     algebraMap _ _ r * b⌊d = algebraMap _ _ r * (b⌊d) := by
   rw [← Algebra.smul_def, LinearMap.map_smul₂, Algebra.smul_def]
 #align clifford_algebra.contract_right_algebra_map_mul CliffordAlgebra.contractRight_algebraMap_mul
+-/
 
+#print CliffordAlgebra.contractRight_mul_algebraMap /-
 theorem contractRight_mul_algebraMap (a : CliffordAlgebra Q) (r : R) :
     a * algebraMap _ _ r⌊d = a⌊d * algebraMap _ _ r := by
   rw [← Algebra.commutes, contract_right_algebra_map_mul, Algebra.commutes]
 #align clifford_algebra.contract_right_mul_algebra_map CliffordAlgebra.contractRight_mul_algebraMap
+-/
 
 variable (Q)
 
+#print CliffordAlgebra.contractLeft_ι /-
 @[simp]
 theorem contractLeft_ι (x : M) : d⌋ι Q x = algebraMap R _ (d x) :=
   (foldr'_ι _ _ _ _ _).trans <| by
     simp_rw [contract_left_aux_apply_apply, MulZeroClass.mul_zero, sub_zero,
       Algebra.algebraMap_eq_smul_one]
 #align clifford_algebra.contract_left_ι CliffordAlgebra.contractLeft_ι
+-/
 
+#print CliffordAlgebra.contractRight_ι /-
 @[simp]
 theorem contractRight_ι (x : M) : ι Q x⌊d = algebraMap R _ (d x) := by
   rw [contract_right_eq, reverse_ι, contract_left_ι, reverse.commutes]
 #align clifford_algebra.contract_right_ι CliffordAlgebra.contractRight_ι
+-/
 
+#print CliffordAlgebra.contractLeft_algebraMap /-
 @[simp]
 theorem contractLeft_algebraMap (r : R) : d⌋algebraMap R (CliffordAlgebra Q) r = 0 :=
   (foldr'_algebraMap _ _ _ _ _).trans <| smul_zero _
 #align clifford_algebra.contract_left_algebra_map CliffordAlgebra.contractLeft_algebraMap
+-/
 
+#print CliffordAlgebra.contractRight_algebraMap /-
 @[simp]
 theorem contractRight_algebraMap (r : R) : algebraMap R (CliffordAlgebra Q) r⌊d = 0 := by
   rw [contract_right_eq, reverse.commutes, contract_left_algebra_map, map_zero]
 #align clifford_algebra.contract_right_algebra_map CliffordAlgebra.contractRight_algebraMap
+-/
 
+#print CliffordAlgebra.contractLeft_one /-
 @[simp]
 theorem contractLeft_one : d⌋(1 : CliffordAlgebra Q) = 0 := by
   simpa only [map_one] using contract_left_algebra_map Q d 1
 #align clifford_algebra.contract_left_one CliffordAlgebra.contractLeft_one
+-/
 
+#print CliffordAlgebra.contractRight_one /-
 @[simp]
 theorem contractRight_one : (1 : CliffordAlgebra Q)⌊d = 0 := by
   simpa only [map_one] using contract_right_algebra_map Q d 1
 #align clifford_algebra.contract_right_one CliffordAlgebra.contractRight_one
+-/
 
 variable {Q}
 
+#print CliffordAlgebra.contractLeft_contractLeft /-
 /-- This is [grinberg_clifford_2016][] Theorem 7 -/
 theorem contractLeft_contractLeft (x : CliffordAlgebra Q) : d⌋(d⌋x) = 0 :=
   by
@@ -204,12 +239,16 @@ theorem contractLeft_contractLeft (x : CliffordAlgebra Q) : d⌋(d⌋x) = 0 :=
     rw [contract_left_ι_mul, map_sub, contract_left_ι_mul, hx, LinearMap.map_smul,
       MulZeroClass.mul_zero, sub_zero, sub_self]
 #align clifford_algebra.contract_left_contract_left CliffordAlgebra.contractLeft_contractLeft
+-/
 
+#print CliffordAlgebra.contractRight_contractRight /-
 /-- This is [grinberg_clifford_2016][] Theorem 13 -/
 theorem contractRight_contractRight (x : CliffordAlgebra Q) : x⌊d⌊d = 0 := by
   rw [contract_right_eq, contract_right_eq, reverse_reverse, contract_left_contract_left, map_zero]
 #align clifford_algebra.contract_right_contract_right CliffordAlgebra.contractRight_contractRight
+-/
 
+#print CliffordAlgebra.contractLeft_comm /-
 /-- This is [grinberg_clifford_2016][] Theorem 8 -/
 theorem contractLeft_comm (x : CliffordAlgebra Q) : d⌋(d'⌋x) = -(d'⌋(d⌋x)) :=
   by
@@ -219,12 +258,15 @@ theorem contractLeft_comm (x : CliffordAlgebra Q) : d⌋(d'⌋x) = -(d'⌋(d⌋x
   · simp only [contract_left_ι_mul, map_sub, LinearMap.map_smul]
     rw [neg_sub, sub_sub_eq_add_sub, hx, mul_neg, ← sub_eq_add_neg]
 #align clifford_algebra.contract_left_comm CliffordAlgebra.contractLeft_comm
+-/
 
+#print CliffordAlgebra.contractRight_comm /-
 /-- This is [grinberg_clifford_2016][] Theorem 14 -/
 theorem contractRight_comm (x : CliffordAlgebra Q) : x⌊d⌊d' = -(x⌊d'⌊d) := by
   rw [contract_right_eq, contract_right_eq, contract_right_eq, contract_right_eq, reverse_reverse,
     reverse_reverse, contract_left_comm, map_neg]
 #align clifford_algebra.contract_right_comm CliffordAlgebra.contractRight_comm
+-/
 
 /- TODO:
 lemma contract_right_contract_left (x : clifford_algebra Q) : (d ⌋ x) ⌊ d' = d ⌋ (x ⌊ d') :=
@@ -235,13 +277,16 @@ local infixl:70 "⌋" => contractLeft
 
 local infixl:70 "⌊" => contractRight
 
+#print CliffordAlgebra.changeFormAux /-
 /-- Auxiliary construction for `clifford_algebra.change_form` -/
 @[simps]
 def changeFormAux (B : BilinForm R M) : M →ₗ[R] CliffordAlgebra Q →ₗ[R] CliffordAlgebra Q :=
   haveI v_mul := (Algebra.lmul R (CliffordAlgebra Q)).toLinearMap ∘ₗ ι Q
   v_mul - contractLeft ∘ₗ B.to_lin
 #align clifford_algebra.change_form_aux CliffordAlgebra.changeFormAux
+-/
 
+#print CliffordAlgebra.changeFormAux_changeFormAux /-
 theorem changeFormAux_changeFormAux (B : BilinForm R M) (v : M) (x : CliffordAlgebra Q) :
     changeFormAux Q B v (changeFormAux Q B v x) = (Q v - B v v) • x :=
   by
@@ -250,6 +295,7 @@ theorem changeFormAux_changeFormAux (B : BilinForm R M) (v : M) (x : CliffordAlg
     ← Algebra.smul_def, BilinForm.toLin_apply, sub_self, sub_zero, contract_left_contract_left,
     add_zero, sub_smul]
 #align clifford_algebra.change_form_aux_change_form_aux CliffordAlgebra.changeFormAux_changeFormAux
+-/
 
 variable {Q}
 
@@ -257,6 +303,7 @@ variable {Q' Q'' : QuadraticForm R M} {B B' : BilinForm R M}
 
 variable (h : B.toQuadraticForm = Q' - Q) (h' : B'.toQuadraticForm = Q'' - Q')
 
+#print CliffordAlgebra.changeForm /-
 /-- Convert between two algebras of different quadratic form, sending vector to vectors, scalars to
 scalars, and adjusting products by a contraction term.
 
@@ -270,52 +317,72 @@ def changeForm (h : B.toQuadraticForm = Q' - Q) : CliffordAlgebra Q →ₗ[R] Cl
         rw [h, QuadraticForm.sub_apply, sub_sub_cancel])
     1
 #align clifford_algebra.change_form CliffordAlgebra.changeForm
+-/
 
+#print CliffordAlgebra.changeForm.zero_proof /-
 /-- Auxiliary lemma used as an argument to `clifford_algebra.change_form` -/
 theorem changeForm.zero_proof : (0 : BilinForm R M).toQuadraticForm = Q - Q :=
   (sub_self _).symm
 #align clifford_algebra.change_form.zero_proof CliffordAlgebra.changeForm.zero_proof
+-/
 
+#print CliffordAlgebra.changeForm.add_proof /-
 /-- Auxiliary lemma used as an argument to `clifford_algebra.change_form` -/
 theorem changeForm.add_proof : (B + B').toQuadraticForm = Q'' - Q :=
   (congr_arg₂ (· + ·) h h').trans <| sub_add_sub_cancel' _ _ _
 #align clifford_algebra.change_form.add_proof CliffordAlgebra.changeForm.add_proof
+-/
 
+#print CliffordAlgebra.changeForm.neg_proof /-
 /-- Auxiliary lemma used as an argument to `clifford_algebra.change_form` -/
 theorem changeForm.neg_proof : (-B).toQuadraticForm = Q - Q' :=
   (congr_arg Neg.neg h).trans <| neg_sub _ _
 #align clifford_algebra.change_form.neg_proof CliffordAlgebra.changeForm.neg_proof
+-/
 
+#print CliffordAlgebra.changeForm.associated_neg_proof /-
 theorem changeForm.associated_neg_proof [Invertible (2 : R)] :
     (-Q).Associated.toQuadraticForm = 0 - Q := by simp [QuadraticForm.toQuadraticForm_associated]
 #align clifford_algebra.change_form.associated_neg_proof CliffordAlgebra.changeForm.associated_neg_proof
+-/
 
+#print CliffordAlgebra.changeForm_algebraMap /-
 @[simp]
 theorem changeForm_algebraMap (r : R) : changeForm h (algebraMap R _ r) = algebraMap R _ r :=
   (foldr_algebraMap _ _ _ _ _).trans <| Eq.symm <| Algebra.algebraMap_eq_smul_one r
 #align clifford_algebra.change_form_algebra_map CliffordAlgebra.changeForm_algebraMap
+-/
 
+#print CliffordAlgebra.changeForm_one /-
 @[simp]
 theorem changeForm_one : changeForm h (1 : CliffordAlgebra Q) = 1 := by
   simpa using change_form_algebra_map h (1 : R)
 #align clifford_algebra.change_form_one CliffordAlgebra.changeForm_one
+-/
 
+#print CliffordAlgebra.changeForm_ι /-
 @[simp]
 theorem changeForm_ι (m : M) : changeForm h (ι _ m) = ι _ m :=
   (foldr_ι _ _ _ _ _).trans <|
     Eq.symm <| by rw [change_form_aux_apply_apply, mul_one, contract_left_one, sub_zero]
 #align clifford_algebra.change_form_ι CliffordAlgebra.changeForm_ι
+-/
 
+#print CliffordAlgebra.changeForm_ι_mul /-
 theorem changeForm_ι_mul (m : M) (x : CliffordAlgebra Q) :
     changeForm h (ι _ m * x) = ι _ m * changeForm h x - BilinForm.toLin B m⌋changeForm h x :=
   (foldr_mul _ _ _ _ _ _).trans <| by rw [foldr_ι]; rfl
 #align clifford_algebra.change_form_ι_mul CliffordAlgebra.changeForm_ι_mul
+-/
 
+#print CliffordAlgebra.changeForm_ι_mul_ι /-
 theorem changeForm_ι_mul_ι (m₁ m₂ : M) :
     changeForm h (ι _ m₁ * ι _ m₂) = ι _ m₁ * ι _ m₂ - algebraMap _ _ (B m₁ m₂) := by
   rw [change_form_ι_mul, change_form_ι, contract_left_ι, BilinForm.toLin_apply]
 #align clifford_algebra.change_form_ι_mul_ι CliffordAlgebra.changeForm_ι_mul_ι
+-/
 
+#print CliffordAlgebra.changeForm_contractLeft /-
 /-- Theorem 23 of [grinberg_clifford_2016][] -/
 theorem changeForm_contractLeft (d : Module.Dual R M) (x : CliffordAlgebra Q) :
     changeForm h (d⌋x) = d⌋changeForm h x :=
@@ -326,7 +393,9 @@ theorem changeForm_contractLeft (d : Module.Dual R M) (x : CliffordAlgebra Q) :
   · simp only [contract_left_ι_mul, change_form_ι_mul, map_sub, LinearMap.map_smul]
     rw [← hx, contract_left_comm, ← sub_add, sub_neg_eq_add, ← hx]
 #align clifford_algebra.change_form_contract_left CliffordAlgebra.changeForm_contractLeft
+-/
 
+#print CliffordAlgebra.changeForm_self_apply /-
 theorem changeForm_self_apply (x : CliffordAlgebra Q) : changeForm changeForm.zero_proof x = x :=
   by
   induction' x using CliffordAlgebra.left_induction with r x y hx hy m x hx
@@ -336,13 +405,17 @@ theorem changeForm_self_apply (x : CliffordAlgebra Q) : changeForm changeForm.ze
     rw [change_form_ι_mul, hx, map_zero, LinearMap.zero_apply, map_zero, LinearMap.zero_apply,
       sub_zero]
 #align clifford_algebra.change_form_self_apply CliffordAlgebra.changeForm_self_apply
+-/
 
+#print CliffordAlgebra.changeForm_self /-
 @[simp]
 theorem changeForm_self :
     changeForm changeForm.zero_proof = (LinearMap.id : CliffordAlgebra Q →ₗ[R] _) :=
   LinearMap.ext <| changeForm_self_apply
 #align clifford_algebra.change_form_self CliffordAlgebra.changeForm_self
+-/
 
+#print CliffordAlgebra.changeForm_changeForm /-
 /-- This is [bourbaki2007][] $9 Lemma 3. -/
 theorem changeForm_changeForm (x : CliffordAlgebra Q) :
     changeForm h' (changeForm h x) = changeForm (changeForm.add_proof h h') x :=
@@ -355,12 +428,16 @@ theorem changeForm_changeForm (x : CliffordAlgebra Q) :
       LinearMap.add_apply, map_add, LinearMap.add_apply, change_form_contract_left, hx,
       add_comm (_ : CliffordAlgebra Q'')]
 #align clifford_algebra.change_form_change_form CliffordAlgebra.changeForm_changeForm
+-/
 
+#print CliffordAlgebra.changeForm_comp_changeForm /-
 theorem changeForm_comp_changeForm :
     (changeForm h').comp (changeForm h) = changeForm (changeForm.add_proof h h') :=
   LinearMap.ext <| changeForm_changeForm _ _
 #align clifford_algebra.change_form_comp_change_form CliffordAlgebra.changeForm_comp_changeForm
+-/
 
+#print CliffordAlgebra.changeFormEquiv /-
 /-- Any two algebras whose quadratic forms differ by a bilinear form are isomorphic as modules.
 
 This is $\bar \lambda_B$ from [bourbaki2007][] $9 Proposition 3. -/
@@ -374,15 +451,19 @@ def changeFormEquiv : CliffordAlgebra Q ≃ₗ[R] CliffordAlgebra Q' :=
     right_inv := fun x =>
       (changeForm_changeForm _ _ x).trans <| by simp_rw [add_left_neg, change_form_self_apply] }
 #align clifford_algebra.change_form_equiv CliffordAlgebra.changeFormEquiv
+-/
 
+#print CliffordAlgebra.changeFormEquiv_symm /-
 @[simp]
 theorem changeFormEquiv_symm :
     (changeFormEquiv h).symm = changeFormEquiv (changeForm.neg_proof h) :=
   LinearEquiv.ext fun x => (rfl : changeForm _ x = changeForm _ x)
 #align clifford_algebra.change_form_equiv_symm CliffordAlgebra.changeFormEquiv_symm
+-/
 
 variable (Q)
 
+#print CliffordAlgebra.equivExterior /-
 /-- The module isomorphism to the exterior algebra.
 
 Note that this holds more generally when `Q` is divisible by two, rather than only when `1` is
@@ -391,6 +472,7 @@ divisible by two; but that would be more awkward to use. -/
 def equivExterior [Invertible (2 : R)] : CliffordAlgebra Q ≃ₗ[R] ExteriorAlgebra R M :=
   changeFormEquiv changeForm.associated_neg_proof
 #align clifford_algebra.equiv_exterior CliffordAlgebra.equivExterior
+-/
 
 end CliffordAlgebra
 
Diff
@@ -121,10 +121,8 @@ theorem contractRight_eq (x : CliffordAlgebra Q) :
   rfl
 #align clifford_algebra.contract_right_eq CliffordAlgebra.contractRight_eq
 
--- mathport name: «expr ⌋ »
 local infixl:70 "⌋" => contractLeft
 
--- mathport name: «expr ⌊ »
 local infixl:70 "⌊" => contractRight
 
 /-- This is [grinberg_clifford_2016][] Theorem 6  -/
@@ -233,10 +231,8 @@ lemma contract_right_contract_left (x : clifford_algebra Q) : (d ⌋ x) ⌊ d' =
 -/
 end contractLeft
 
--- mathport name: «expr ⌋ »
 local infixl:70 "⌋" => contractLeft
 
--- mathport name: «expr ⌊ »
 local infixl:70 "⌊" => contractRight
 
 /-- Auxiliary construction for `clifford_algebra.change_form` -/
Diff
@@ -89,7 +89,7 @@ def contractLeft : Module.Dual R M →ₗ[R] CliffordAlgebra Q →ₗ[R] Cliffor
   map_add' d₁ d₂ :=
     LinearMap.ext fun x => by
       rw [LinearMap.add_apply]
-      induction' x using CliffordAlgebra.leftInduction with r x y hx hy m x hx
+      induction' x using CliffordAlgebra.left_induction with r x y hx hy m x hx
       · simp_rw [foldr'_algebra_map, smul_zero, zero_add]
       · rw [map_add, map_add, map_add, add_add_add_comm, hx, hy]
       · rw [foldr'_ι_mul, foldr'_ι_mul, foldr'_ι_mul, hx]
@@ -98,7 +98,7 @@ def contractLeft : Module.Dual R M →ₗ[R] CliffordAlgebra Q →ₗ[R] Cliffor
   map_smul' c d :=
     LinearMap.ext fun x => by
       rw [LinearMap.smul_apply, RingHom.id_apply]
-      induction' x using CliffordAlgebra.leftInduction with r x y hx hy m x hx
+      induction' x using CliffordAlgebra.left_induction with r x y hx hy m x hx
       · simp_rw [foldr'_algebra_map, smul_zero]
       · rw [map_add, map_add, smul_add, hx, hy]
       · rw [foldr'_ι_mul, foldr'_ι_mul, hx]
@@ -199,7 +199,7 @@ variable {Q}
 /-- This is [grinberg_clifford_2016][] Theorem 7 -/
 theorem contractLeft_contractLeft (x : CliffordAlgebra Q) : d⌋(d⌋x) = 0 :=
   by
-  induction' x using CliffordAlgebra.leftInduction with r x y hx hy m x hx
+  induction' x using CliffordAlgebra.left_induction with r x y hx hy m x hx
   · simp_rw [contract_left_algebra_map, map_zero]
   · rw [map_add, map_add, hx, hy, add_zero]
   ·
@@ -215,7 +215,7 @@ theorem contractRight_contractRight (x : CliffordAlgebra Q) : x⌊d⌊d = 0 := b
 /-- This is [grinberg_clifford_2016][] Theorem 8 -/
 theorem contractLeft_comm (x : CliffordAlgebra Q) : d⌋(d'⌋x) = -(d'⌋(d⌋x)) :=
   by
-  induction' x using CliffordAlgebra.leftInduction with r x y hx hy m x hx
+  induction' x using CliffordAlgebra.left_induction with r x y hx hy m x hx
   · simp_rw [contract_left_algebra_map, map_zero, neg_zero]
   · rw [map_add, map_add, map_add, map_add, hx, hy, neg_add]
   · simp only [contract_left_ι_mul, map_sub, LinearMap.map_smul]
@@ -324,7 +324,7 @@ theorem changeForm_ι_mul_ι (m₁ m₂ : M) :
 theorem changeForm_contractLeft (d : Module.Dual R M) (x : CliffordAlgebra Q) :
     changeForm h (d⌋x) = d⌋changeForm h x :=
   by
-  induction' x using CliffordAlgebra.leftInduction with r x y hx hy m x hx
+  induction' x using CliffordAlgebra.left_induction with r x y hx hy m x hx
   · simp only [contract_left_algebra_map, change_form_algebra_map, map_zero]
   · rw [map_add, map_add, map_add, map_add, hx, hy]
   · simp only [contract_left_ι_mul, change_form_ι_mul, map_sub, LinearMap.map_smul]
@@ -333,7 +333,7 @@ theorem changeForm_contractLeft (d : Module.Dual R M) (x : CliffordAlgebra Q) :
 
 theorem changeForm_self_apply (x : CliffordAlgebra Q) : changeForm changeForm.zero_proof x = x :=
   by
-  induction' x using CliffordAlgebra.leftInduction with r x y hx hy m x hx
+  induction' x using CliffordAlgebra.left_induction with r x y hx hy m x hx
   · simp_rw [change_form_algebra_map]
   · rw [map_add, hx, hy]
   ·
@@ -351,7 +351,7 @@ theorem changeForm_self :
 theorem changeForm_changeForm (x : CliffordAlgebra Q) :
     changeForm h' (changeForm h x) = changeForm (changeForm.add_proof h h') x :=
   by
-  induction' x using CliffordAlgebra.leftInduction with r x y hx hy m x hx
+  induction' x using CliffordAlgebra.left_induction with r x y hx hy m x hx
   · simp_rw [change_form_algebra_map]
   · rw [map_add, map_add, map_add, hx, hy]
   ·
Diff
@@ -55,7 +55,7 @@ variable (Q : QuadraticForm R M)
 
 namespace CliffordAlgebra
 
-section ContractLeft
+section contractLeft
 
 variable (d d' : Module.Dual R M)
 
@@ -231,7 +231,7 @@ theorem contractRight_comm (x : CliffordAlgebra Q) : x⌊d⌊d' = -(x⌊d'⌊d)
 /- TODO:
 lemma contract_right_contract_left (x : clifford_algebra Q) : (d ⌋ x) ⌊ d' = d ⌋ (x ⌊ d') :=
 -/
-end ContractLeft
+end contractLeft
 
 -- mathport name: «expr ⌋ »
 local infixl:70 "⌋" => contractLeft
@@ -243,7 +243,7 @@ local infixl:70 "⌊" => contractRight
 @[simps]
 def changeFormAux (B : BilinForm R M) : M →ₗ[R] CliffordAlgebra Q →ₗ[R] CliffordAlgebra Q :=
   haveI v_mul := (Algebra.lmul R (CliffordAlgebra Q)).toLinearMap ∘ₗ ι Q
-  v_mul - contract_left ∘ₗ B.to_lin
+  v_mul - contractLeft ∘ₗ B.to_lin
 #align clifford_algebra.change_form_aux CliffordAlgebra.changeFormAux
 
 theorem changeFormAux_changeFormAux (B : BilinForm R M) (v : M) (x : CliffordAlgebra Q) :
Diff
@@ -63,7 +63,7 @@ variable (d d' : Module.Dual R M)
 @[simps]
 def contractLeftAux (d : Module.Dual R M) :
     M →ₗ[R] CliffordAlgebra Q × CliffordAlgebra Q →ₗ[R] CliffordAlgebra Q :=
-  haveI v_mul := (LinearMap.Algebra.lmul R (CliffordAlgebra Q)).toLinearMap ∘ₗ ι Q
+  haveI v_mul := (Algebra.lmul R (CliffordAlgebra Q)).toLinearMap ∘ₗ ι Q
   d.smul_right (LinearMap.fst _ (CliffordAlgebra Q) (CliffordAlgebra Q)) -
     v_mul.compl₂ (LinearMap.snd _ (CliffordAlgebra Q) _)
 #align clifford_algebra.contract_left_aux CliffordAlgebra.contractLeftAux
@@ -242,7 +242,7 @@ local infixl:70 "⌊" => contractRight
 /-- Auxiliary construction for `clifford_algebra.change_form` -/
 @[simps]
 def changeFormAux (B : BilinForm R M) : M →ₗ[R] CliffordAlgebra Q →ₗ[R] CliffordAlgebra Q :=
-  haveI v_mul := (LinearMap.Algebra.lmul R (CliffordAlgebra Q)).toLinearMap ∘ₗ ι Q
+  haveI v_mul := (Algebra.lmul R (CliffordAlgebra Q)).toLinearMap ∘ₗ ι Q
   v_mul - contract_left ∘ₗ B.to_lin
 #align clifford_algebra.change_form_aux CliffordAlgebra.changeFormAux
 
Diff
@@ -165,7 +165,8 @@ variable (Q)
 @[simp]
 theorem contractLeft_ι (x : M) : d⌋ι Q x = algebraMap R _ (d x) :=
   (foldr'_ι _ _ _ _ _).trans <| by
-    simp_rw [contract_left_aux_apply_apply, mul_zero, sub_zero, Algebra.algebraMap_eq_smul_one]
+    simp_rw [contract_left_aux_apply_apply, MulZeroClass.mul_zero, sub_zero,
+      Algebra.algebraMap_eq_smul_one]
 #align clifford_algebra.contract_left_ι CliffordAlgebra.contractLeft_ι
 
 @[simp]
@@ -202,8 +203,8 @@ theorem contractLeft_contractLeft (x : CliffordAlgebra Q) : d⌋(d⌋x) = 0 :=
   · simp_rw [contract_left_algebra_map, map_zero]
   · rw [map_add, map_add, hx, hy, add_zero]
   ·
-    rw [contract_left_ι_mul, map_sub, contract_left_ι_mul, hx, LinearMap.map_smul, mul_zero,
-      sub_zero, sub_self]
+    rw [contract_left_ι_mul, map_sub, contract_left_ι_mul, hx, LinearMap.map_smul,
+      MulZeroClass.mul_zero, sub_zero, sub_self]
 #align clifford_algebra.contract_left_contract_left CliffordAlgebra.contractLeft_contractLeft
 
 /-- This is [grinberg_clifford_2016][] Theorem 13 -/
Diff
@@ -63,7 +63,7 @@ variable (d d' : Module.Dual R M)
 @[simps]
 def contractLeftAux (d : Module.Dual R M) :
     M →ₗ[R] CliffordAlgebra Q × CliffordAlgebra Q →ₗ[R] CliffordAlgebra Q :=
-  haveI v_mul := (Algebra.lmul R (CliffordAlgebra Q)).toLinearMap ∘ₗ ι Q
+  haveI v_mul := (LinearMap.Algebra.lmul R (CliffordAlgebra Q)).toLinearMap ∘ₗ ι Q
   d.smul_right (LinearMap.fst _ (CliffordAlgebra Q) (CliffordAlgebra Q)) -
     v_mul.compl₂ (LinearMap.snd _ (CliffordAlgebra Q) _)
 #align clifford_algebra.contract_left_aux CliffordAlgebra.contractLeftAux
@@ -241,7 +241,7 @@ local infixl:70 "⌊" => contractRight
 /-- Auxiliary construction for `clifford_algebra.change_form` -/
 @[simps]
 def changeFormAux (B : BilinForm R M) : M →ₗ[R] CliffordAlgebra Q →ₗ[R] CliffordAlgebra Q :=
-  haveI v_mul := (Algebra.lmul R (CliffordAlgebra Q)).toLinearMap ∘ₗ ι Q
+  haveI v_mul := (LinearMap.Algebra.lmul R (CliffordAlgebra Q)).toLinearMap ∘ₗ ι Q
   v_mul - contract_left ∘ₗ B.to_lin
 #align clifford_algebra.change_form_aux CliffordAlgebra.changeFormAux
 

Changes in mathlib4

mathlib3
mathlib4
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)

      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()

      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -47,9 +47,7 @@ open LinearMap (BilinForm)
 universe u1 u2 u3
 
 variable {R : Type u1} [CommRing R]
-
 variable {M : Type u2} [AddCommGroup M] [Module R M]
-
 variable (Q : QuadraticForm R M)
 
 namespace CliffordAlgebra
@@ -256,9 +254,7 @@ theorem changeFormAux_changeFormAux (B : BilinForm R M) (v : M) (x : CliffordAlg
 #align clifford_algebra.change_form_aux_change_form_aux CliffordAlgebra.changeFormAux_changeFormAux
 
 variable {Q}
-
 variable {Q' Q'' : QuadraticForm R M} {B B' : BilinForm R M}
-
 variable (h : B.toQuadraticForm = Q' - Q) (h' : B'.toQuadraticForm = Q'' - Q')
 
 /-- Convert between two algebras of different quadratic form, sending vector to vectors, scalars to
refactor(LinearAlgebra/QuadraticForm): Replace BilinForm with a scalar valued bi LinearMap (#10238)

Following on from #10097, which converted the companion of a quadratic form with a bilinear map, this PR replaces a number of results about quadratic forms and bilinear forms with results about quadratic forms and scalar valued bilinear maps. The long term aim is to be able to consider quadratic maps.

The main change is to LinearAlgebra/QuadraticForm/Basic, but this necessitates changes throughout LinearAlgebra/QuadraticForm/. Minor changes are also required elsewhere:

  • LinearAlgebra/CliffordAlgebra/
  • LinearAlgebra/Matrix/PosDef
  • LinearAlgebra/SesquilinearForm
  • A number of additional results about tensor products and linear maps are also required.

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Christopher Hoskin <christopher.hoskin@overleaf.com>

Diff
@@ -6,6 +6,7 @@ Authors: Eric Wieser
 import Mathlib.LinearAlgebra.ExteriorAlgebra.Basic
 import Mathlib.LinearAlgebra.CliffordAlgebra.Fold
 import Mathlib.LinearAlgebra.CliffordAlgebra.Conjugation
+import Mathlib.LinearAlgebra.Dual
 
 #align_import linear_algebra.clifford_algebra.contraction from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
 
@@ -41,6 +42,7 @@ Within this file, we use the local notation
 
 -/
 
+open LinearMap (BilinForm)
 
 universe u1 u2 u3
 
@@ -243,15 +245,14 @@ local infixl:70 "⌊" => contractRight
 @[simps!]
 def changeFormAux (B : BilinForm R M) : M →ₗ[R] CliffordAlgebra Q →ₗ[R] CliffordAlgebra Q :=
   haveI v_mul := (Algebra.lmul R (CliffordAlgebra Q)).toLinearMap ∘ₗ ι Q
-  v_mul - contractLeft ∘ₗ (BilinForm.toLin B)
+  v_mul - contractLeft ∘ₗ B
 #align clifford_algebra.change_form_aux CliffordAlgebra.changeFormAux
 
 theorem changeFormAux_changeFormAux (B : BilinForm R M) (v : M) (x : CliffordAlgebra Q) :
     changeFormAux Q B v (changeFormAux Q B v x) = (Q v - B v v) • x := by
   simp only [changeFormAux_apply_apply]
   rw [mul_sub, ← mul_assoc, ι_sq_scalar, map_sub, contractLeft_ι_mul, ← sub_add, sub_sub_sub_comm,
-    ← Algebra.smul_def, BilinForm.toLin_apply, sub_self, sub_zero, contractLeft_contractLeft,
-    add_zero, sub_smul]
+    ← Algebra.smul_def, sub_self, sub_zero, contractLeft_contractLeft, add_zero, sub_smul]
 #align clifford_algebra.change_form_aux_change_form_aux CliffordAlgebra.changeFormAux_changeFormAux
 
 variable {Q}
@@ -311,7 +312,7 @@ theorem changeForm_ι (m : M) : changeForm h (ι (M := M) Q m) = ι (M := M) Q'
 
 theorem changeForm_ι_mul (m : M) (x : CliffordAlgebra Q) :
     changeForm h (ι (M := M) Q m * x) = ι (M := M) Q' m * changeForm h x
-    - contractLeft (Q := Q') (BilinForm.toLin B m) (changeForm h x) :=
+    - contractLeft (Q := Q') (B m) (changeForm h x) :=
 -- Porting note: original statement
 --    - BilinForm.toLin B m⌋changeForm h x :=
   (foldr_mul _ _ _ _ _ _).trans <| by rw [foldr_ι]; rfl
@@ -319,7 +320,7 @@ theorem changeForm_ι_mul (m : M) (x : CliffordAlgebra Q) :
 
 theorem changeForm_ι_mul_ι (m₁ m₂ : M) :
     changeForm h (ι Q m₁ * ι Q m₂) = ι Q' m₁ * ι Q' m₂ - algebraMap _ _ (B m₁ m₂) := by
-  rw [changeForm_ι_mul, changeForm_ι, contractLeft_ι, BilinForm.toLin_apply]
+  rw [changeForm_ι_mul, changeForm_ι, contractLeft_ι]
 #align clifford_algebra.change_form_ι_mul_ι CliffordAlgebra.changeForm_ι_mul_ι
 
 /-- Theorem 23 of [grinberg_clifford_2016][] -/
@@ -339,7 +340,7 @@ theorem changeForm_self_apply (x : CliffordAlgebra Q) : changeForm (Q' := Q)
   induction' x using CliffordAlgebra.left_induction with r x y hx hy m x hx
   · simp_rw [changeForm_algebraMap]
   · rw [map_add, hx, hy]
-  · rw [changeForm_ι_mul, hx, map_zero, LinearMap.zero_apply, map_zero, LinearMap.zero_apply,
+  · rw [changeForm_ι_mul, hx, LinearMap.zero_apply, map_zero, LinearMap.zero_apply,
       sub_zero]
 #align clifford_algebra.change_form_self_apply CliffordAlgebra.changeForm_self_apply
 
@@ -355,7 +356,7 @@ theorem changeForm_changeForm (x : CliffordAlgebra Q) :
   induction' x using CliffordAlgebra.left_induction with r x y hx hy m x hx
   · simp_rw [changeForm_algebraMap]
   · rw [map_add, map_add, map_add, hx, hy]
-  · rw [changeForm_ι_mul, map_sub, changeForm_ι_mul, changeForm_ι_mul, hx, sub_sub, map_add,
+  · rw [changeForm_ι_mul, map_sub, changeForm_ι_mul, changeForm_ι_mul, hx, sub_sub,
       LinearMap.add_apply, map_add, LinearMap.add_apply, changeForm_contractLeft, hx,
       add_comm (_ : CliffordAlgebra Q'')]
 #align clifford_algebra.change_form_change_form CliffordAlgebra.changeForm_changeForm
@@ -375,11 +376,12 @@ def changeFormEquiv : CliffordAlgebra Q ≃ₗ[R] CliffordAlgebra Q' :=
     invFun := changeForm (changeForm.neg_proof h)
     left_inv := fun x => by
       dsimp only
-      exact (changeForm_changeForm _ _ x).trans <| by simp_rw [add_right_neg, changeForm_self_apply]
+      exact (changeForm_changeForm _ _ x).trans <|
+        by simp_rw [(add_neg_self B), changeForm_self_apply]
     right_inv := fun x => by
       dsimp only
       exact (changeForm_changeForm _ _ x).trans <|
-        by simp_rw [add_left_neg, changeForm_self_apply] }
+        by simp_rw [(add_left_neg B), changeForm_self_apply] }
 #align clifford_algebra.change_form_equiv CliffordAlgebra.changeFormEquiv
 
 @[simp]
perf(FunLike.Basic): beta reduce CoeFun.coe (#7905)

This eliminates (fun a ↦ β) α in the type when applying a FunLike.

Co-authored-by: Matthew Ballard <matt@mrb.email> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -143,12 +143,12 @@ theorem contractRight_mul_ι (a : M) (b : CliffordAlgebra Q) :
 
 theorem contractLeft_algebraMap_mul (r : R) (b : CliffordAlgebra Q) :
     d⌋(algebraMap _ _ r * b) = algebraMap _ _ r * (d⌋b) := by
-  rw [← Algebra.smul_def, map_smul, Algebra.smul_def, Algebra.smul_def]
+  rw [← Algebra.smul_def, map_smul, Algebra.smul_def]
 #align clifford_algebra.contract_left_algebra_map_mul CliffordAlgebra.contractLeft_algebraMap_mul
 
 theorem contractLeft_mul_algebraMap (a : CliffordAlgebra Q) (r : R) :
     d⌋(a * algebraMap _ _ r) = d⌋a * algebraMap _ _ r := by
-  rw [← Algebra.commutes, contractLeft_algebraMap_mul, Algebra.commutes, Algebra.commutes]
+  rw [← Algebra.commutes, contractLeft_algebraMap_mul, Algebra.commutes]
 #align clifford_algebra.contract_left_mul_algebra_map CliffordAlgebra.contractLeft_mul_algebraMap
 
 theorem contractRight_algebraMap_mul (r : R) (b : CliffordAlgebra Q) :
feat: Nontrivial instances for ExteriorAlgebra, CliffordAlgebra (#7985)

Using methods suggested by @eric-wieser Zulip discussion

Diff
@@ -399,4 +399,8 @@ def equivExterior [Invertible (2 : R)] : CliffordAlgebra Q ≃ₗ[R] ExteriorAlg
   changeFormEquiv changeForm.associated_neg_proof
 #align clifford_algebra.equiv_exterior CliffordAlgebra.equivExterior
 
+/-- A `CliffordAlgebra` over a nontrivial ring is nontrivial, in characteristic not two. -/
+instance [Nontrivial R] [Invertible (2 : R)] :
+    Nontrivial (CliffordAlgebra Q) := (equivExterior Q).symm.injective.nontrivial
+
 end CliffordAlgebra
refactor(LinearAlgebra/QuadraticForm/Basic): remove non-commutativity support (#7581)

As discussed on Zulip, this generalization seems nonsensical as currently implemented.

There are sensible ways to make this generalization, but they are much larger refactors, and in the meantime the current generalization is useless anyway.

Diff
@@ -289,7 +289,7 @@ theorem changeForm.neg_proof : (-B).toQuadraticForm = Q - Q' :=
 #align clifford_algebra.change_form.neg_proof CliffordAlgebra.changeForm.neg_proof
 
 theorem changeForm.associated_neg_proof [Invertible (2 : R)] :
-    (QuadraticForm.associated (R₁ := R) (M := M) (-Q)).toQuadraticForm = 0 - Q := by
+    (QuadraticForm.associated (R := R) (M := M) (-Q)).toQuadraticForm = 0 - Q := by
   simp [QuadraticForm.toQuadraticForm_associated]
 #align clifford_algebra.change_form.associated_neg_proof CliffordAlgebra.changeForm.associated_neg_proof
 
chore: only four spaces for subsequent lines (#7286)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -324,8 +324,8 @@ theorem changeForm_ι_mul_ι (m₁ m₂ : M) :
 
 /-- Theorem 23 of [grinberg_clifford_2016][] -/
 theorem changeForm_contractLeft (d : Module.Dual R M) (x : CliffordAlgebra Q) :
--- Porting note: original statement
---    changeForm h (d⌋x) = d⌋changeForm h x := by
+    -- Porting note: original statement
+    --    changeForm h (d⌋x) = d⌋changeForm h x := by
     changeForm h (contractLeft (Q := Q) d x) = contractLeft (Q := Q') d (changeForm h x) := by
   induction' x using CliffordAlgebra.left_induction with r x y hx hy m x hx
   · simp only [contractLeft_algebraMap, changeForm_algebraMap, map_zero]
chore: tidy various files (#7137)
Diff
@@ -114,8 +114,7 @@ def contractRight : CliffordAlgebra Q →ₗ[R] Module.Dual R M →ₗ[R] Cliffo
 #align clifford_algebra.contract_right CliffordAlgebra.contractRight
 
 theorem contractRight_eq (x : CliffordAlgebra Q) :
-    contractRight (Q := Q) x d = reverse
-    (contractLeft (R := R) (M := M) d <| reverse x) :=
+    contractRight (Q := Q) x d = reverse (contractLeft (R := R) (M := M) d <| reverse x) :=
   rfl
 #align clifford_algebra.contract_right_eq CliffordAlgebra.contractRight_eq
 
@@ -232,7 +231,7 @@ theorem contractRight_comm (x : CliffordAlgebra Q) : x⌊d⌊d' = -(x⌊d'⌊d)
 #align clifford_algebra.contract_right_comm CliffordAlgebra.contractRight_comm
 
 /- TODO:
-lemma contract_right_contract_left (x : clifford_algebra Q) : (d ⌋ x) ⌊ d' = d ⌋ (x ⌊ d') :=
+lemma contractRight_contractLeft (x : CliffordAlgebra Q) : (d ⌋ x) ⌊ d' = d ⌋ (x ⌊ d') :=
 -/
 end contractLeft
 
chore(LinearAlgebra/CliffordAlgebra): remove Q := Q (#6780)

The removal of a FunLike instance for Module.Dual made these unnecessary.

Diff
@@ -114,8 +114,8 @@ def contractRight : CliffordAlgebra Q →ₗ[R] Module.Dual R M →ₗ[R] Cliffo
 #align clifford_algebra.contract_right CliffordAlgebra.contractRight
 
 theorem contractRight_eq (x : CliffordAlgebra Q) :
-    contractRight (Q := Q) x d = reverse (Q := Q)
-    (contractLeft (R := R) (M := M) d <| reverse (Q := Q) x) :=
+    contractRight (Q := Q) x d = reverse
+    (contractLeft (R := R) (M := M) d <| reverse x) :=
   rfl
 #align clifford_algebra.contract_right_eq CliffordAlgebra.contractRight_eq
 
chore: drop MulZeroClass. in mul_zero/zero_mul (#6682)

Search&replace MulZeroClass.mul_zero -> mul_zero, MulZeroClass.zero_mul -> zero_mul.

These were introduced by Mathport, as the full name of mul_zero is actually MulZeroClass.mul_zero (it's exported with the short name).

Diff
@@ -168,7 +168,7 @@ variable (Q)
 theorem contractLeft_ι (x : M) : d⌋ι Q x = algebraMap R _ (d x) := by
 -- Porting note: Lean cannot figure out anymore the third argument
   refine (foldr'_ι _ _ ?_ _ _).trans <| by
-    simp_rw [contractLeftAux_apply_apply, MulZeroClass.mul_zero, sub_zero,
+    simp_rw [contractLeftAux_apply_apply, mul_zero, sub_zero,
       Algebra.algebraMap_eq_smul_one]
   exact fun m x fx ↦ contractLeftAux_contractLeftAux Q d m x fx
 #align clifford_algebra.contract_left_ι CliffordAlgebra.contractLeft_ι
@@ -208,7 +208,7 @@ theorem contractLeft_contractLeft (x : CliffordAlgebra Q) : d⌋(d⌋x) = 0 := b
   · simp_rw [contractLeft_algebraMap, map_zero]
   · rw [map_add, map_add, hx, hy, add_zero]
   · rw [contractLeft_ι_mul, map_sub, contractLeft_ι_mul, hx, LinearMap.map_smul,
-      MulZeroClass.mul_zero, sub_zero, sub_self]
+      mul_zero, sub_zero, sub_self]
 #align clifford_algebra.contract_left_contract_left CliffordAlgebra.contractLeft_contractLeft
 
 /-- This is [grinberg_clifford_2016][] Theorem 13 -/
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2022 Eric Wieser. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser
-
-! This file was ported from Lean 3 source module linear_algebra.clifford_algebra.contraction
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.LinearAlgebra.ExteriorAlgebra.Basic
 import Mathlib.LinearAlgebra.CliffordAlgebra.Fold
 import Mathlib.LinearAlgebra.CliffordAlgebra.Conjugation
 
+#align_import linear_algebra.clifford_algebra.contraction from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
+
 /-!
 # Contraction in Clifford Algebras
 
feat: port LinearAlgebra.CliffordAlgebra.Contraction (#5467)

Co-authored-by: Emilie Uthaiwat <emiliepathum@gmail.com> Co-authored-by: Xavier-François Roblot <46200072+xroblot@users.noreply.github.com>

Dependencies 10 + 643

644 files ported (98.5%)
271824 lines ported (98.8%)
Show graph

The unported dependencies are