Versors, spinors, Multivectors, and other subspaces #
This file defines the versors
, spinors
, and r_multivectors
.
The versors are the elements made up of products of vectors.
TODO: are scalars ≠1 considered versors?
Equations
Instances for ↥clifford_algebra.versors
An induction process for the versors, proving a statement C
about v
given proofs that:
- It holds for the scalars
- It holds for the vectors
- It holds for any product of two elements it holds for
Involute of a versor is a versor
Reverse of a versor is a versor
A versor times its reverse is a scalar
TODO: Can we compute r
constructively?
A versor's reverse times itself is a scalar
TODO: Can we compute r
constructively?
The magnitude of a versor.
Equations
- clifford_algebra.versors.magnitude_aux = {to_fun := λ (v : ↥(clifford_algebra.versors Q)), ↑v * ⇑clifford_algebra.reverse ↑v, map_zero' := _, map_one' := _, map_mul' := _}
Only zero versors have zero magnitude, assuming:
- The metric is anisotropic (
hqnz
). Note this is a stricter requirement than non-degeneracy; versors in CGA 𝒢(ℝ⁴⋅¹) liken∞
andn∞*no
are both counterexamples to this lemma. 0
remains0
when mapped fromR
intoclifford_algebra Q
R
has no zero divisors
It's possible these last two requirements can be relaxed somehow.
The magnitude of a versor, as a member of the subalgebra of scalars
Note we can't put this in R
unless we know algebra_map
is injective.
This is kind of annoying, because it means that even if we have field R
, we can't invert the
magnitude
Equations
- clifford_algebra.versors.magnitude = {to_fun := λ (v : ↥(clifford_algebra.versors Q)), ⟨⇑clifford_algebra.versors.magnitude_aux v, _⟩, map_zero' := _, map_one' := _, map_mul' := _}
Equations
- clifford_algebra.versors.magnitude_R hi = {to_fun := λ (v : ↥(clifford_algebra.versors Q)), classical.some _, map_zero' := _, map_one' := _, map_mul' := _}
When R'
is a field, we can define the inverse as ~V / (V * ~V)
.
Until we resolve the problems above about getting r
constructively, we are forced to use the axiom of choice here
Equations
- clifford_algebra.versors.has_inv = {inv := λ (v : ↥(clifford_algebra.versors Q')), (⇑(clifford_algebra.versors.magnitude_R clifford_algebra.versors.has_inv._proof_1) v)⁻¹ • ⟨⇑clifford_algebra.reverse ↑v, _⟩}
Versors with a non-zero magnitude have an inverse
If additionally the metric is anisotropic, then the inverse imparts a group_with_zero
structure.
Equations
- clifford_algebra.versors.group_with_zero = {mul := monoid_with_zero.mul infer_instance, mul_assoc := _, one := monoid_with_zero.one infer_instance, one_mul := _, mul_one := _, npow := monoid_with_zero.npow infer_instance, npow_zero' := _, npow_succ' := _, zero := monoid_with_zero.zero infer_instance, zero_mul := _, mul_zero := _, inv := has_inv.inv infer_instance, div := div_inv_monoid.div._default monoid_with_zero.mul clifford_algebra.versors.group_with_zero._proof_8 monoid_with_zero.one clifford_algebra.versors.group_with_zero._proof_9 clifford_algebra.versors.group_with_zero._proof_10 monoid_with_zero.npow clifford_algebra.versors.group_with_zero._proof_11 clifford_algebra.versors.group_with_zero._proof_12 has_inv.inv, div_eq_mul_inv := _, zpow := div_inv_monoid.zpow._default monoid_with_zero.mul clifford_algebra.versors.group_with_zero._proof_14 monoid_with_zero.one clifford_algebra.versors.group_with_zero._proof_15 clifford_algebra.versors.group_with_zero._proof_16 monoid_with_zero.npow clifford_algebra.versors.group_with_zero._proof_17 clifford_algebra.versors.group_with_zero._proof_18 has_inv.inv, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, exists_pair_ne := _, inv_zero := _, mul_inv_cancel := _}
The spinors are the versors with an even number of factors
Equations
Instances for ↥clifford_algebra.spinors
The spinors are versors
The spinors inherit scalar multiplication (•
) and negation from the parent algebra
Equations
- clifford_algebra.spinors.mul_action = {to_has_smul := {smul := λ (k : R) (v : ↥(clifford_algebra.spinors Q)), ⟨k • ↑v, _⟩}, one_smul := _, mul_smul := _}
Equations
- clifford_algebra.spinors.has_neg = {neg := λ (v : ↥(clifford_algebra.spinors Q)), ⟨-↑v, _⟩}
An induction process for the spinors, proving a statement C
about v
given proofs that:
- It holds for the scalars
- It holds for products of two vectors
- It holds for any product of two elements it holds for
Involute of a spinor is a spinor
Reverse of a spinor is a spinor
The elements of at most grade n
are a filtration
Since the sets are monotonic, we can coerce up to a larger submodule
Equations
- clifford_algebra.r_multivectors.has_coe_t n r = {coe := λ (x : ↥(⇑(clifford_algebra.r_multivectors Q) n)), ⟨↑x, _⟩}