Clifford involutions
involution.Rd
An involution is a function that is its own inverse, or
equivalently
The dual is documented here for convenience, even though it is not an involution (applying the dual four times is the identity).
The reverse
is given byrev()
(both Perwass and Dorst use a tilde, as in or . However, both Hestenes and Chisholm use a dagger, as in . 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, and . Formally, if , then .Perwass shows that
The Conjugate
is given byConj()
(we use Perwass's notation, def 2.9 p59). This depends on the signature of the Clifford algebra; seegrade.Rd
for notation. Given a basis blade with , then we have , where . Alternatively, we might say where [NB I have changed Perwass's notation].The main (grade) involution or grade involution
is given bygradeinv()
. This changes the sign of any term with odd grade:(I don't see this in Perwass or Hestenes; notation follows Hitzer and Sangwine). It is a special case of grade negation.
The grade
-negation is given byneg()
. This changes the sign of the grade component of . It is formally defined as but functionneg()
uses a more efficient method. It is possible to negate all terms with specified grades, so for example we might have and the R idiom would beneg(A,c(1,2,5))
. Note that Hestenes uses “ ” to mean the same as .The Clifford conjugate
is given bycliffconj()
. It is distinct from conjugation , and is defined in Hitzer and Sangwine asThe dual
of a clifford object is given bydual(C,n)
; argumentn
is the dimension of the underlying vector space. Perwass giveswhere
is the unit pseudoscalar [note that Hestenes uses to mean something different]. The dual is sensitive to the signature of the Clifford algebra and the dimension of the underlying vector space.
Usage
# S3 method for class 'clifford'
rev(x)
# S3 method for class 'clifford'
Conj(z)
cliffconj(z)
neg(C,n)
gradeinv(C)
Examples
x <- rcliff()
x
#> Element of a Clifford algebra, equal to
#> + 5 - 7e_1 + 6e_2 - 4e_12 - 6e_1234 + 2e_2345 + 1e_356 - 2e_1356 + 4e_3456
rev(x)
#> Element of a Clifford algebra, equal to
#> + 5 - 7e_1 + 6e_2 + 4e_12 - 6e_1234 + 2e_2345 - 1e_356 - 2e_1356 + 4e_3456
A <- rblade(g=3)
B <- rblade(g=4)
rev(A %^% B) == rev(B) %^% rev(A) # should be TRUE
#> [1] TRUE
rev(A * B) == rev(B) * rev(A) # should be TRUE
#> [1] TRUE
options(maxdim=8)
a <- rcliff(d=8)
dual(dual(dual(dual(a,8),8),8),8) == a # should be TRUE
#> [1] FALSE
options(maxdim=NULL) # restore default