Documentation

Mathlib.LinearAlgebra.CliffordAlgebra.Basic

Clifford Algebras #

We construct the Clifford algebra of a module M over a commutative ring R, equipped with a quadratic form Q.

Notation #

The Clifford algebra of the R-module M equipped with a quadratic form Q is an R-algebra denoted CliffordAlgebra Q.

Given a linear morphism f : M → A from a module M to another R-algebra A, such that cond : ∀ m, f m * f m = algebraMap _ _ (Q m), there is a (unique) lift of f to an R-algebra morphism from CliffordAlgebra Q to A, which is denoted CliffordAlgebra.lift Q f cond.

The canonical linear map M → CliffordAlgebra Q is denoted CliffordAlgebra.ι Q.

Theorems #

The main theorems proved ensure that CliffordAlgebra Q satisfies the universal property of the Clifford algebra.

  1. ι_comp_lift is the fact that the composition of ι Q with lift Q f cond agrees with f.
  2. lift_unique ensures the uniqueness of lift Q f cond with respect to 1.

Implementation details #

The Clifford algebra of M is constructed as a quotient of the tensor algebra, as follows.

  1. We define a relation CliffordAlgebra.Rel Q on TensorAlgebra R M. This is the smallest relation which identifies squares of elements of M with Q m.
  2. The Clifford algebra is the quotient of the tensor algebra by this relation.

This file is almost identical to Mathlib/LinearAlgebra/ExteriorAlgebra/Basic.lean.

inductive CliffordAlgebra.Rel {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) :

Rel relates each ι m * ι m, for m : M, with Q m.

The Clifford algebra of M is defined as the quotient modulo this relation.

