An involution is a function that is its own inverse, or equivalently f(f(x))=x. There are several important involutions on Clifford objects; these commute past the grade operator with f( A_r)= f(A)_romitted and are linear: f( A+ B)= f(A)+ f(B)omitted.
The dual is documented here for convenience, even though it is not an involution (applying the dual four times is the identity).
The reverse A^omitted is given by
rev()
(both Perwass and Dorst use a tilde, as in
Aomitted or A^A~. However, both
Hestenes and Chisholm use a dagger, as in
A^omitted. This page uses Perwass's notation).
The reverse of a term written as a product of basis vectors is
simply the product of the same basis vectors but written in reverse
order. This changes the sign of the term if the number of basis
vectors is 2 or 3 (modulo 4). Thus, for example,
(e_1e_2e_3)^=e_3e_2e_1=-e_1e_2e_3omitted
and
(e_1e_2e_3e_4)^=e_4e_3e_2e_1=+e_1e_2e_3e_4omitted.
Formally, if X=e_i_1... e_i_komitted, then
X=e_i_k... e_i_1omitted.
A^_r= A_r=(-1)^r(r-1)/2 A_r omitted
Perwass shows that AB_r=(-1)^r(r-1)/2BA_r omitted.
The Conjugate A^omitted is given by
Conj()
(we use Perwass's notation, def 2.9 p59). This
depends on the signature of the Clifford algebra; see
grade.Rd
for notation. Given a basis blade
e_Ae_Ae_A with A
1,...,p+qA
1,...,p+qomitted, then we have
e_A^ = (-1)^m e_A^e_A^ = (-1)^m
e_A^omitted, where m=gr_-(A)
m=gr_-(A)omitted. Alternatively, we
might say (
A_r)^=(-1)^m(-1)^r(r-1)/2
A_r omitted where
m=gr_-( A_r)omitted
[NB I have changed Perwass's notation].
The main (grade) involution or grade involution
Aomitted is given by gradeinv()
. This
changes the sign of any term with odd grade:
A_r =(-1)^r
A_romitted (I don't see this in Perwass or Hestenes;
notation follows Hitzer and Sangwine). It is a special case of
grade negation.
The grade \(r\)-negation
A_romitted is given by neg()
. This
changes the sign of the grade \(r\) component of \(A\). It is
formally defined as A-2
A_rA-2<A>_r but function neg()
uses a more
efficient method. It is possible to negate all terms with specified
grades, so for example we might have
A_ 1,2,5 =
A-2( A_1 +
A_2+ A_5)omitted and
the R idiom would be neg(A,c(1,2,5))
. Note that Hestenes
uses “A_romitted” to mean the same as
A_romitted.
The Clifford conjugate Aomitted is
given by cliffconj()
. It is distinct from conjugation
A^omitted, and is defined in Hitzer and Sangwine as
A_r = (-1)^r(r+1)/2 A_r.omitted
The dual C^* of a clifford object C is
given by dual(C,n)
; argument n
is the dimension of the
underlying vector space. Perwass gives
C^*=CI^-1omitted
where I=e_1e_2... e_nomitted is the unit pseudoscalar [note that Hestenes uses II to mean something different]. The dual is sensitive to the signature of the Clifford algebra and the dimension of the underlying vector space.
# S3 method for clifford
rev(x)
# S3 method for clifford
Conj(z)
cliffconj(z)
neg(C,n)
gradeinv(C)
Clifford object
Integer vector specifying grades to be negated in neg()
Robin K. S. Hankin
grade
x <- rcliff()
x
rev(x)
A <- rblade(g=3)
B <- rblade(g=4)
rev(A %^% B) == rev(B) %^% rev(A) # should be TRUE
rev(A * B) == rev(B) * rev(A) # should be TRUE
a <- rcliff()
dual(dual(dual(dual(a,8),8),8),8) == a # should be TRUE
Run the code above in your browser using DataLab