Recursive computation rules for the Clifford algebra #
This file provides API for a special case CliffordAlgebra.foldr of the universal property
CliffordAlgebra.lift with A = Module.End R N for some arbitrary module N. This specialization
resembles the list.foldr operation, allowing a bilinear map to be "folded" along the generators.
For convenience, this file also provides CliffordAlgebra.foldl, implemented via
CliffordAlgebra.reverse
Main definitions #
CliffordAlgebra.foldr: a computation rule for building linear maps out of the clifford algebra starting on the right, analogous to usinglist.foldron the generators.CliffordAlgebra.foldl: a computation rule for building linear maps out of the clifford algebra starting on the left, analogous to usinglist.foldlon the generators.
Main statements #
CliffordAlgebra.right_induction: an induction rule that adds generators from the right.CliffordAlgebra.left_induction: an induction rule that adds generators from the left.
Fold a bilinear map along the generators of a term of the clifford algebra, with the rule
given by foldr Q f hf n (ι Q m * x) = f m (foldr Q f hf n x).
For example, foldr f hf n (r • ι R u + ι R v * ι R w) = r • f u n + f v (f w n).
Equations
- CliffordAlgebra.foldr Q f hf = ((CliffordAlgebra.lift Q) ⟨f, ⋯⟩).toLinearMap.flip
Instances For
This lemma demonstrates the origin of the foldr name.
Fold a bilinear map along the generators of a term of the clifford algebra, with the rule
given by foldl Q f hf n (ι Q m * x) = f m (foldl Q f hf n x).
For example, foldl f hf n (r • ι R u + ι R v * ι R w) = r • f u n + f v (f w n).
Equations
- CliffordAlgebra.foldl Q f hf = (CliffordAlgebra.foldr Q f hf).compl₂ CliffordAlgebra.reverse
Instances For
This lemma demonstrates the origin of the foldl name.
Versions with extra state #
Auxiliary definition for CliffordAlgebra.foldr'
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fold a bilinear map along the generators of a term of the clifford algebra, with the rule
given by foldr' Q f hf n (ι Q m * x) = f m (x, foldr' Q f hf n x).
Note this is like CliffordAlgebra.foldr, but with an extra x argument.
Implement the recursion scheme F[n0](m * x) = f(m, (x, F[n0](x))).
Equations
- CliffordAlgebra.foldr' Q f hf n = LinearMap.snd R (CliffordAlgebra Q) N ∘ₗ (CliffordAlgebra.foldr Q (CliffordAlgebra.foldr'Aux Q f) ⋯) (1, n)