signature {clifford}R Documentation

The signature of the Clifford algebra

Description

Getting and setting the signature of the Clifford algebra

Usage

signature(p,q=0)
is_ok_sig(s)
showsig(s)
## S3 method for class 'sigobj'
print(x,...)

Arguments

s, p, q

Integers, specifying number of positive elements on the diagonal of the quadratic form, with s=c(p,q)

x

Object of class sigobj

...

Further arguments, currently ignored

Details

The signature functionality is modelled on lorentz::sol() which gets and sets the speed of light.

Clifford algebras require a bilinear form on \(\mathbb{R}^n\) \(\left\langle\cdot,\cdot\right\rangle\), usually written

\[\left\langle{\mathbf x},{\mathbf x}\right\rangle=x_1^2+x_2^2+\cdots +x_p^2-x_{p+1}^2-\cdots -x_{p+q}^2 \]

where \(p+q=n\). With this quadratic form the vector space is denoted \(\mathbb{R}^{p,q}\) and we say that \((p,q)\) is the signature of the bilinear form \(\left\langle\cdot,\cdot\right\rangle\). This gives rise to the Clifford algebra \(C_{p,q}\).

If the signature is \((p,q)\), then we have

\[ e_i e_i = +1\, (\mbox{if } 1\leq i\leq p), -1\, (\mbox{if } p+1\leq i\leq p+q), 0\, (\mbox{if } i>p+q). \]

Note that \((p,0)\) corresponds to a positive-semidefinite quadratic form in which \(e_ie_i=+1\) for all \(i\leq p\) and \(e_ie_i=0\) for all \(i > p\). Similarly, \((0,q)\) corresponds to a negative-semidefinite quadratic form in which \(e_ie_i=-1\) for all \(i\leq q\) and \(e_ie_i=0\) for all \(i > q\).

Package idiom for a strictly positive-definite quadratic form would be to specify infinite \(p\) [in which case \(q\) is irrelevant] and for a strictly negative-definite quadratic form we would need \(p=0,q=\infty\).

If we specify \(e_ie_i=0\) for all \(i\), then the operation reduces to the wedge product of a Grassman algebra. Package idiom for this is to set \(p=q=0\), but this is not recommended: use the stokes package for Grassman algebras, which is much more efficient and uses nicer idiom.

Function signature(p,q) returns the signature silently; but setting option show_signature to TRUE makes signature() have the side-effect of calling showsig(), which changes the default prompt to display the signature, much like showSOL in the lorentz package. There is special dispensation for “infinite” \(p\) or \(q\).

Calling signature() [that is, with no arguments] returns an object of class sigobj with elements corresponding to p and q. The sigobj class ensures that a near-infinite integer such as .Machine$integer.max will be printed as “Inf” rather than, for example, “2147483647”.

Function is_ok_sig() is a helper function that checks for a proper signature.

Author(s)

Robin K. S. Hankin

Examples



signature()

e(1)^2
e(2)^2

signature(1)
e(1)^2
e(2)^2   # note sign

signature(3,4)
sapply(1:10,function(i){drop(e(i)^2)})


signature(Inf)   # restore default




# Nice mapping from Cl(0,2) to the quaternions (loading clifford and
# onion simultaneously is discouraged):

# library("onion")
# signature(0,2)
# Q1 <- rquat(1)
# Q2 <- rquat(1)
# f <- function(H){Re(H)+i(H)*e(1)+j(H)*e(2)+k(H)*e(1:2)}
# f(Q1)*f(Q2) - f(Q1*Q2) # zero to numerical precision
# signature(Inf)


[Package clifford version 1.0-8 Index]