The universal property of the even subalgebra #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Main definitions #
clifford_algebra.even Q
: The even subalgebra ofclifford_algebra Q
.clifford_algebra.even_hom
: The type of bilinear maps that satisfy the universal property of the even subalgebraclifford_algebra.even.lift
: The universal property of the even subalgebra, which states that every bilinear mapf
withf v v = Q v
andf u v * f v w = Q v • f u w
is in unique correspondence with an algebra morphism fromclifford_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.
The even submodule clifford_algebra.even_odd Q 0
is also a subalgebra.
Equations
- clifford_algebra.even Q = (clifford_algebra.even_odd Q 0).to_subalgebra _ _
- bilin : M →ₗ[R] M →ₗ[R] A
- contract : ∀ (m : M), ⇑(⇑(self.bilin) m) m = ⇑(algebra_map R A) (⇑Q m)
- contract_mid : ∀ (m₁ m₂ m₃ : M), ⇑(⇑(self.bilin) m₁) m₂ * ⇑(⇑(self.bilin) m₂) m₃ = ⇑Q m₂ • ⇑(⇑(self.bilin) m₁) m₃
The type of bilinear maps which are accepted by clifford_algebra.even.lift
.
Instances for clifford_algebra.even_hom
- clifford_algebra.even_hom.has_sizeof_inst
- clifford_algebra.even_hom.inhabited
Compose an even_hom
with an alg_hom
on the output.
Equations
- g.compr₂ f = {bilin := g.bilin.compr₂ f.to_linear_map, contract := _, contract_mid := _}
The embedding of pairs of vectors into the even subalgebra, as a bilinear map.
Equations
- clifford_algebra.even.ι Q = {bilin := linear_map.mk₂ R (λ (m₁ m₂ : M), ⟨⇑(clifford_algebra.ι Q) m₁ * ⇑(clifford_algebra.ι Q) m₂, _⟩) _ _ _ _, contract := _, contract_mid := _}
Equations
Two algebra morphisms from the even subalgebra are equal if they agree on pairs of generators.
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
- clifford_algebra.even.lift.aux f = ((linear_map.fst R A ↥(S f)).comp (⇑(clifford_algebra.foldr Q (f_fold f) _) (1, 0))).comp (clifford_algebra.even Q).val.to_linear_map
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
- clifford_algebra.even.lift Q = {to_fun := λ (f : clifford_algebra.even_hom Q A), alg_hom.of_linear_map (clifford_algebra.even.lift.aux f) _ _, inv_fun := λ (F : ↥(clifford_algebra.even Q) →ₐ[R] A), (clifford_algebra.even.ι Q).compr₂ F, left_inv := _, right_inv := _}