Function: Cliff5[isVahlenmatrix] - determine whether the given 2 x 2 Clifford matrix is a Vahlen matrix
Calling Sequence:
isVahlenmatrix(m);
Parameters:
m - expression of the type 'climatrix' or 'matrix'
Description:
Procedure 'isVahlenmatrix' determines if the given 2 x 2 Clifford matrix is a Vahlen matrix and it returns 'true' or 'false' accordingly. Any matrix with entries in a Clifford algebra is of `type/climatrix` .
A Vahlen matrix is a 2 x 2 matrix V with entries in a Clifford algebra Cl(p, q) such that if
V := matrix(2, 2, [a, b, c, d]);
and a, b, c, d are elements in Cl(p, q), then the following conditions must be met:
1. a, b, c, d are products of 1-vectors,
2. the pseudodeterminant of V is +1 or -1 (or, Id or -Id in the algebra),
3. a &c reversion(b), reversion(b) &c d, d &c reversion(c), and reversion(c) &c a are all 1-vectors.
See reversion for more information on this Clifford algebra anti-automorphism and &c for information about the Clifford product inn Cl(B). For information about the pseudodeterminant see pseudodet .
Condition (1) above implies that a, b, c, and d are elements of the Lipschitz group of R^(p,q). Procedure isproduct is used to determine whether this condition is met.
Recall that in dimensions n >= 3 sense preserving conformal mappings are restrictions of the Mobius transformations and are compositions of rotations, translations, dilations and transversions (called also special conformal transformations). A Mobius transformation in R^(p,q) can be written in the form
x --> (a x + b) (c x + d)^(-1)
where x is a 1-vector that belongs to R^(p,q), a, b, c, d belong to Cl(p,q), and, the products and the inverse are taken in Cl(p,q). This transformation may be represented by the Vahlen matrix V defined above.
Rotations, translations, dilations, and transversions will then be represented as follows:
rotations x --> a x a^(-1) where a is in Spin+(p,q), V = matrix(2, 2, [a, 0, 0, a])
translations x --> x + b where b is in R^(p,q) , V = matrix(2, 2, [1, b, 0, 1])
dilations x --> s x where s > 0, V = matrix(2, 2, [sqrt(s), 0, 0, 1/sqrt(s)])
transversions x --> (x + x^2 c)/(1 + 2 x . c + x^2 c^2), V = matrix(2, 2, [1, 0 , c, 1]),
where c is in R^(p,q), and x . c is the dot product in R^(3,1).
For this procedure to work, the bilinear form B must be assigned.
Since the procedure 'isproduct' is not optimized for polynomials of grade higher than 3, condition (1) can only be checked for monomials of higher grades than 3, but not polynomials.
References:
Pertti Lounesto,
"CLICAL and counter-examples"
, in eds. R. Ablamowicz, P. Lounesto, and J. Parra,
'Clifford Algebras with Symbolic and Numeric Computations'
, Birkhauser, Boston, 1996, pp. 3--30.
Pertti. Lounesto and Arthur Springer,
"Mobius transformations and Clifford algebras of Euclidean and anti-Euclidean spaces,"
in
'Deformations of Mathematical Physics,'
ed. J. Lawrynowicz, Kluwer Academic Publishers, 1989, pp. 79--90.
Pertti Lounesto and Esko Latvamaa,
"Conformal transformations and Clifford algebras,"
Proceedings of the American Mathematical Society, Volume 79, Number 4, August 1980, pp. 533--538.
Johannes Maks,
"Modulo (1,1) periodicity of Clifford algebras and the generalized (anti-)Mobius
transformations".
Thesis, Technische Universiteit Delft, 1989.
Examples:
> restart:with(Cliff5):_prolevel;
> eval(makealiases(6)):
Example 1: Simple cases in the signature (3,1).
(1) Rotations:
> B:=linalg[diag](1,1,1,-1):#bilinear form for the Minkowski space
> a:=e1we2; #an element of grade 2 in Spin+(3,1)
> R:=linalg[matrix](2,2,[a,0,0,a]);
> isVahlenmatrix(R);
(2) Translations:
> b:=e1+2*e3; #vector in R^(3,1)
> T:=linalg[matrix](2,2,[1,b,0,1]);
> isVahlenmatrix(T);
(3) Dilations:
> delta:=1/4: # a positive parameter
> Dil:=linalg[matrix](2,2,[sqrt(delta),0,0,1/sqrt(delta)]);
> isVahlenmatrix(Dil);
(4) Transversions:
> c:=2*e1-e3; # vector in R^(3,1)
> Tv:=linalg[matrix](2,2,[1,0,c,1]);
> isVahlenmatrix(Tv);
>
Example 2: If we now take a product of these four matrices above, we will obtain an element of the conformal group in R^(3,1):
> conf:=R &cQm T &cQm Dil &cQm Tv;
>
Since in the product above each matrix appeared exactly once , the diagonal entries of 'conf' must be invertible:
> cinv(conf[1,1]); #inverse of conf[1,1]
> cmul(%,conf[1,1]); #let's verify the inverse of conf[1,1]
> cinv(conf[2,2]); #inverse of conf[2,2]
> cmul(%,conf[2,2]); #let's verify the inverse of conf[2,2]
However, there are elements in the conformal group of R^(3,1) whose Vahlen matrices do not have invertible elements at all. The following example of such matrix is due to Johannes Maks.
>
Example 3: (Johannes Maks) Example of a Vahlen matrix W without any invertible entries. Matrix W defined below represents an element in the identity component of the conformal group of R^(3,1).
> makealiases(4):eval(%):
> W:=evalm((1/2)*linalg[matrix](2,2,[1-e14,-e1+e4,e1+e4,1+e14]));
Notice that the diagonal elements of W are non-trivial idempotents in Cl(3,1), hence they are not invertible in Cl(3,1):
> type(W[1,1],idempotent); #element (1,1) of W is an idempotent
> type(W[2,2],idempotent); #element (2,2) of W is an idempotent
> cinv(W[1,1]); #trying to compute the inverse of W[1,1] gives an error
Warning, testing why entered argument has no inverse...
Error, (in cinv) element, 1/2-1/2*e1we4, is a non-trivial idempotent in signature, [3, 1], and as such it has no inverse
Notice also that the off-diagonal elements of W are isotropic vectors in R^(3,1), hence they are also non-invertible:
> cmul(W[1,2],W[1,2]);
> cmul(W[2,1],W[2,1]);
> cinv(W[1,2]);#trying to compute the inverse of W[1,2] gives an error
Warning, testing why entered argument has no inverse...
Error, (in cinv) element, -1/2*e1+1/2*e4, is nilpotent in signature, [3, 1], and as such it has no inverse
Let's now verify that W is a Vahlen matrix:
> isVahlenmatrix(W);
However, W is an element of the identity component of the conformal group in R^(3,1) since its pseudo-determinant is 1, and since it can be written as a product of a transversion, a translation, and a transversion. Thus, in another words, W is not a product of just one rotation, one translation, one dilation, and/or one transversion:
> Tv:=linalg[matrix](2,2,[1,0,(e1+e4)/2,1]);
> T:=linalg[matrix](2,2,[1,(-e1+e4)/2,0,1]);
> Tv &cQm T &cQm Tv,displayid(W); # W = Tv &cQm T &cQm Tv
> pseudodet(W); #computing pseudo-determinant of W
Thus, the above computation confirms that W = Tv &cQm T &cQm Tv and that the pseudo-determinant of W is 1.
>
Example 4: This is another variation of Johannes Maks' example of a Vahlen matrix W without any invertible entries. Matrix W represents an element in the identity component of the conformal group of R^(3,1).
> W:=evalm((1/2)*linalg[matrix](2,2,[1-e24,-e2+e4,e2+e4,1+e24]));
Notice that the diagonal elements of W are non-trivial idempotents in Cl(3,1), hence they are not invertible in Cl(3,1):
> type(W[1,1],idempotent); #element (1,1) of W is an idempotent
> type(W[2,2],idempotent); #element (2,2) of W is an idempotent
> cinv(W[1,1]); #trying to compute the inverse of W[1,1] gives an error
Warning, testing why entered argument has no inverse...
Error, (in cinv) element, 1/2-1/2*e2we4, is a non-trivial idempotent in signature, [3, 1], and as such it has no inverse
Notice also that the off-diagonal elements of W are isotropic vectors in R^(3,1), hence they are also non-invertible:
> cmul(W[1,2],W[1,2]);
> cmul(W[2,1],W[2,1]);
> cinv(W[1,2]);#trying to compute the inverse of W[1,2] gives an error
Warning, testing why entered argument has no inverse...
Error, (in cinv) element, -1/2*e2+1/2*e4, is nilpotent in signature, [3, 1], and as such it has no inverse
Let's now verify that W is a Vahlen matrix:
> isVahlenmatrix(W);
However, W is an element of the identity component of the conformal group in R^(3,1) since its pseudo-determinant is 1, and since it can be written as a product of a transversion, a translation, and a transversion. As before, W is not a product of just one rotation, one translation, one dilation, and/or one transversion:
> Tv:=linalg[matrix](2,2,[1,0,(e2+e4)/2,1]);
> T:=linalg[matrix](2,2,[1,(-e2+e4)/2,0,1]);
> Tv &cQm T &cQm Tv,map(displayid,W); # W = Tv &cQm T &cQm Tv
> pseudodet(W); #computing pseudo-determinant of W
>
Thus, the above computation confirms that W = Tv &cQm T &cQm Tv and that the pseudo-determinant of W is 1.
See Also: Cliff5[reversion] , Cliff5[`type/idempotent`] , Cliff5[cmul] , Cliff5[`type/climatrix] , Cliff5[makealiases] , Cliff5[displayid] , Cliff5[cinv] , Cliff5[&cQm] , Cliff5[pseudodet] , Cliff5[isproduct]
(c) Copyright October 8, 1995, by Rafal Ablamowicz & Bertfried Fauser, all rights reserved.
Last modified: December 26, 2001, RA/BF.