mathlib3 documentation

lean-ga / geometric_algebra.from_mathlib.versors

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
theorem clifford_algebra.versors.induction_on {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] {Q : quadratic_form R M} {C : (clifford_algebra.versors Q) Prop} (v : (clifford_algebra.versors Q)) (h_grade0 : (r : R), C (algebra_map R (clifford_algebra Q)) r, _⟩) (h_grade1 : (m : M), C (clifford_algebra.ι Q) m, _⟩) (h_mul : (a b : (clifford_algebra.versors Q)), C a C b C (a * b)) :
C v

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
@[simp]

Involute of a versor is a versor

@[simp]

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?

Only zero versors have zero magnitude, assuming:

  • The metric is anisotropic (hqnz). Note this is a stricter requirement than non-degeneracy; versors in CGA 𝒢(ℝ⁴⋅¹) like n∞ and n∞*no are both counterexamples to this lemma.
  • 0 remains 0 when mapped from R into clifford_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
@[simp]
theorem clifford_algebra.versors.has_inv_inv {R' : Type u_3} [field R'] {M' : Type u_4} [add_comm_group M'] [module R' M'] {Q' : quadratic_form R' M'} [nontrivial (clifford_algebra Q')] (v : (clifford_algebra.versors Q')) :
v⁻¹ = ((clifford_algebra.versors.magnitude_R clifford_algebra.versors.has_inv._proof_1) v)⁻¹ clifford_algebra.reverse v, _⟩
@[protected, instance]
noncomputable def clifford_algebra.versors.has_inv {R' : Type u_3} [field R'] {M' : Type u_4} [add_comm_group M'] [module R' M'] {Q' : quadratic_form R' M'} [nontrivial (clifford_algebra Q')] :

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
theorem clifford_algebra.versors.inv_zero {R' : Type u_3} [field R'] {M' : Type u_4} [add_comm_group M'] [module R' M'] {Q' : quadratic_form R' M'} [nontrivial (clifford_algebra Q')] :
0⁻¹ = 0

Versors with a non-zero magnitude have an inverse

@[protected, instance]

If additionally the metric is anisotropic, then the inverse imparts a group_with_zero structure.

Equations
@[simp]

The spinors inherit scalar multiplication () and negation from the parent algebra

@[protected, instance]
Equations
theorem clifford_algebra.spinors.induction_on {R : Type u_1} [comm_ring R] {M : Type u_2} [add_comm_group M] [module R M] {Q : quadratic_form R M} {C : (clifford_algebra.spinors Q) Prop} (v : (clifford_algebra.spinors Q)) (h_grade0 : (r : R), C (algebra_map R (clifford_algebra Q)) r, _⟩) (h_grade2 : (m n : M), C (clifford_algebra.ι Q) m * (clifford_algebra.ι Q) n, _⟩) (h_mul : (a b : (clifford_algebra.spinors Q)), C a C b C (a * b)) :
C 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
@[simp]

Involute of a spinor is a spinor

@[simp]

Reverse of a spinor is a spinor

The elements of at most grade n are a filtration

Equations
@[protected, instance]

Since the sets are monotonic, we can coerce up to a larger submodule

Equations