Documentation

Mathlib.LinearAlgebra.CliffordAlgebra.Contraction

Contraction in Clifford Algebras #

This file contains some of the results from [grinberg_clifford_2016][]. The key result is CliffordAlgebra.equivExterior.

Main definitions #

Implementation notes #

This file somewhat follows [grinberg_clifford_2016][], although we are missing some of the induction principles needed to prove many of the results. Here, we avoid the quotient-based approach described in [grinberg_clifford_2016][], instead directly constructing our objects using the universal property.

Note that [grinberg_clifford_2016][] concludes that its contents are not novel, and are in fact just a rehash of parts of [bourbaki2007][]; we should at some point consider swapping our references to refer to the latter.

Within this file, we use the local notation

@[simp]
theorem CliffordAlgebra.contractLeftAux_apply_apply {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) (d : Module.Dual R M) (a : M) (a : CliffordAlgebra Q × CliffordAlgebra Q) :
((CliffordAlgebra.contractLeftAux Q d) a✝) a = d a✝ a.1 - (CliffordAlgebra.ι Q) a✝ * a.2

Auxiliary construction for CliffordAlgebra.contractLeft

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    Contract an element of the clifford algebra with an element d : Module.Dual R M from the left.

    Note that $v ⌋ x$ is spelt contractLeft (Q.associated v) x.

    This includes [grinberg_clifford_2016][] Theorem 10.75

    Equations
    Instances For

      Contract an element of the clifford algebra with an element d : Module.Dual R M from the right.

      Note that $x ⌊ v$ is spelt contractRight x (Q.associated v).

      This includes [grinberg_clifford_2016][] Theorem 16.75

      Equations
      • CliffordAlgebra.contractRight = ((CliffordAlgebra.contractLeft.compr₂ CliffordAlgebra.reverse).compl₂ CliffordAlgebra.reverse).flip
      Instances For
        theorem CliffordAlgebra.contractRight_eq {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (d : Module.Dual R M) (x : CliffordAlgebra Q) :
        (CliffordAlgebra.contractRight x) d = CliffordAlgebra.reverse ((CliffordAlgebra.contractLeft d) (CliffordAlgebra.reverse x))
        instance CliffordAlgebra.instSMul {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} :
        Equations
        • CliffordAlgebra.instSMul = inferInstance
        theorem CliffordAlgebra.contractLeft_ι_mul {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (d : Module.Dual R M) (a : M) (b : CliffordAlgebra Q) :
        (CliffordAlgebra.contractLeft d) ((CliffordAlgebra.ι Q) a * b) = d a b - (CliffordAlgebra.ι Q) a * (CliffordAlgebra.contractLeft d) b

        This is [grinberg_clifford_2016][] Theorem 6

        theorem CliffordAlgebra.contractRight_mul_ι {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (d : Module.Dual R M) (a : M) (b : CliffordAlgebra Q) :
        (CliffordAlgebra.contractRight (b * (CliffordAlgebra.ι Q) a)) d = d a b - (CliffordAlgebra.contractRight b) d * (CliffordAlgebra.ι Q) a

        This is [grinberg_clifford_2016][] Theorem 12

        theorem CliffordAlgebra.contractLeft_algebraMap_mul {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (d : Module.Dual R M) (r : R) (b : CliffordAlgebra Q) :
        (CliffordAlgebra.contractLeft d) ((algebraMap R (CliffordAlgebra Q)) r * b) = (algebraMap R (CliffordAlgebra Q)) r * (CliffordAlgebra.contractLeft d) b
        theorem CliffordAlgebra.contractLeft_mul_algebraMap {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (d : Module.Dual R M) (a : CliffordAlgebra Q) (r : R) :
        (CliffordAlgebra.contractLeft d) (a * (algebraMap R (CliffordAlgebra Q)) r) = (CliffordAlgebra.contractLeft d) a * (algebraMap R (CliffordAlgebra Q)) r
        theorem CliffordAlgebra.contractRight_algebraMap_mul {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (d : Module.Dual R M) (r : R) (b : CliffordAlgebra Q) :
        (CliffordAlgebra.contractRight ((algebraMap R (CliffordAlgebra Q)) r * b)) d = (algebraMap R (CliffordAlgebra Q)) r * (CliffordAlgebra.contractRight b) d
        theorem CliffordAlgebra.contractRight_mul_algebraMap {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (d : Module.Dual R M) (a : CliffordAlgebra Q) (r : R) :
        (CliffordAlgebra.contractRight (a * (algebraMap R (CliffordAlgebra Q)) r)) d = (CliffordAlgebra.contractRight a) d * (algebraMap R (CliffordAlgebra Q)) r
        @[simp]
        theorem CliffordAlgebra.contractLeft_ι {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) (d : Module.Dual R M) (x : M) :
        (CliffordAlgebra.contractLeft d) ((CliffordAlgebra.ι Q) x) = (algebraMap R (CliffordAlgebra Q)) (d x)
        @[simp]
        theorem CliffordAlgebra.contractRight_ι {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) (d : Module.Dual R M) (x : M) :
        (CliffordAlgebra.contractRight ((CliffordAlgebra.ι Q) x)) d = (algebraMap R (CliffordAlgebra Q)) (d x)
        @[simp]
        theorem CliffordAlgebra.contractLeft_algebraMap {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) (d : Module.Dual R M) (r : R) :
        (CliffordAlgebra.contractLeft d) ((algebraMap R (CliffordAlgebra Q)) r) = 0
        @[simp]
        theorem CliffordAlgebra.contractRight_algebraMap {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) (d : Module.Dual R M) (r : R) :
        (CliffordAlgebra.contractRight ((algebraMap R (CliffordAlgebra Q)) r)) d = 0
        @[simp]
        theorem CliffordAlgebra.contractLeft_one {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) (d : Module.Dual R M) :
        (CliffordAlgebra.contractLeft d) 1 = 0
        @[simp]
        theorem CliffordAlgebra.contractRight_one {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) (d : Module.Dual R M) :
        (CliffordAlgebra.contractRight 1) d = 0
        theorem CliffordAlgebra.contractLeft_contractLeft {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (d : Module.Dual R M) (x : CliffordAlgebra Q) :
        (CliffordAlgebra.contractLeft d) ((CliffordAlgebra.contractLeft d) x) = 0

        This is [grinberg_clifford_2016][] Theorem 7

        theorem CliffordAlgebra.contractRight_contractRight {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (d : Module.Dual R M) (x : CliffordAlgebra Q) :
        (CliffordAlgebra.contractRight ((CliffordAlgebra.contractRight x) d)) d = 0

        This is [grinberg_clifford_2016][] Theorem 13

        theorem CliffordAlgebra.contractLeft_comm {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (d : Module.Dual R M) (d' : Module.Dual R M) (x : CliffordAlgebra Q) :
        (CliffordAlgebra.contractLeft d) ((CliffordAlgebra.contractLeft d') x) = -(CliffordAlgebra.contractLeft d') ((CliffordAlgebra.contractLeft d) x)

        This is [grinberg_clifford_2016][] Theorem 8

        theorem CliffordAlgebra.contractRight_comm {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (d : Module.Dual R M) (d' : Module.Dual R M) (x : CliffordAlgebra Q) :
        (CliffordAlgebra.contractRight ((CliffordAlgebra.contractRight x) d)) d' = -(CliffordAlgebra.contractRight ((CliffordAlgebra.contractRight x) d')) d

        This is [grinberg_clifford_2016][] Theorem 14

        @[simp]
        theorem CliffordAlgebra.changeFormAux_apply_apply {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) (B : LinearMap.BilinForm R M) (a : M) (a : CliffordAlgebra Q) :
        ((CliffordAlgebra.changeFormAux Q B) a✝) a = (CliffordAlgebra.ι Q) a✝ * a - (CliffordAlgebra.contractLeft (B a✝)) a

        Auxiliary construction for CliffordAlgebra.changeForm

        Equations
        Instances For
          theorem CliffordAlgebra.changeFormAux_changeFormAux {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) (B : LinearMap.BilinForm R M) (v : M) (x : CliffordAlgebra Q) :
          ((CliffordAlgebra.changeFormAux Q B) v) (((CliffordAlgebra.changeFormAux Q B) v) x) = (Q v - (B v) v) x

          Convert between two algebras of different quadratic form, sending vector to vectors, scalars to scalars, and adjusting products by a contraction term.

          This is $\lambda_B$ from [bourbaki2007][] $9 Lemma 2.

          Equations
          Instances For

            Auxiliary lemma used as an argument to CliffordAlgebra.changeForm

            Auxiliary lemma used as an argument to CliffordAlgebra.changeForm

            Auxiliary lemma used as an argument to CliffordAlgebra.changeForm

            theorem CliffordAlgebra.changeForm.associated_neg_proof {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} [Invertible 2] :
            (QuadraticMap.associated (-Q)).toQuadraticMap = 0 - Q
            theorem CliffordAlgebra.changeForm_ι_mul {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {Q' : QuadraticForm R M} {B : LinearMap.BilinForm R M} (h : LinearMap.BilinMap.toQuadraticMap B = Q' - Q) (m : M) (x : CliffordAlgebra Q) :
            (CliffordAlgebra.changeForm h) ((CliffordAlgebra.ι Q) m * x) = (CliffordAlgebra.ι Q') m * (CliffordAlgebra.changeForm h) x - (CliffordAlgebra.contractLeft (B m)) ((CliffordAlgebra.changeForm h) x)
            theorem CliffordAlgebra.changeForm_ι_mul_ι {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {Q' : QuadraticForm R M} {B : LinearMap.BilinForm R M} (h : LinearMap.BilinMap.toQuadraticMap B = Q' - Q) (m₁ : M) (m₂ : M) :
            theorem CliffordAlgebra.changeForm_contractLeft {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {Q' : QuadraticForm R M} {B : LinearMap.BilinForm R M} (h : LinearMap.BilinMap.toQuadraticMap B = Q' - Q) (d : Module.Dual R M) (x : CliffordAlgebra Q) :
            (CliffordAlgebra.changeForm h) ((CliffordAlgebra.contractLeft d) x) = (CliffordAlgebra.contractLeft d) ((CliffordAlgebra.changeForm h) x)

            Theorem 23 of [grinberg_clifford_2016][]

            @[simp]
            theorem CliffordAlgebra.changeForm_self {R : Type u1} [CommRing R] {M : Type u2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} :
            CliffordAlgebra.changeForm = LinearMap.id

            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.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              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 divisible by two; but that would be more awkward to use.

              Equations
              Instances For

                A CliffordAlgebra over a nontrivial ring is nontrivial, in characteristic not two.

                Equations
                • =