involution: Clifford involutions

involutionR Documentation

Clifford involutions

Description

\loadmathjax

An involution is a function that is its own inverse, or equivalently \mjseqnf(f(x))=x. There are several important involutions on Clifford objects; these commute past the grade operator with \mjeqnf(\left\langle A\right\rangle_r)=\left\langle f(A)\right\rangle_romitted and are linear: \mjeqnf(\alpha A+\beta B)=\alpha f(A)+\beta 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 \mjeqnA^\simomitted is given by rev() (both Perwass and Dorst use a tilde, as in \mjeqn\tildeAomitted or \mjeqnA^\simA~. However, both Hestenes and Chisholm use a dagger, as in \mjeqnA^\daggeromitted. 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, \mjeqn\left(e_1e_2e_3\right)^\sim=e_3e_2e_1=-e_1e_2e_3omitted and \mjeqn\left(e_1e_2e_3e_4\right)^\sim=e_4e_3e_2e_1=+e_1e_2e_3e_4omitted. Formally, if \mjeqnX=e_i_1... e_i_komitted, then \mjeqn\tildeX=e_i_k... e_i_1omitted.

    \mjdeqn\left\langle

    A^\sim\right\rangle_r=\widetilde\left\langle A\right\rangle_r=(-1)^r(r-1)/2\left\langle A\right\rangle_r omitted

    Perwass shows that \mjeqn\left\langle AB\right\rangle_r=(-1)^r(r-1)/2\left\langle\tildeB\tildeA\right\rangle_r omitted.

  • The Conjugate \mjeqnA^\daggeromitted 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 \mjteqne_Ae_\mathbbAe_A with \mjteqnA\subseteq\left\lbrace 1,...,p+q\right\rbrace\mathbbA\subseteq\left\lbrace 1,...,p+q\right\rbraceomitted, then we have \mjteqn e_A^\dagger = (-1)^m e_A^\sime_\mathbbA^\dagger = (-1)^m e_\mathbbA^\simomitted, where \mjteqnm=\mathrmgr_-(A) m=\mathrmgr_-(\mathbbA)omitted. Alternatively, we might say \mjdeqn\left(\left\langle A\right\rangle_r\right)^\dagger=(-1)^m(-1)^r(r-1)/2\left\langle A\right\rangle_r omitted where \mjeqnm=\mathrmgr_-(\left\langle A\right\rangle_r)omitted [NB I have changed Perwass's notation].

  • The main (grade) involution or grade involution \mjeqn\widehatAomitted is given by gradeinv(). This changes the sign of any term with odd grade: \mjdeqn \widehat\left\langle A\right\rangle_r =(-1)^r\left\langle A\right\rangle_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 \mjeqnA_\overlineromitted is given by neg(). This changes the sign of the grade r component of A. It is formally defined as \mjeqnA-2\left\langle A\right\rangle_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 \mjeqn\left\langle A\right\rangle_\overline\left\lbrace 1,2,5\right\rbrace = A-2\left( \left\langle A\right\rangle_1 +\left\langle A\right\rangle_2+\left\langle A\right\rangle_5\right)omitted and the R idiom would be neg(A,c(1,2,5)). Note that Hestenes uses “\mjeqnA_\overlineromitted” to mean the same as \mjeqn\left\langle A\right\rangle_romitted.

  • The Clifford conjugate \mjeqn\overlineAomitted is given by cliffconj(). It is distinct from conjugation \mjeqnA^\daggeromitted, and is defined in Hitzer and Sangwine as

    \mjdeqn\overline\left\langle

    A\right\rangle_r = (-1)^r(r+1)/2\left\langle A\right\rangle_r.omitted

  • The dual \mjseqnC^* of a clifford object \mjseqnC is given by dual(C,n); argument n is the dimension of the underlying vector space. Perwass gives \mjdeqnC^*=CI^-1omitted

    where \mjeqnI=e_1e_2... e_nomitted is the unit pseudoscalar [note that Hestenes uses \mjeqnII 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)

Arguments

C,x,z

Clifford object

n

Integer vector specifying grades to be negated in neg()

Author(s)

Robin K. S. Hankin

See Also

grade

Examples


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


clifford documentation built on Aug. 14, 2022, 1:05 a.m.