mathlib documentation

linear_algebra.clifford_algebra.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 clifford_algebra 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 = algebra_map _ _ (Q m), there is a (unique) lift of f to an R-algebra morphism from clifford_algebra Q to A, which is denoted clifford_algebra.lift Q f cond.

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

Theorems #

The main theorems proved ensure that clifford_algebra 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.

Additionally, when Q = 0 an alg_equiv to the exterior_algebra is provided as as_exterior.

Implementation details #

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

  1. We define a relation clifford_algebra.rel Q on tensor_algebra 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 linear_algebra/exterior_algebra.lean.

inductive clifford_algebra.rel {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] (Q : quadratic_form R M) :
tensor_algebra R Mtensor_algebra R M → Prop

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

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

@[protected, instance]
def clifford_algebra.inhabited {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] (Q : quadratic_form R M) :
@[irreducible]
def clifford_algebra {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] (Q : quadratic_form R M) :
Type (max u_1 u_2)

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

Equations
Instances for clifford_algebra
@[protected, instance]
def clifford_algebra.algebra {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] (Q : quadratic_form R M) :
@[protected, instance]
def clifford_algebra.ring {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] (Q : quadratic_form R M) :
@[irreducible]
def clifford_algebra.ι {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] (Q : quadratic_form R M) :

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

Equations
@[simp]
theorem clifford_algebra.ι_sq_scalar {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] (Q : quadratic_form R M) (m : M) :

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

