Other constructions isomorphic to Clifford Algebras #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file contains isomorphisms showing that other types are equivalent to some clifford_algebra
.
Rings #
clifford_algebra_ring.equiv
: any ring is equivalent to aclifford_algebra
over a zero-dimensional vector space.
Complex numbers #
clifford_algebra_complex.equiv
: thecomplex
numbers are equivalent as anℝ
-algebra to aclifford_algebra
over a one-dimensional vector space with a quadratic form that satisfiesQ (ι Q 1) = -1
.clifford_algebra_complex.to_complex
: the forward direction of this equivclifford_algebra_complex.of_complex
: the reverse direction of this equiv
We show additionally that this equivalence sends complex.conj
to clifford_algebra.involute
and
vice-versa:
Note that in this algebra clifford_algebra.reverse
is the identity and so the clifford conjugate
is the same as clifford_algebra.involute
.
Quaternion algebras #
clifford_algebra_quaternion.equiv
: aquaternion_algebra
overR
is equivalent as anR
-algebra to a clifford algebra overR × R
, sendingi
to(0, 1)
andj
to(1, 0)
.clifford_algebra_quaternion.to_quaternion
: the forward direction of this equivclifford_algebra_quaternion.of_quaternion
: the reverse direction of this equiv
We show additionally that this equivalence sends quaternion_algebra.conj
to the clifford conjugate
and vice-versa:
Dual numbers #
clifford_algebra_dual_number.equiv
:R[ε]
is is equivalent as anR
-algebra to a clifford algebra overR
whereQ = 0
.
The clifford algebra isomorphic to a ring #
Since the vector space is empty the ring is commutative.
Equations
- clifford_algebra_ring.clifford_algebra.comm_ring = {add := ring.add (clifford_algebra.ring 0), add_assoc := _, zero := ring.zero (clifford_algebra.ring 0), zero_add := _, add_zero := _, nsmul := ring.nsmul (clifford_algebra.ring 0), nsmul_zero' := _, nsmul_succ' := _, neg := ring.neg (clifford_algebra.ring 0), sub := ring.sub (clifford_algebra.ring 0), sub_eq_add_neg := _, zsmul := ring.zsmul (clifford_algebra.ring 0), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, int_cast := ring.int_cast (clifford_algebra.ring 0), nat_cast := ring.nat_cast (clifford_algebra.ring 0), one := ring.one (clifford_algebra.ring 0), nat_cast_zero := _, nat_cast_succ := _, int_cast_of_nat := _, int_cast_neg_succ_of_nat := _, mul := ring.mul (clifford_algebra.ring 0), mul_assoc := _, one_mul := _, mul_one := _, npow := ring.npow (clifford_algebra.ring 0), npow_zero' := _, npow_succ' := _, left_distrib := _, right_distrib := _, mul_comm := _}
The clifford algebra over a 0-dimensional vector space is isomorphic to its scalars.
Equations
- clifford_algebra_ring.equiv = alg_equiv.of_alg_hom (⇑(clifford_algebra.lift 0) ⟨0, _⟩) (algebra.of_id R (clifford_algebra 0)) clifford_algebra_ring.equiv._proof_2 clifford_algebra_ring.equiv._proof_3
The clifford algebra isomorphic to the complex numbers #
The quadratic form sending elements to the negation of their square.
Equations
Intermediate result for clifford_algebra_complex.equiv
: clifford algebras over
clifford_algebra_complex.Q
above can be converted to ℂ
.
Equations
- clifford_algebra_complex.to_complex = ⇑(clifford_algebra.lift clifford_algebra_complex.Q) ⟨linear_map.to_span_singleton ℝ ℂ complex.I, clifford_algebra_complex.to_complex._proof_1⟩
clifford_algebra.involute
is analogous to complex.conj
.
Intermediate result for clifford_algebra_complex.equiv
: ℂ
can be converted to
clifford_algebra_complex.Q
above can be converted to.
Equations
- clifford_algebra_complex.of_complex = ⇑complex.lift ⟨⇑(clifford_algebra.ι clifford_algebra_complex.Q) 1, clifford_algebra_complex.of_complex._proof_1⟩
The clifford algebras over clifford_algebra_complex.Q
is isomorphic as an ℝ
-algebra to
ℂ
.
The clifford algebra is commutative since it is isomorphic to the complex numbers.
TODO: prove this is true for all clifford_algebra
s over a 1-dimensional vector space.
Equations
- clifford_algebra_complex.clifford_algebra.comm_ring = {add := ring.add (clifford_algebra.ring clifford_algebra_complex.Q), add_assoc := clifford_algebra_complex.clifford_algebra.comm_ring._proof_1, zero := ring.zero (clifford_algebra.ring clifford_algebra_complex.Q), zero_add := clifford_algebra_complex.clifford_algebra.comm_ring._proof_2, add_zero := clifford_algebra_complex.clifford_algebra.comm_ring._proof_3, nsmul := ring.nsmul (clifford_algebra.ring clifford_algebra_complex.Q), nsmul_zero' := clifford_algebra_complex.clifford_algebra.comm_ring._proof_4, nsmul_succ' := clifford_algebra_complex.clifford_algebra.comm_ring._proof_5, neg := ring.neg (clifford_algebra.ring clifford_algebra_complex.Q), sub := ring.sub (clifford_algebra.ring clifford_algebra_complex.Q), sub_eq_add_neg := clifford_algebra_complex.clifford_algebra.comm_ring._proof_6, zsmul := ring.zsmul (clifford_algebra.ring clifford_algebra_complex.Q), zsmul_zero' := clifford_algebra_complex.clifford_algebra.comm_ring._proof_7, zsmul_succ' := clifford_algebra_complex.clifford_algebra.comm_ring._proof_8, zsmul_neg' := clifford_algebra_complex.clifford_algebra.comm_ring._proof_9, add_left_neg := clifford_algebra_complex.clifford_algebra.comm_ring._proof_10, add_comm := clifford_algebra_complex.clifford_algebra.comm_ring._proof_11, int_cast := ring.int_cast (clifford_algebra.ring clifford_algebra_complex.Q), nat_cast := ring.nat_cast (clifford_algebra.ring clifford_algebra_complex.Q), one := ring.one (clifford_algebra.ring clifford_algebra_complex.Q), nat_cast_zero := clifford_algebra_complex.clifford_algebra.comm_ring._proof_12, nat_cast_succ := clifford_algebra_complex.clifford_algebra.comm_ring._proof_13, int_cast_of_nat := clifford_algebra_complex.clifford_algebra.comm_ring._proof_14, int_cast_neg_succ_of_nat := clifford_algebra_complex.clifford_algebra.comm_ring._proof_15, mul := ring.mul (clifford_algebra.ring clifford_algebra_complex.Q), mul_assoc := clifford_algebra_complex.clifford_algebra.comm_ring._proof_16, one_mul := clifford_algebra_complex.clifford_algebra.comm_ring._proof_17, mul_one := clifford_algebra_complex.clifford_algebra.comm_ring._proof_18, npow := ring.npow (clifford_algebra.ring clifford_algebra_complex.Q), npow_zero' := clifford_algebra_complex.clifford_algebra.comm_ring._proof_19, npow_succ' := clifford_algebra_complex.clifford_algebra.comm_ring._proof_20, left_distrib := clifford_algebra_complex.clifford_algebra.comm_ring._proof_21, right_distrib := clifford_algebra_complex.clifford_algebra.comm_ring._proof_22, mul_comm := clifford_algebra_complex.clifford_algebra.comm_ring._proof_23}
reverse
is a no-op over clifford_algebra_complex.Q
.
complex.conj
is analogous to clifford_algebra.involute
.
The clifford algebra isomorphic to the quaternions #
Q c₁ c₂
is a quadratic form over R × R
such that clifford_algebra (Q c₁ c₂)
is isomorphic
as an R
-algebra to ℍ[R,c₁,c₂]
.
Equations
- clifford_algebra_quaternion.Q c₁ c₂ = (c₁ • quadratic_form.sq).prod (c₂ • quadratic_form.sq)
The quaternion basis vectors within the algebra.
Equations
- clifford_algebra_quaternion.quaternion_basis c₁ c₂ = {i := ⇑(clifford_algebra.ι (clifford_algebra_quaternion.Q c₁ c₂)) (1, 0), j := ⇑(clifford_algebra.ι (clifford_algebra_quaternion.Q c₁ c₂)) (0, 1), k := ⇑(clifford_algebra.ι (clifford_algebra_quaternion.Q c₁ c₂)) (1, 0) * ⇑(clifford_algebra.ι (clifford_algebra_quaternion.Q c₁ c₂)) (0, 1), i_mul_i := _, j_mul_j := _, i_mul_j := _, j_mul_i := _}
Intermediate result of clifford_algebra_quaternion.equiv
: clifford algebras over
clifford_algebra_quaternion.Q
can be converted to ℍ[R,c₁,c₂]
.
The "clifford conjugate" maps to the quaternion conjugate.
Map a quaternion into the clifford algebra.
The clifford algebra over clifford_algebra_quaternion.Q c₁ c₂
is isomorphic as an R
-algebra
to ℍ[R,c₁,c₂]
.
The quaternion conjugate maps to the "clifford conjugate" (aka star
).
The clifford algebra isomorphic to the dual numbers #
The clifford algebra over a 1-dimensional vector space with 0 quadratic form is isomorphic to the dual numbers.
Equations
- clifford_algebra_dual_number.equiv = alg_equiv.of_alg_hom (⇑(clifford_algebra.lift 0) ⟨triv_sq_zero_ext.inr_hom R R semiring.to_module, _⟩) (⇑dual_number.lift ⟨⇑(clifford_algebra.ι 0) 1, _⟩) clifford_algebra_dual_number.equiv._proof_9 clifford_algebra_dual_number.equiv._proof_10