Instances For
    def CliffordAlgebra {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) :
    Type (max u_2 u_1)

    The Clifford algebra of an R-module M equipped with a quadratic_form Q.

    Equations
      Instances For
        Equations
          instance CliffordAlgebra.instRing {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) :
          Equations
            @[instance 900]
            instance CliffordAlgebra.instAlgebra' {R : Type u_3} {A : Type u_4} {M : Type u_5} [CommSemiring R] [AddCommGroup M] [CommRing A] [Algebra R A] [Module R M] [Module A M] (Q : QuadraticForm A M) [IsScalarTower R A M] :
            Equations
              instance CliffordAlgebra.instAlgebra {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) :
              Equations
                instance CliffordAlgebra.instSMulCommClass {R : Type u_3} {S : Type u_4} {A : Type u_5} {M : Type u_6} [CommSemiring R] [CommSemiring S] [AddCommGroup M] [CommRing A] [Algebra R A] [Algebra S A] [Module R M] [Module S M] [Module A M] (Q : QuadraticForm A M) [IsScalarTower R A M] [IsScalarTower S A M] :
                instance CliffordAlgebra.instIsScalarTower {R : Type u_3} {S : Type u_4} {A : Type u_5} {M : Type u_6} [CommSemiring R] [CommSemiring S] [AddCommGroup M] [CommRing A] [SMul R S] [Algebra R A] [Algebra S A] [Module R M] [Module S M] [Module A M] [IsScalarTower R A M] [IsScalarTower S A M] [IsScalarTower R S A] (Q : QuadraticForm A M) :
                def CliffordAlgebra.ι {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) :

                The canonical linear map M →ₗ[R] CliffordAlgebra Q.

                Equations
                  Instances For
                    @[simp]
                    theorem CliffordAlgebra.ι_sq_scalar {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) (m : M) :
                    (ι Q) m * (ι Q) m = (algebraMap R (CliffordAlgebra Q)) (Q m)

                    As well as being linear, ι Q squares to the quadratic form

                    @[simp]
                    theorem CliffordAlgebra.comp_ι_sq_scalar {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {A : Type u_3} [Semiring A] [Algebra R A] (g : CliffordAlgebra Q →ₐ[R] A) (m : M) :
                    g ((ι Q) m) * g ((ι Q) m) = (algebraMap R A) (Q m)
                    def CliffordAlgebra.lift {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) {A : Type u_3} [Semiring A] [Algebra R A] :
                    { f : M →ₗ[R] A // ∀ (m : M), f m * f m = (algebraMap R A) (Q m) } (CliffordAlgebra Q →ₐ[R] A)

                    Given a linear map f : M →ₗ[R] A into an R-algebra A, which satisfies the condition: cond : ∀ m : M, f m * f m = Q(m), this is the canonical lift of f to a morphism of R-algebras from CliffordAlgebra Q to A.

                    Equations
                      Instances For
                        @[simp]
                        theorem CliffordAlgebra.lift_symm_apply {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) {A : Type u_3} [Semiring A] [Algebra R A] (F : CliffordAlgebra Q →ₐ[R] A) :
                        @[simp]
                        theorem CliffordAlgebra.ι_comp_lift {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {A : Type u_3} [Semiring A] [Algebra R A] (f : M →ₗ[R] A) (cond : ∀ (m : M), f m * f m = (algebraMap R A) (Q m)) :
                        ((lift Q) f, cond).toLinearMap ∘ₗ ι Q = f
                        @[simp]
                        theorem CliffordAlgebra.lift_ι_apply {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {A : Type u_3} [Semiring A] [Algebra R A] (f : M →ₗ[R] A) (cond : ∀ (m : M), f m * f m = (algebraMap R A) (Q m)) (x : M) :
                        ((lift Q) f, cond) ((ι Q) x) = f x
                        @[simp]
                        theorem CliffordAlgebra.lift_unique {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {A : Type u_3} [Semiring A] [Algebra R A] (f : M →ₗ[R] A) (cond : ∀ (m : M), f m * f m = (algebraMap R A) (Q m)) (g : CliffordAlgebra Q →ₐ[R] A) :
                        g.toLinearMap ∘ₗ ι Q = f g = (lift Q) f, cond
                        @[simp]
                        theorem CliffordAlgebra.lift_comp_ι {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {A : Type u_3} [Semiring A] [Algebra R A] (g : CliffordAlgebra Q →ₐ[R] A) :
                        theorem CliffordAlgebra.hom_ext {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {A : Type u_4} [Semiring A] [Algebra R A] {f g : CliffordAlgebra Q →ₐ[R] A} :

                        See note [partially-applied ext lemmas].

                        theorem CliffordAlgebra.hom_ext_iff {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {A : Type u_4} [Semiring A] [Algebra R A] {f g : CliffordAlgebra Q →ₐ[R] A} :
                        theorem CliffordAlgebra.induction {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {C : CliffordAlgebra QProp} (algebraMap : ∀ (r : R), C ((algebraMap R (CliffordAlgebra Q)) r)) (ι : ∀ (x : M), C ((ι Q) x)) (mul : ∀ (a b : CliffordAlgebra Q), C aC bC (a * b)) (add : ∀ (a b : CliffordAlgebra Q), C aC bC (a + b)) (a : CliffordAlgebra Q) :
                        C a

                        If C holds for the algebraMap of r : R into CliffordAlgebra Q, the ι of x : M, and is preserved under addition and multiplication, then it holds for all of CliffordAlgebra Q.

                        See also the stronger CliffordAlgebra.left_induction and CliffordAlgebra.right_induction.

                        @[simp]
                        theorem CliffordAlgebra.adjoin_range_ι {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} :
                        @[simp]
                        theorem CliffordAlgebra.range_lift {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {A : Type u_3} [Semiring A] [Algebra R A] (f : M →ₗ[R] A) (cond : ∀ (m : M), f m * f m = (algebraMap R A) (Q m)) :
                        ((lift Q) f, cond).range = Algebra.adjoin R (Set.range f)
                        theorem CliffordAlgebra.mul_add_swap_eq_polar_of_forall_mul_self_eq {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {A : Type u_4} [Ring A] [Algebra R A] (f : M →ₗ[R] A) (hf : ∀ (x : M), f x * f x = (algebraMap R A) (Q x)) (a b : M) :
                        f a * f b + f b * f a = (algebraMap R A) (QuadraticMap.polar (⇑Q) a b)
                        theorem CliffordAlgebra.forall_mul_self_eq_iff {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {A : Type u_4} [Ring A] [Algebra R A] (h2 : IsUnit 2) (f : M →ₗ[R] A) :

                        An alternative way to provide the argument to CliffordAlgebra.lift when 2 is invertible.

                        To show a function squares to the quadratic form, it suffices to show that f x * f y + f y * f x = algebraMap _ _ (polar Q x y)

                        theorem CliffordAlgebra.ι_mul_ι_add_swap {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (a b : M) :
                        (ι Q) a * (ι Q) b + (ι Q) b * (ι Q) a = (algebraMap R (CliffordAlgebra Q)) (QuadraticMap.polar (⇑Q) a b)

                        The symmetric product of vectors is a scalar

                        theorem CliffordAlgebra.ι_mul_ι_comm {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (a b : M) :
                        (ι Q) a * (ι Q) b = (algebraMap R (CliffordAlgebra Q)) (QuadraticMap.polar (⇑Q) a b) - (ι Q) b * (ι Q) a
                        @[simp]
                        theorem CliffordAlgebra.ι_mul_ι_add_swap_of_isOrtho {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {a b : M} (h : QuadraticMap.IsOrtho Q a b) :
                        (ι Q) a * (ι Q) b + (ι Q) b * (ι Q) a = 0
                        theorem CliffordAlgebra.ι_mul_ι_comm_of_isOrtho {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {a b : M} (h : QuadraticMap.IsOrtho Q a b) :
                        (ι Q) a * (ι Q) b = -((ι Q) b * (ι Q) a)
                        theorem CliffordAlgebra.mul_ι_mul_ι_of_isOrtho {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : CliffordAlgebra Q) {a b : M} (h : QuadraticMap.IsOrtho Q a b) :
                        x * (ι Q) a * (ι Q) b = -(x * (ι Q) b * (ι Q) a)
                        theorem CliffordAlgebra.ι_mul_ι_mul_of_isOrtho {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : CliffordAlgebra Q) {a b : M} (h : QuadraticMap.IsOrtho Q a b) :
                        (ι Q) a * ((ι Q) b * x) = -((ι Q) b * ((ι Q) a * x))
                        theorem CliffordAlgebra.ι_mul_ι_mul_ι {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (a b : M) :
                        (ι Q) a * (ι Q) b * (ι Q) a = (ι Q) (QuadraticMap.polar (⇑Q) a b a - Q a b)

                        $aba$ is a vector.

                        @[simp]
                        theorem CliffordAlgebra.ι_range_map_lift {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {A : Type u_3} [Semiring A] [Algebra R A] (f : M →ₗ[R] A) (cond : ∀ (m : M), f m * f m = (algebraMap R A) (Q m)) :
                        def CliffordAlgebra.map {R : Type u_1} [CommRing R] {M₁ : Type u_4} {M₂ : Type u_5} [AddCommGroup M₁] [AddCommGroup M₂] [Module R M₁] [Module R M₂] {Q₁ : QuadraticForm R M₁} {Q₂ : QuadraticForm R M₂} (f : Q₁ →qᵢ Q₂) :

                        Any linear map that preserves the quadratic form lifts to an AlgHom between algebras.

                        See CliffordAlgebra.equivOfIsometry for the case when f is a QuadraticForm.IsometryEquiv.

                        Equations
                          Instances For
                            @[simp]
                            theorem CliffordAlgebra.map_comp_ι {R : Type u_1} [CommRing R] {M₁ : Type u_4} {M₂ : Type u_5} [AddCommGroup M₁] [AddCommGroup M₂] [Module R M₁] [Module R M₂] {Q₁ : QuadraticForm R M₁} {Q₂ : QuadraticForm R M₂} (f : Q₁ →qᵢ Q₂) :
                            @[simp]
                            theorem CliffordAlgebra.map_apply_ι {R : Type u_1} [CommRing R] {M₁ : Type u_4} {M₂ : Type u_5} [AddCommGroup M₁] [AddCommGroup M₂] [Module R M₁] [Module R M₂] {Q₁ : QuadraticForm R M₁} {Q₂ : QuadraticForm R M₂} (f : Q₁ →qᵢ Q₂) (m : M₁) :
                            (map f) ((ι Q₁) m) = (ι Q₂) (f m)
                            @[simp]
                            theorem CliffordAlgebra.map_id {R : Type u_1} [CommRing R] {M₁ : Type u_4} [AddCommGroup M₁] [Module R M₁] (Q₁ : QuadraticForm R M₁) :
                            @[simp]
                            theorem CliffordAlgebra.map_comp_map {R : Type u_1} [CommRing R] {M₁ : Type u_4} {M₂ : Type u_5} {M₃ : Type u_6} [AddCommGroup M₁] [AddCommGroup M₂] [AddCommGroup M₃] [Module R M₁] [Module R M₂] [Module R M₃] {Q₁ : QuadraticForm R M₁} {Q₂ : QuadraticForm R M₂} {Q₃ : QuadraticForm R M₃} (f : Q₂ →qᵢ Q₃) (g : Q₁ →qᵢ Q₂) :
                            (map f).comp (map g) = map (f.comp g)
                            @[simp]
                            theorem CliffordAlgebra.ι_range_map_map {R : Type u_1} [CommRing R] {M₁ : Type u_4} {M₂ : Type u_5} [AddCommGroup M₁] [AddCommGroup M₂] [Module R M₁] [Module R M₂] {Q₁ : QuadraticForm R M₁} {Q₂ : QuadraticForm R M₂} (f : Q₁ →qᵢ Q₂) :
                            theorem CliffordAlgebra.leftInverse_map_of_leftInverse {R : Type u_1} [CommRing R] {M₁ : Type u_4} {M₂ : Type u_5} [AddCommGroup M₁] [AddCommGroup M₂] [Module R M₁] [Module R M₂] {Q₁ : QuadraticForm R M₁} {Q₂ : QuadraticForm R M₂} (f : Q₁ →qᵢ Q₂) (g : Q₂ →qᵢ Q₁) (h : Function.LeftInverse g f) :

                            If f is a linear map from M₁ to M₂ that preserves the quadratic forms, and if it has a linear retraction g that also preserves the quadratic forms, then CliffordAlgebra.map g is a retraction of CliffordAlgebra.map f.

                            theorem CliffordAlgebra.map_surjective {R : Type u_1} [CommRing R] {M₁ : Type u_4} {M₂ : Type u_5} [AddCommGroup M₁] [AddCommGroup M₂] [Module R M₁] [Module R M₂] {Q₁ : QuadraticForm R M₁} {Q₂ : QuadraticForm R M₂} (f : Q₁ →qᵢ Q₂) (hf : Function.Surjective f) :

                            If a linear map preserves the quadratic forms and is surjective, then the algebra maps it induces between Clifford algebras is also surjective.

                            def CliffordAlgebra.equivOfIsometry {R : Type u_1} [CommRing R] {M₁ : Type u_4} {M₂ : Type u_5} [AddCommGroup M₁] [AddCommGroup M₂] [Module R M₁] [Module R M₂] {Q₁ : QuadraticForm R M₁} {Q₂ : QuadraticForm R M₂} (e : QuadraticMap.IsometryEquiv Q₁ Q₂) :

                            Two CliffordAlgebras are equivalent as algebras if their quadratic forms are equivalent.

                            Equations
                              Instances For
                                @[simp]
                                theorem CliffordAlgebra.equivOfIsometry_apply {R : Type u_1} [CommRing R] {M₁ : Type u_4} {M₂ : Type u_5} [AddCommGroup M₁] [AddCommGroup M₂] [Module R M₁] [Module R M₂] {Q₁ : QuadraticForm R M₁} {Q₂ : QuadraticForm R M₂} (e : QuadraticMap.IsometryEquiv Q₁ Q₂) (a : CliffordAlgebra Q₁) :
                                @[simp]
                                theorem CliffordAlgebra.equivOfIsometry_symm {R : Type u_1} [CommRing R] {M₁ : Type u_4} {M₂ : Type u_5} [AddCommGroup M₁] [AddCommGroup M₂] [Module R M₁] [Module R M₂] {Q₁ : QuadraticForm R M₁} {Q₂ : QuadraticForm R M₂} (e : QuadraticMap.IsometryEquiv Q₁ Q₂) :
                                @[simp]
                                theorem CliffordAlgebra.equivOfIsometry_trans {R : Type u_1} [CommRing R] {M₁ : Type u_4} {M₂ : Type u_5} {M₃ : Type u_6} [AddCommGroup M₁] [AddCommGroup M₂] [AddCommGroup M₃] [Module R M₁] [Module R M₂] [Module R M₃] {Q₁ : QuadraticForm R M₁} {Q₂ : QuadraticForm R M₂} {Q₃ : QuadraticForm R M₃} (e₁₂ : QuadraticMap.IsometryEquiv Q₁ Q₂) (e₂₃ : QuadraticMap.IsometryEquiv Q₂ Q₃) :
                                (equivOfIsometry e₁₂).trans (equivOfIsometry e₂₃) = equivOfIsometry (e₁₂.trans e₂₃)

                                The canonical image of the TensorAlgebra in the CliffordAlgebra, which maps TensorAlgebra.ι R x to CliffordAlgebra.ι Q x.

                                Equations
                                  Instances For
                                    @[simp]
                                    theorem TensorAlgebra.toClifford_ι {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (m : M) :