# The universal property of the even subalgebra #

## Main definitions #

• CliffordAlgebra.even Q: The even subalgebra of CliffordAlgebra Q.
• CliffordAlgebra.EvenHom: The type of bilinear maps that satisfy the universal property of the even subalgebra
• CliffordAlgebra.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 CliffordAlgebra.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 CliffordAlgebra.lift: the first is to use morphisms as the output type, such as A = Module.End R N which is how we obtained CliffordAlgebra.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 CliffordAlgebra.even {R : Type uR} {M : Type uM} [] [] [Module R M] (Q : ) :

The even submodule CliffordAlgebra.evenOdd Q 0 is also a subalgebra.

Equations
• = ().toSubalgebra
Instances For
instance CliffordAlgebra.instAddCommMonoidSubtypeMemSubalgebraEven {R : Type uR} {M : Type uM} [] [] [Module R M] (Q : ) :
Equations
@[simp]
theorem CliffordAlgebra.even_toSubmodule {R : Type uR} {M : Type uM} [] [] [Module R M] (Q : ) :
Subalgebra.toSubmodule =
theorem CliffordAlgebra.EvenHom.ext {R : Type uR} {M : Type uM} :
∀ {inst : } {inst_1 : } {inst_2 : Module R M} {Q : } {A : Type uA} {inst_3 : Ring A} {inst_4 : Algebra R A} (x y : ), x.bilin = y.bilinx = y
theorem CliffordAlgebra.EvenHom.ext_iff {R : Type uR} {M : Type uM} :
∀ {inst : } {inst_1 : } {inst_2 : Module R M} {Q : } {A : Type uA} {inst_3 : Ring A} {inst_4 : Algebra R A} (x y : ), x = y x.bilin = y.bilin
structure CliffordAlgebra.EvenHom {R : Type uR} {M : Type uM} [] [] [Module R M] (Q : ) (A : Type uA) [Ring A] [Algebra R A] :
Type (max uA uM)

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

• bilin : M →ₗ[R] M →ₗ[R] A
• contract : ∀ (m : M), (self.bilin m) m = () (Q m)
• contract_mid : ∀ (m₁ m₂ m₃ : M), (self.bilin m₁) m₂ * (self.bilin m₂) m₃ = Q m₂ (self.bilin m₁) m₃
Instances For
theorem CliffordAlgebra.EvenHom.contract {R : Type uR} {M : Type uM} [] [] [Module R M] {Q : } {A : Type uA} [Ring A] [Algebra R A] (self : ) (m : M) :
(self.bilin m) m = () (Q m)
theorem CliffordAlgebra.EvenHom.contract_mid {R : Type uR} {M : Type uM} [] [] [Module R M] {Q : } {A : Type uA} [Ring A] [Algebra R A] (self : ) (m₁ : M) (m₂ : M) (m₃ : M) :
(self.bilin m₁) m₂ * (self.bilin m₂) m₃ = Q m₂ (self.bilin m₁) m₃
@[simp]
theorem CliffordAlgebra.EvenHom.compr₂_bilin {R : Type uR} {M : Type uM} [] [] [Module R M] {Q : } {A : Type uA} {B : Type uB} [Ring A] [Ring B] [Algebra R A] [Algebra R B] (g : ) (f : A →ₐ[R] B) :
(g.compr₂ f).bilin = g.bilin.compr₂ f.toLinearMap
def CliffordAlgebra.EvenHom.compr₂ {R : Type uR} {M : Type uM} [] [] [Module R M] {Q : } {A : Type uA} {B : Type uB} [Ring A] [Ring B] [Algebra R A] [Algebra R B] (g : ) (f : A →ₐ[R] B) :

Compose an EvenHom with an AlgHom on the output.

Equations
• g.compr₂ f = { bilin := g.bilin.compr₂ f.toLinearMap, contract := , contract_mid := }
Instances For
def CliffordAlgebra.even.ι {R : Type uR} {M : Type uM} [] [] [Module R M] (Q : ) :

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

Equations
• = { bilin := LinearMap.mk₂ R (fun (m₁ m₂ : M) => m₁ * m₂, ) , contract := , contract_mid := }
Instances For
instance CliffordAlgebra.instInhabitedEvenHomSubtypeMemSubalgebraEven {R : Type uR} {M : Type uM} [] [] [Module R M] (Q : ) :
Equations
theorem CliffordAlgebra.even.algHom_ext {R : Type uR} {M : Type uM} [] [] [Module R M] (Q : ) {A : Type uA} [Ring A] [Algebra R A] ⦃f : →ₐ[R] A ⦃g : →ₐ[R] A (h : .compr₂ f = .compr₂ g) :
f = g

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

See note [partially-applied ext lemmas].

theorem CliffordAlgebra.even.lift.aux_apply {R : Type uR} {M : Type uM} [] [] [Module R M] {Q : } {A : Type uA} [Ring A] [Algebra R A] (f : ) :
∀ (a : ), = (( (1, 0)) a).1
def CliffordAlgebra.even.lift.aux {R : Type uR} {M : Type uM} [] [] [Module R M] {Q : } {A : Type uA} [Ring A] [Algebra R A] (f : ) :
→ₗ[R] A

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

Equations
• One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem CliffordAlgebra.even.lift.aux_one {R : Type uR} {M : Type uM} [] [] [Module R M] {Q : } {A : Type uA} [Ring A] [Algebra R A] (f : ) :
@[simp]
theorem CliffordAlgebra.even.lift.aux_ι {R : Type uR} {M : Type uM} [] [] [Module R M] {Q : } {A : Type uA} [Ring A] [Algebra R A] (f : ) (m₁ : M) (m₂ : M) :
((.bilin m₁) m₂) = (f.bilin m₁) m₂
@[simp]
theorem CliffordAlgebra.even.lift.aux_algebraMap {R : Type uR} {M : Type uM} [] [] [Module R M] {Q : } {A : Type uA} [Ring A] [Algebra R A] (f : ) (r : R) (hr : () r ) :
() r, hr = () r
@[simp]
theorem CliffordAlgebra.even.lift.aux_mul {R : Type uR} {M : Type uM} [] [] [Module R M] {Q : } {A : Type uA} [Ring A] [Algebra R A] (f : ) (x : ) (y : ) :
(x * y) =
@[simp]
theorem CliffordAlgebra.even.lift_symm_apply_bilin {R : Type uR} {M : Type uM} [] [] [Module R M] (Q : ) {A : Type uA} [Ring A] [Algebra R A] (F : →ₐ[R] A) :
(.symm F).bilin = .bilin.compr₂ F.toLinearMap
def CliffordAlgebra.even.lift {R : Type uR} {M : Type uM} [] [] [Module R M] (Q : ) {A : Type uA} [Ring A] [Algebra R A] :
( →ₐ[R] 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
• One or more equations did not get rendered due to their size.
Instances For
theorem CliffordAlgebra.even.lift_ι {R : Type uR} {M : Type uM} [] [] [Module R M] (Q : ) {A : Type uA} [Ring A] [Algebra R A] (f : ) (m₁ : M) (m₂ : M) :
() ((.bilin m₁) m₂) = (f.bilin m₁) m₂