knitr::opts_chunk$set(echo = TRUE)
Hitzer and Sangwine set up a number of involutions which I reproduce for convenience below. Given $M\in Cl(p,q)$ and
\newcommand{\abr}[1]{\left\langle #1\right\rangle}
$$M= \abr{M}_0+ \abr{M}_1+ \abr{M}_2+\cdots+\abr{M}_0 $$
we have a number of involutions, documented at involutions.Rd
:
H\&S assert that
\sum_{k=0}^n(-1)^{k(k+1)/2}\abr{M}_k $$
which we may verify numerically:
library(clifford)
(M <- rcliff()) a1 <- cliffconj(M) a2 <- gradeinv(rev(M)) a3 <- rev(gradeinv(M)) is.zero(a2-a1) & is.zero(a3-a1)
We now consider the case $p+q=3$. If $x\in Cl(p,q)$ with $p+q=3$ then equation 6.2 asserts that $x\overline{x}=r_0 +r_3 e_1e_2e_3$ for some $r_0,r_3\in\mathbb{R}$:
(x <- rcliff(d=3,g=3)) x*cliffconj(x)
and equation 6.3 asserts that $x\overline{x}(x\overline{x})^\sim\in\mathbb{R}$:
f <- function(x){ jj <- x*cliffconj(x) is.real(jj*rev(jj)) }
signature(0,3) f(rcliff(d=3,g=3)) signature(1,2) f(rcliff(d=3,g=3)) signature(2,1) f(rcliff(d=3,g=3)) signature(3,0) f(rcliff(d=3,g=3))
Thus equation 6.5, which asserts that the right inverse $x_r^{-1}$ is
[ x_r^{-1}=\frac{ \overline{x}\hat{x}\tilde{x} }{ x\overline{x}\hat{x}\tilde{x} },\qquad xx_r^{-1}=1 ]
RI3 <- function(x){ # right inverse jj <- cliffconj(x)*gradeinv(x)*rev(x) return(jj/drop(x*jj)) } ```r a <- 5+rcliff(d=3,g=3) a RI3(a) zap(a*RI3(a)) zap(RI3(a)*a)
Now equations 7.7 and 7.8, which assert that if $x\overline{x}m_{\overline{3},\overline{4}}(x\overline{x})$ is nonzero, we have
[ x_r^{-1} = \frac{ \overline{x}m_{\overline{3},\overline{4}}(x\overline{x}) }{ x\overline{x}m_{\overline{3},\overline{4}}(x\overline{x}) },\qquad xx_r^{-1}=1 ]
and
[ x_l^{-1} = \frac{ \overline{x}m_{\overline{3},\overline{4}}(x\overline{x}) }{ \overline{x}m_{\overline{3},\overline{4}}(x\overline{x})x },\qquad x_l^{-1}x=1 ]
Numerical verification:
f77 <- function(x){ jj <- cliffconj(x)*neg(x*cliffconj(x),3:4) return(jj/drop(x*jj)) } f78 <- function(x){ jj <- neg(cliffconj(x)*x,3:4)*cliffconj(x) return(jj/drop(jj*x)) } a <- 3 + rcliff(d=4) a f77(a) zap(a*f77(a)) zap(f77(a)*a)
Try the different signatures:
set.seed(0) sigs <- 0:4 left <- rep(NA,5) right <- rep(NA,5) diff <- rep(NA,5) for(i in seq_along(sigs)){ signature(sigs[i]) a <- sample(1:9,1) + rcliff(d=4) left[i] <- Mod(a*f77(a) -1) right[i] <- Mod(f77(a)*a -1) diff[i] <- Mod(f77(a)-f78(a)) } left right diff
Just to be explicit, the following DOES NOT WORK:
a <- rcliff() a*f77(a) # (denominator not real)
Equation 8.21 asserts that, if $p+q\leq 5$ then
$z=x\overline{x}\hat{x}\tilde{x}m_{\overline{1},\overline{4}}(x\overline{x}\hat{x}\tilde{x})\in\mathbb{R}$.
Equation 8.22 asserts that, if $z$ is nonzero, then
[ x_r^{-1}=\frac{ \overline{x}\hat{x}\tilde{x}m_{\overline{1},\overline{4}}(x\overline{x}\hat{x}\tilde{x})}{ x\overline{x}\hat{x}\tilde{x}m_{\overline{1},\overline{4}}(x\overline{x}\hat{x}\tilde{x}) },xx_r^{-1}=1. ]
f822 <- function(x){ jj <- cliffconj(x)*gradeinv(x)*rev(x) jj <- jj*neg(x*jj,c(1L,4L)) jj/drop(zap(x*jj)) }
a <- 7+clifford(list(1,3,5,1:2,c(1,5),c(3,4),1:3,2:4,c(2,3,5),1:4,2:5,c(1,2,3,5),1:5),1:13) a f822(a) zap(a*f822(a)) zap(f822(a)*a)
And a similar set of verifications:
sigs <- 0:6 diffl <- rep(NA,5) diffr <- rep(NA,5) for(i in seq_along(sigs)){ signature(sigs[i]) a <- sample(1:9,1) + rcliff(d=5) diffl[i] <- Mod(a*f822(a)-1) diffr[i] <- Mod(f822(a)*a-1) } diffl diffr
Similarly, equation 8.23 asserts that, if $p+q\leq 5$ then $z'= m_{\overline{1},\overline{4}}(\tilde{x}\hat{x}\overline{x}x) \tilde{x}\hat{x}\overline{x}x\in\mathbb{R}$. And if $z'\neq 0$ equation 8.24 asserts that
[ x_l^{-1} = \frac{ m_{\overline{1},\overline{4}}(\tilde{x}\hat{x}\overline{x}x)\tilde{x}\hat{x}\overline{x} }{ m_{\overline{1},\overline{4}}(\tilde{x}\hat{x}\overline{x}x)\tilde{x}\hat{x}\overline{x}x},\qquad x_l^{-1}x = 1. ]
The R idiom would be
f824 <- function(x){ # left inverse jj <- rev(x)*gradeinv(x)*cliffconj(x) jj <- neg(jj*x,c(1L,4L))*jj jj/drop(zap(jj*x)) }
Check:
zap(f824(x)*x) zap(f822(x)*x)
It turns out that the left and right inverses coincide:
signature(0,5) Mod(f822(x) - f824(x)) signature(1,4) Mod(f822(x) - f824(x)) signature(2,3) Mod(f822(x) - f824(x)) signature(3,2) Mod(f822(x) - f824(x)) signature(4,1) Mod(f822(x) - f824(x))
We will carry out Cartan's isomorphism from $Cl(p,q)$ to $Cl(p-4,q+4)$
numerically. Here we specify $p+q=7$ by calling rcliff()
with
argument d=7
, and force $p=4$ by executing signature(4)
:
a <- rcliff(d=7) # Cl(4,3) b <- rcliff(d=7) # Cl(4,3) signature(4,3) # e1^2 = e2^2 = e3^2 = e4^2 = +1; e5^2 = ... = -1 ab <- a*b # multiplication in Cl(4,3) signature(0,7) # e1^2 = ... = -1 cartan(a)*cartan(b) == cartan(ab) # multiplication in Cl(0,7)
and again using cartan_inverse()
:
cartan_inverse(cartan(a) * cartan(b)) == ab # precalculated product!
Now try mapping $Cl(5,2)\longrightarrow Cl(1,7)$:
signature(5,2); ab_sig5 <- a*b signature(1,7) cartan(a,2) * cartan(b,2) == cartan(ab_sig5,2) cartan_inverse(cartan(a,2) * cartan(b,2),2) == ab_sig5
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.