@[simp]
theorem clifford_algebra.comp_ι_sq_scalar {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] {Q : quadratic_form R M} {A : Type u_3} [semiring A] [algebra R A] (g : clifford_algebra Q →ₐ[R] A) (m : M) :
@[irreducible]
def clifford_algebra.lift {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] (Q : quadratic_form R M) {A : Type u_3} [semiring A] [algebra R A] :
{f // ∀ (m : M), f m * f m = (algebra_map R A) (Q m)} (clifford_algebra 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 clifford_algebra Q to A.

Equations
@[simp]
theorem clifford_algebra.lift_symm_apply {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] (Q : quadratic_form R M) {A : Type u_3} [semiring A] [algebra R A] (F : clifford_algebra Q →ₐ[R] A) :
@[simp]
theorem clifford_algebra.ι_comp_lift {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] {Q : quadratic_form R M} {A : Type u_3} [semiring A] [algebra R A] (f : M →ₗ[R] A) (cond : ∀ (m : M), f m * f m = (algebra_map R A) (Q m)) :
@[simp]
theorem clifford_algebra.lift_ι_apply {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] {Q : quadratic_form R M} {A : Type u_3} [semiring A] [algebra R A] (f : M →ₗ[R] A) (cond : ∀ (m : M), f m * f m = (algebra_map R A) (Q m)) (x : M) :
@[simp]
theorem clifford_algebra.lift_unique {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] {Q : quadratic_form R M} {A : Type u_3} [semiring A] [algebra R A] (f : M →ₗ[R] A) (cond : ∀ (m : M), f m * f m = (algebra_map R A) (Q m)) (g : clifford_algebra Q →ₐ[R] A) :
@[simp]
theorem clifford_algebra.lift_comp_ι {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] {Q : quadratic_form R M} {A : Type u_3} [semiring A] [algebra R A] (g : clifford_algebra Q →ₐ[R] A) :
@[ext]
theorem clifford_algebra.hom_ext {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] {Q : quadratic_form R M} {A : Type u_3} [semiring A] [algebra R A] {f g : clifford_algebra Q →ₐ[R] A} :

See note [partially-applied ext lemmas].

theorem clifford_algebra.induction {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] {Q : quadratic_form R M} {C : clifford_algebra Q → Prop} (h_grade0 : ∀ (r : R), C ((algebra_map R (clifford_algebra Q)) r)) (h_grade1 : ∀ (x : M), C ((clifford_algebra.ι Q) x)) (h_mul : ∀ (a b : clifford_algebra Q), C aC bC (a * b)) (h_add : ∀ (a b : clifford_algebra Q), C aC bC (a + b)) (a : clifford_algebra Q) :
C a

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

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

The symmetric product of vectors is a scalar

@[simp]
theorem clifford_algebra.ι_range_map_lift {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] {Q : quadratic_form R M} {A : Type u_3} [semiring A] [algebra R A] (f : M →ₗ[R] A) (cond : ∀ (m : M), f m * f m = (algebra_map R A) (Q m)) :
def clifford_algebra.map {R : Type u_1} [comm_ring R] {M₁ : Type u_4} {M₂ : Type u_5} [add_comm_group M₁] [add_comm_group M₂] [module R M₁] [module R M₂] (Q₁ : quadratic_form R M₁) (Q₂ : quadratic_form R M₂) (f : M₁ →ₗ[R] M₂) (hf : ∀ (m : M₁), Q₂ (f m) = Q₁ m) :

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

See clifford_algebra.equiv_of_isometry for the case when f is a quadratic_form.isometry.

Equations
@[simp]
theorem clifford_algebra.map_comp_ι {R : Type u_1} [comm_ring R] {M₁ : Type u_4} {M₂ : Type u_5} [add_comm_group M₁] [add_comm_group M₂] [module R M₁] [module R M₂] (Q₁ : quadratic_form R M₁) (Q₂ : quadratic_form R M₂) (f : M₁ →ₗ[R] M₂) (hf : ∀ (m : M₁), Q₂ (f m) = Q₁ m) :
@[simp]
theorem clifford_algebra.map_apply_ι {R : Type u_1} [comm_ring R] {M₁ : Type u_4} {M₂ : Type u_5} [add_comm_group M₁] [add_comm_group M₂] [module R M₁] [module R M₂] (Q₁ : quadratic_form R M₁) (Q₂ : quadratic_form R M₂) (f : M₁ →ₗ[R] M₂) (hf : ∀ (m : M₁), Q₂ (f m) = Q₁ m) (m : M₁) :
@[simp]
theorem clifford_algebra.map_id {R : Type u_1} [comm_ring R] {M₁ : Type u_4} [add_comm_group M₁] [module R M₁] (Q₁ : quadratic_form R M₁) :
@[simp]
theorem clifford_algebra.map_comp_map {R : Type u_1} [comm_ring R] {M₁ : Type u_4} {M₂ : Type u_5} {M₃ : Type u_6} [add_comm_group M₁] [add_comm_group M₂] [add_comm_group M₃] [module R M₁] [module R M₂] [module R M₃] (Q₁ : quadratic_form R M₁) (Q₂ : quadratic_form R M₂) (Q₃ : quadratic_form R M₃) (f : M₂ →ₗ[R] M₃) (hf : ∀ (m : M₂), Q₃ (f m) = Q₂ m) (g : M₁ →ₗ[R] M₂) (hg : ∀ (m : M₁), Q₂ (g m) = Q₁ m) :
(clifford_algebra.map Q₂ Q₃ f hf).comp (clifford_algebra.map Q₁ Q₂ g hg) = clifford_algebra.map Q₁ Q₃ (f.comp g) _
@[simp]
theorem clifford_algebra.ι_range_map_map {R : Type u_1} [comm_ring R] {M₁ : Type u_4} {M₂ : Type u_5} [add_comm_group M₁] [add_comm_group M₂] [module R M₁] [module R M₂] (Q₁ : quadratic_form R M₁) (Q₂ : quadratic_form R M₂) (f : M₁ →ₗ[R] M₂) (hf : ∀ (m : M₁), Q₂ (f m) = Q₁ m) :
def clifford_algebra.equiv_of_isometry {R : Type u_1} [comm_ring R] {M₁ : Type u_4} {M₂ : Type u_5} [add_comm_group M₁] [add_comm_group M₂] [module R M₁] [module R M₂] {Q₁ : quadratic_form R M₁} {Q₂ : quadratic_form R M₂} (e : Q₁.isometry Q₂) :

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

Equations
@[simp]
theorem clifford_algebra.equiv_of_isometry_apply {R : Type u_1} [comm_ring R] {M₁ : Type u_4} {M₂ : Type u_5} [add_comm_group M₁] [add_comm_group M₂] [module R M₁] [module R M₂] {Q₁ : quadratic_form R M₁} {Q₂ : quadratic_form R M₂} (e : Q₁.isometry Q₂) (ᾰ : clifford_algebra Q₁) :
@[simp]
theorem clifford_algebra.equiv_of_isometry_symm {R : Type u_1} [comm_ring R] {M₁ : Type u_4} {M₂ : Type u_5} [add_comm_group M₁] [add_comm_group M₂] [module R M₁] [module R M₂] {Q₁ : quadratic_form R M₁} {Q₂ : quadratic_form R M₂} (e : Q₁.isometry Q₂) :
@[simp]
theorem clifford_algebra.equiv_of_isometry_trans {R : Type u_1} [comm_ring R] {M₁ : Type u_4} {M₂ : Type u_5} {M₃ : Type u_6} [add_comm_group M₁] [add_comm_group M₂] [add_comm_group M₃] [module R M₁] [module R M₂] [module R M₃] {Q₁ : quadratic_form R M₁} {Q₂ : quadratic_form R M₂} {Q₃ : quadratic_form R M₃} (e₁₂ : Q₁.isometry Q₂) (e₂₃ : Q₂.isometry Q₃) :
def clifford_algebra.invertible_ι_of_invertible {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] (Q : quadratic_form R M) (m : M) [invertible (Q m)] :

If the quadratic form of a vector is invertible, then so is that vector.

Equations
theorem clifford_algebra.inv_of_ι {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] (Q : quadratic_form R M) (m : M) [invertible (Q m)] [invertible ((clifford_algebra.ι Q) m)] :

For a vector with invertible quadratic form, $v^{-1} = \frac{v}{Q(v)}$

theorem clifford_algebra.is_unit_ι_of_is_unit {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] (Q : quadratic_form R M) {m : M} (h : is_unit (Q m)) :
@[simp]
theorem tensor_algebra.to_clifford_ι {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] {Q : quadratic_form R M} (m : M) :