mathlibdocumentation

linear_algebra.clifford_algebra.even

The universal property of the even subalgebra #

Main definitions #

• clifford_algebra.even Q: The even subalgebra of clifford_algebra Q.
• clifford_algebra.even_hom: The type of bilinear maps that satisfy the universal property of the even subalgebra
• clifford_algebra.even.lift: The universal property of the even subalgebra, which states that every bilinear map f with f v v = Q v and f u v * f v w = Q v • f u w is in unique correspondence with an algebra morphism from clifford_algebra.even Q.

Implementation notes #

The approach here is outlined in "Computing with the universal properties of the Clifford algebra and the even subalgebra" (to appear).

The broad summary is that we have two tricks available to us for implementing complex recursors on top of clifford_algebra.lift: the first is to use morphisms as the output type, such as A = module.End R N which is how we obtained clifford_algebra.foldr; and the second is to use N = (N', S) where N' is the value we wish to compute, and S is some auxiliary state passed between one recursor invocation and the next. For the universal property of the even subalgebra, we apply a variant of the first trick again by choosing S to itself be a submodule of morphisms.

def clifford_algebra.even {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] (Q : M) :

The even submodule clifford_algebra.even_odd Q 0 is also a subalgebra.

Equations
@[simp]
theorem clifford_algebra.even_to_submodule {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] (Q : M) :
@[ext]
structure clifford_algebra.even_hom {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] (Q : M) (A : Type u_3) [ring A] [ A] :
Type (max u_2 u_3)

The type of bilinear maps which are accepted by clifford_algebra.even.lift.

Instances for clifford_algebra.even_hom
theorem clifford_algebra.even_hom.ext_iff {R : Type u_1} {M : Type u_2} {_inst_1 : comm_ring R} {_inst_2 : add_comm_group M} {_inst_3 : M} {Q : M} {A : Type u_3} {_inst_4 : ring A} {_inst_6 : A} (x y : A) :
x = y x.bilin = y.bilin
theorem clifford_algebra.even_hom.ext {R : Type u_1} {M : Type u_2} {_inst_1 : comm_ring R} {_inst_2 : add_comm_group M} {_inst_3 : M} {Q : M} {A : Type u_3} {_inst_4 : ring A} {_inst_6 : A} (x y : A) (h : x.bilin = y.bilin) :
x = y
def clifford_algebra.even_hom.compr₂ {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] {Q : M} {A : Type u_3} {B : Type u_4} [ring A] [ring B] [ A] [ B] (g : A) (f : A →ₐ[R] B) :

Compose an even_hom with an alg_hom on the output.

Equations
@[simp]
theorem clifford_algebra.even_hom.compr₂_bilin {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] {Q : M} {A : Type u_3} {B : Type u_4} [ring A] [ring B] [ A] [ B] (g : A) (f : A →ₐ[R] B) :
@[simp]
theorem clifford_algebra.even.ι_bilin_apply_apply_coe {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] (Q : M) (m m₂ : M) :
((.bilin) m) m₂) = m * m₂
def clifford_algebra.even.ι {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] (Q : M) :

The embedding of pairs of vectors into the even subalgebra, as a bilinear map.

Equations
@[protected, instance]
def clifford_algebra.even_hom.inhabited {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] (Q : M) :
Equations
@[ext]
theorem clifford_algebra.even.alg_hom_ext {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] (Q : M) {A : Type u_3} [ring A] [ A] ⦃f g : →ₐ[R] A⦄ (h : = ) :
f = g

Two algebra morphisms from the even subalgebra are equal if they agree on pairs of generators.

def clifford_algebra.even.lift.aux {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] {Q : M} {A : Type u_3} [ring A] [ A] (f : A) :

The final auxiliary construction for clifford_algebra.even.lift. This map is the forwards direction of that equivalence, but not in the fully-bundled form.

Equations
theorem clifford_algebra.even.lift.aux_apply {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] {Q : M} {A : Type u_3} [ring A] [ A] (f : A) (ᾰ : ) :
= (( (f_fold f) _) (1, 0)) ᾰ).fst
@[simp]
theorem clifford_algebra.even.lift.aux_one {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] {Q : M} {A : Type u_3} [ring A] [ A] (f : A) :
@[simp]
theorem clifford_algebra.even.lift.aux_ι {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] {Q : M} {A : Type u_3} [ring A] [ A] (f : A) (m₁ m₂ : M) :
((.bilin) m₁) m₂) = ((f.bilin) m₁) m₂
@[simp]
theorem clifford_algebra.even.lift.aux_algebra_map {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] {Q : M} {A : Type u_3} [ring A] [ A] (f : A) (r : R) (hr : (clifford_algebra Q)) r ) :
(clifford_algebra Q)) r, hr⟩ = A) r
@[simp]
theorem clifford_algebra.even.lift.aux_mul {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] {Q : M} {A : Type u_3} [ring A] [ A] (f : A) (x y : ) :
(x * y) =
@[simp]
theorem clifford_algebra.even.lift_symm_apply_bilin {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] (Q : M) {A : Type u_3} [ring A] [ A] (F : →ₐ[R] A) :
( F).bilin =
def clifford_algebra.even.lift {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] (Q : M) {A : Type u_3} [ring A] [ A] :

Every algebra morphism from the even subalgebra is in one-to-one correspondence with a bilinear map that sends duplicate arguments to the quadratic form, and contracts across multiplication.

Equations
@[simp]
theorem clifford_algebra.even.lift_ι {R : Type u_1} {M : Type u_2} [comm_ring R] [ M] (Q : M) {A : Type u_3} [ring A] [ A] (f : A) (m₁ m₂ : M) :
f) ((.bilin) m₁) m₂) = ((f.bilin) m₁) m₂