Function: Cli5plus[clirev] - extends procedure 'reversion' to polynomials expressed in the Clifford basis in Cl(B) or Cl(K)

Calling Sequence:

reversion(p);
clirev(p);
reversion(p,K);
clirev(p,K)

Parameters:

p - polynomial whose terms are of type Cliff5[`type/cliprod`] .
k - (optional) argument of type name, symbol, matrix, or array, or type `&*(numeric,{name,symbol,array,matrix})

Description:

This procedure extends procedure Cliff5[reversion] from 'CLIFFORD' to polynomials in Cl(B) expressed in terms of the Clifford basis in Cl(B).

User can use now the modified procedure 'reversion' which now can be applied to a new type of input, that is, `type/cliprod` .

Observe that a second optional argument K may now be used of type name, symbol, matrix, array, or type `&*(numeric,{name,symbol,array,matrix}): in that case, reversion is done with respect to the form K or its numeric multiple. When the optional argument is not specified, reversion is done, by default, with respect to the bilinear form B.

It is also possible to mix Grassmann basis with the Clifford basis.

When applied to a Clifford monomial, it reverses the order of the basis 1-vectors. For example, when reversion is applied to the basis element e1 &C e2 &C e3, it will return e3 &C e2 &C e1. Then, extend it by linearity to polynomial expressions.

Examples:

> restart:with(Cliff5):with(Cli5plus):

Warning, new definition for init

Warning, definitions for type/climon and type/clipolynom now include &C and &C[K]. Type ?cliprod for help.

> p:=e1 &C e2 &C e3;
p1:=e1 &C e2;
p2:=`&C`(e1,e2we3);

[Maple Math]

[Maple Math]

[Maple Math]

> 'clirev(p)'=clirev(p);
'reversion(p)'=reversion(p);
'clirev(p1)'=clirev(p1);
'reversion(p1)'=reversion(p1);
'clirev(p2)'=clirev(p2);
'reversion(p2)'=reversion(p2);

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

> pp:=`&C`[B](e1,e2,e3);
p11:=`&C`[K](e1,e2,e3);
p22:=`&C`[-K](e1,e2,e3);

[Maple Math]

[Maple Math]

[Maple Math]

> reversion(pp); # reversion of pp w.r.t. B (use implicitly)
reversion(pp,B); # reversion of pp w.r.t. B (use explicitly)

[Maple Math]

[Maple Math]

Reversion of expression p11 defined above has to be done with respect to the same index. Otherwise, an error message will be printed:

> reversion(p11);

Error, (in clirev) optional (or default B) parameter in clirev differs from indices encountered in its cliprod arguments. Found these names as indices of &C:, {B, K}

> reversion(p11,K); # reversion of p11 w.r.t. K can be done because it matches index in `&C`[K]

[Maple Math]

> reversion(p22,-K); # reversion of p22 w.r.t. -K

[Maple Math]

>

Notice in the above that since macro(reversion=clirev) is defined at the time when the package 'Cli5plus' is loaded, user can enter name 'reversion', yet maple returns always its macro name 'clirev'. For example,

> 'reversion';

[Maple Math]

When 'reversion' acts on Clifford polynomial p expressed in the Grassmann basis, it returns reversed p in terms of the Grassmann basis:

> p:=e1we2-1+2*e2+e1we2we3; #original p expressed in the Grassmann basis

[Maple Math]

> p1:=reversion(p); #reversed p expressed in the Grassmann basis

[Maple Math]

When 'reversion' acts on Clifford polynomial p expressed in the Clifford basis, it returns reversed p in terms of the Clifford basis:

> p2:=cliexpand(p); #polynomial p expressed in the Clifford basis

[Maple Math]

> reversion(p2); #reversed p2 expressed in the Clifford basis

[Maple Math]

> p3:=clieval(%); #converting reversed p to the Grassmann basis

[Maple Math]

p1 and p3 now should be the same:

> p1 - p3;

[Maple Math]

'reversion' can take an optional argument K of type name, symbol, matrix, array, and it will then act on Clifford polynomial p in Cl(K). It will return reversed p in terms of the Grassmann basis using coefficients of the form K:

> p:=e1we2-1+2*e2+e1we2we3; #original p expressed in the Grassmann basis

[Maple Math]

> p1:=reversion(p,K); #reversed p expressed in the Grassmann basis

[Maple Math]

When 'reversion' acts on Clifford polynomial p expressed in the Clifford basis, it returns reversed p in terms of the Clifford basis:

> p2:=cliexpand(p,K); #polynomial p expressed in the Clifford basis

[Maple Math]

> reversion(p2);

Error, (in clirev) optional (or default B) parameter in clirev differs from indices encountered in its cliprod arguments. Found these names as indices of &C:, {B, K}

The above error message is due to the fact that 'reversion' performs reversion with respect to the default form B while it has encountered index K as in `&C`[K](e1,e2):

> reversion(p2,K);

[Maple Math]

> p3:=clieval(%); #converting reversed p to the Grassmann basis

[Maple Math]

p1 and p3 now should be the same:

> p1 - p3;

[Maple Math]

Reversion is always an anti-automoprhism in the Clifford algebra Cl(B):

> p1:=4*(e2 &C e3) - 3*(e1 &C e2 &C e3) + 2*e3;

[Maple Math]

> p2:=1-e1+e3+2*(e1 &C e2);

[Maple Math]

> p1p2:=cmul(p1,p2);

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

We want to show that

reversion(cmul(p1,p2)) = cmul(reversion(p2),reversion(p1)).

> revp1p2:=clicollect(reversion(p1p2));

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> p11:=reversion(p1);

[Maple Math]

> p22:=reversion(p2);

[Maple Math]

> Revp1p2:=cmul(p22,p11);

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> clieval(Revp1p2-revp1p2);

[Maple Math]

The same computation as above except this time with respect to some arbitrary form K:

> p1:=4*`&C`[K](e2,e3) - 3*`&C`[K](e1,e2,e3) + 2*e3;

[Maple Math]

> p2:=1-e1+e3+2*`&C`[K](e1,e2);

[Maple Math]

> p1p2:=cmul[K](p1,p2);

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

We want to show that

reversion(cmul(p1,p2)) = cmul(reversion(p2),reversion(p1)).

> revp1p2:=clicollect(reversion(p1p2,K));

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> p11:=reversion(p1,K);

[Maple Math]

> p22:=reversion(p2,K);

[Maple Math]

> Revp1p2:=cmul[K](p22,p11);

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> clieval(Revp1p2-revp1p2);

[Maple Math]

Another short example:

> p1:=Id+2*(e1 &C e2) + 3*&C(e1,e2,e3);

[Maple Math]

> reversion(p1);

[Maple Math]

> p2:=p1+e2we3we4;

[Maple Math]

Mixed input can be used in 'reversion':

> reversion(p2);

[Maple Math]

To express the above output solely in terms of the Clifford basis, use 'cliexpand':

> cliexpand(%);

[Maple Math]

To express the above output solely in terms of the Grassmann basis, use 'clieval':

> clieval(%);

[Maple Math]
[Maple Math]

>

See Also: Cliff5[cmul] , Cliff5[clicollect] , Cliff5[`type/cliprod`] , Cli5plus[clieval] , Cli5plus[cliexpand] , Cliff5[reversion]

(c) Copyright October 8, 1995, by Rafal Ablamowicz & Bertfried Fauser, all rights reserved.
Last modified: December 26, 2001, RA/BF.