Function:
Cli5plus[`dwedge`], Cli5plus[`&dw`] - Graßmann wedge product for a different filtration
Calling Sequence:
c1 := dwedge[K](p1,p2,...,pn)
c1 := &dw[K](p1,p2,...,pn)
Parameters:
p1,p2,...,pn - Clifford polynoms (elements of one of these types: `type/clibasmon` , `type/climon` , `type/clipolynom` )
K - index of type name, symbol, matrix, array, or `&*`(numeric,{name,symbol,matrix,array})
Output:
c1 : a Clifford polynom
Description:
The dotted-wedge (dwedge) accompanies the Graßmann wedge product, but differs in its graduation. In fact both products are isomorphic as exterior products, but relay on different filtrations. The dotted wedge product and the undotted one are related by the process of cliffordization which is used in CLIFFORD internally to compute the Clifford product in Cl(V,B). However, the cliffordization is performed in this case by an antisymmetric bilinear form B=F, say F(x,y)=-F(y,x), where x and y are 1-vectors in V.
Procedure 'dwedge' requires one index of type name, symbol, matrix, array, `&*`(numeric,{name,symbol,matrix,array}). When the index is a matrix or an array, it must be antisymmetric.
It can be shown that the Wick-theorem of normalordering, well known in QFT and many particle QM, is exactly described by this process.
While being isomorphic as Graßmann algebras and hence beeing interchangeable, the difference becomes important when further structures are considered. For example, when a Clifford algebra is build over the space of this differently graded Graßmann algebra, or when quantum deformations are modeled within an undeformed Clifford algebra, etc..
The dotted wedge is a wrapper function which actually uses `convert/wedge_to_dwedge` and `convert/dwedge_to_wedge` to map between the two basis sets. This is possible since the new Graßmann algebra is a cliffordized Graßmann algebra w.r.t. a bilinear form F as stated above.
The ampersand version of this procedure is called `&dw`.
NOTE: Til now both types of algebras are expanded (formally) over the same basis Grassmann monomials which, according to CLIFFORD's convention, are written as eiwej... . It is the responsibility of the user to keep track which type of wedge he/she is using and which expression is based on which exterior product, dotted or undotted. It is a good idea it to assign such expressions to a descriptive lhs, see below.
References:
[1] Ablamowicz, R.: “Helmstetter formula and rigid motions with CLIFFORD”, in "Advances in Geometric Algebra with Applications in Science and Engineering -- Automatic Theorem proving, Computer Vision, Quantum and Neural Computing, and Robotics", Eds. Eduardo Bayro-Corrochano and Garret Sobczyk, Birkhäuser, 2001.
[2] Ablamowicz, R. and Bertfried Fauser: “On the decomposition of Clifford algebras of arbitrary bilinear form”, Rafal Ablamowicz and Bertfried Fauser, in “Clifford Algebras and their Applications in Mathematical Physics”, Eds. Rafal Ablamowicz and Bertfried Fauser, Vol. 1: Algebra and Physics, Birkhäuser, Boston, 2000, pages 341--366 (see also http://www.birkhauser.com/cgi-win/isbn/0-8176-4182-3).
[3] “Clifford Algebras and their Applications in Mathematical Physics”, Eds. Rafal Ablamowicz and Bertfried Fauser, Vol. 1: Algebra and Physics, Birkhäuser, Boston, 2000, (ISBN 0-8176-4182-3) (for more information go to http://math.tntech.edu/rafal/mexico/mexico.html).
[4] Ablamowicz, R. and P. Lounesto: “On Clifford algebras of a bilinear form with an antisymmetric part,” with P. Lounesto, in “Clifford Algebras with Numeric and Symbolic computations”, Eds. R. Ablamowicz, P. Lounesto, and J. Parra, Birkhäuser, Boston, 1996, pages 167-188.
[5] “Clifford Algebras with Numeric and Symbolic Computations”, Eds. Rafal Ablamowicz, Pertti Lounesto, and J. Parra, Birkhäuser, Boston, 1996 (ISBN 0-8176-3907-1).
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.
Example 1 : Simple examples first:
>
dwedge[K](e1+2*e1we3,e4+3*e1we2);
dwedge[-K](e1+2*e1we3,e4+3*e1we2);
&dw(e1+2*e1we3,e4+3*e1we2); #default index in `&dw` is F
&dw[-F](e1+2*e1we3,e4+3*e1we2);
>
Example 2:
Observe that conversion from the undotted wedge basis to the dotted wedge basis using antisymmetric form F and 'dwedge[F]' are related through the following identity:
convert(e1we2w...wen,wedge_to_dwedge,F) = dwedge[F](e1,e2,...,en)
which can be shown as follows in dim_V <=6:
> F:=array(1..9,1..9,antisymmetric):
>
##when dim_V = 2:
simplify(dwedge[F](e1,e2)=convert(wedge(e1,e2),wedge_to_dwedge,F));
>
##when dim_V = 3:
simplify(dwedge[F](e1,e2,e3)=convert(wedge(e1,e2,e3),wedge_to_dwedge,F));
>
##when dim_V = 4:
simplify(dwedge[F](e1,e2,e3,e4)=convert(wedge(e1,e2,e3,e4),wedge_to_dwedge,F));
>
##when dim_V = 5:
simplify(dwedge[F](e1,e2,e3,e4,e5)-convert(wedge(e1,e2,e3,e4,e5),wedge_to_dwedge,F));
>
##when dim_V = 6:
simplify(dwedge[F](e1,e2,e3,e4,e5,e6)-convert(wedge(e1,e2,e3,e4,e5,e6),wedge_to_dwedge,F));
>
Example 3: Operation 'dwedge' is associative with Id as a unit:
>
dwedge[F](dwedge[F](e1,e2),e3);
dwedge[F](e1,dwedge[F](e2,e3));
>
dwedge[F](dwedge[F](e1,e2we3),e4);
dwedge[F](e1,dwedge[F](e2we3,e4));%%-%;
>
dwedge[F](dwedge[F](e1,e2we3),e4we5);
dwedge[F](e1,dwedge[F](e2we3,e4we5));%%-%;
Finally, for some arbitrary random Clifford polynomials expressed in Grassmann undotted basis:
>
u:=2+e1-3*e2we3+e4we5we6:
v:=3-4*e1we2we3+e7:
z:=4-2*e3we4+e5we6-e8:
>
dwedge[F](Id,u)=u; #unity
dwedge[F](u,Id)=u;
>
dwedge[F](dwedge[F](u,v),z):#associativity
dwedge[F](u,dwedge[F](v,z)):%%-%;
Wea also have the following
Commutative Diagram 5: Wedge in undotted and dwedge in dotted bases
:
wedge(u,v) = convert(dwedge(convert(u,wedge_to_dwedge,F),convert(v,wedge_to_dwedge,F)),dwedge_to_wedge,-F)
which we show as follows:
>
uu:=convert(u,wedge_to_dwedge,F); #u converted to dotted basis
vv:=convert(v,wedge_to_dwedge,F); #v converted to dotted basis
> out1:=dwedge[F](uu,vv): #dwedge computed w.r.t. F
> out2:=convert(out1,dwedge_to_wedge,-F); #previous result converted back to undotted basis
> out3:=wedge(u,v); #direct computation of the wedge product in undotted basis
> out2-out3; #the same results!
>
Example 4: (Dotted and undotted wedge bases) First we expand the basis of the original wedge into the dotted wedge and back. For this purpose we choose dim_V=3 and consider Cl(C,B) where the antisymmetric part of B is denoted by F (and its negative by FT), while the symmetric part of B is denoted by g.
>
dim_V:=3:
F:=array(1..dim_V,1..dim_V,antisymmetric):
g:=array(1..dim_V,1..dim_V,symmetric):
B:=evalm(g+F):
FT:=evalm(-F):
F,FT = evalm(F),evalm(FT);
g,B = evalm(g),evalm(B);
w_bas:=cbasis(dim_V); ## the wedge basis
Now we map the convert function onto this basis to get the dotted-wedge basis (and back to test that this device works properly)
>
d_bas:=map(convert,w_bas,wedge_to_dwedge,F);
test_wbas:=map(convert,d_bas,dwedge_to_wedge,-F);
Note that only the scalar Id
and the one vector basis elements
ei
are unaltered and that the other basis elements of higher grade pick up additional terms of lower grade (which preserves the filtration).
It is possible to define aliases for the dotted wedge basis "monomials" similar to the Grassmann basis monomials used by 'CLIFFORD'. For example, we could denote the element e1we2 + F[1,2]*Id by e1de2 or e1We2, and smilarly for other elements:
>
alias(e1We2=e1we2 + F[1,2]*Id,
e1We3=e1we3 + F[1,3]*Id,
e2We3=e2we3 + F[2,3]*Id,
e1We2We3=e1we2we3+F[2,3]*e1-F[1,3]*e2+F[1,2]*e3);
and then Maple will display automatically dotted basis in d_bas in terms of the aliases:
> d_bas;
While command 'cbasis' displays basis elements in the Grassmann basis by default, it is not difficult to write a new procedure that would display the dotted basis instead. For example, procedure 'dottedbasis' returns such basis. Since we have defined aliases above, output from 'dottedcbasis' will be automatically converted to aliases:
> dottedcbasis[F](3);
> dottedcbasis[F](3,'even');
> dottedcbasis[F](3,2);
With the procedure 'findbasis' which returns linearly independent elements from a list, we can verify that the above lists contain linearly independent elements:
> findbasis(dottedcbasis[F](3));
> findbasis(dottedcbasis[F](3,'even'));
> findbasis(dottedcbasis[F](3,2));
>
Example 5: (Commutative Diagram 1: Contraction in dotted and undotted bases) The contraction w.r.t. any bilinear form works on both sets in the same manner which can be seen if we re-convert the dotted-wedge basis after the computation into the wedge basis. In a reasonable setting, the antisymmetric bilinear form F would be the antisymmetric part of B. To read more about the left contraction LC in Cl(B), go to the help page for LC or see [1, 2, 4]. To illustrate this fact, we first compute left contraction by e1 of every element in the standard Grassmann wedge basis w_bas with respect to the entire form B:
> 'w_bas'=w_bas; #standard Grassmann wedge basis in Cl(B)
> w_wout:=map2(LC,e1,w_bas,B);#left contraction LC in Cl(B) w.w.t. B in wedge basis
Next, we compute left contraction by e1 of every element in the dotted wedge basis d_bas with respect to the entire form B. Recall from the above that conversion from the wedge basis to the dotted wedge basis used the antisymmetric part F of B:
> 'd_bas'=d_bas; #dotted wedge basis in Cl(B)
> w_dout1:=map2(LC,e1,d_bas,B);#left contraction LC in Cl(B) w.w.t. B in dotted wedge basis
Notice that in the above coefficients of g, the symmetric part of B, are mixed with the coefficients of the antisymmetric part F of B. To remove the F coefficients, we need to convert back the above result to the un-dotted standard Grassmann basis using the negative -F, that is, the negative of the antisymmetric part of B in the conversion process:
> w_dout:=map(convert,w_dout1,dwedge_to_wedge,-F);#converting back to undotted basis
> map(simplify,w_dout-w_wout);
>
This computation shows clearly the isomorphy between both pictures. To show that the new structure is nevertheless valuable for other reasons, we proceed with Clifford products.
Example 6: (Commutative Diagram 2: Clifford product in dotted and undotted bases) We can build a Clifford algebra Cl(B) over each basis set, that is, w_wout or w_dout, but with different bilinear forms: when B=g and when B=g+F (following notation from [1, 2, 4]), where g is the symmetric part of B and F is the antisymmetric part of B:
> B,g,F=evalm(B),evalm(g),evalm(F); #previously defined
Let us compute some such Clifford products using the facility of cmul to take a bilinear form (here in matrix form) as index. We will show an example with the following two elements:
>
w_p1:=e1we2;
w_p2:=a*e3+b*e2we3;
We can then define Clifford product 'cmulg' with respect to the symmetric part g, and another Clifford product 'cmulB' with respect to the entire form B:
>
cmulg:=proc() RETURN(cmul[g](args)) end:
cmulB:=proc() RETURN(cmul[B](args)) end:
Thus, we are ready to perform computations around our commutative diagram.
First, we compute Clifford product cmul[g] in Cl(g), that is, with respect to the symmetric part g of the bilinear form B, of the two above defined elements w_p1 and w_p2 expressed in undotted Grassmann basis.
> w_out1:=cmulg(w_p1,w_p2); ## Clifford product w.r.t. g in Cl(g) in wedge basis
Now, we convert each element p1 and p2 to the dotted wedge basis:
>
d_p1:=convert(w_p1,wedge_to_dwedge,F);
d_p2:=convert(w_p2,wedge_to_dwedge,F); #incomplete conversion to e1We2, etc. basis
We now compute the Clifford product of d_p1 and d_p2 in Cl(B) in the dotted wedge basis:
> d_out1:=cmulB(d_p1,d_p2); ## Clifford product w.r.t. B=g+F in Cl(B) in dwedge basis
We now convert the above result back to the un-dotted wedge basis:
> w_out2:=convert(d_out1,dwedge_to_wedge,-F); ## convert result dwedge-> wedge
Finally, we show that this result is the same as before when we computed Clifford product of p1 and p2 in Cl(g):
> simplify(w_out1-w_out2); ## show equality !
>
This shows (one can prove this) that the Clifford algebra Cl(g) of the symmetric part g of B using the undotted exterior basis is isomorphic, as an associative algebra, to the Clifford algebra Cl(B) of the entire bilinear form B = g + F spanned by the dotted wedge basis if the antisymmetric part F of B is exactly the same F as is used to connect the two basis sets (cf. [1, 2, 4]).
Example 7: (Commutative Diagram 3: Reversion in dotted and undotted bases) We proceed to show that the expansion of the Clifford basis elements into the dotted or undotted exterior products has also implications for other well known operations such as e.g. the Clifford reversion. Only if the bilinear form is symmetric, we find that the reversion is grade preserving, otherwise it reflects only the filtration (i.e. is in general a sum of terms of the same and lower degrees).
>
reversion(e1we2,B); #reversion with respect to B
reversion(e1we2,g); #reversion with respect to g (classical result)
Observe in the above that only when B[1,2]=B[2,1], the result is -e1we2 known from the theory of classical Clifford algebras. Likewise,
> cbas:=cbasis(3);
> map(reversion,cbas,B);
If instead of B we use a symmetric matrix 'g' defined above, we obtain instead
> map(reversion,cbas,g);
Convert now e1we2 to the dotted basis and call it e1We2:
> convert(e1we2,wedge_to_dwedge,F);
Apply reversion to e1We2 with respect to F to get the reversed element in the dotted basis:
> reversed_e1We2:=reversion(e1We2,F);
Observe, that the above element is equal to the negative of e1We2 just like reversing e1we2 with respect to the symmetric part g of B:
> reversed_e1We2+e1We2;
Finally, convert reversed_e1We2 to the un-dotted standard Grassmann basis to get -e1we2:
> convert(reversed_e1We2,dwedge_to_wedge,-F);
The above, of course, can be obtained by applying reversion to e1we2 with respect to the symmetric part of B:
> reversion(e1we2,g); #reversion with respect to the symmetric part g of B
This shows that the dotted wedge basis is the particular basis which is stable under the Clifford reversion computed with respect to F, the antisymmetric part of the bilinear form B. This requirement allows one to distinguish Clifford algebras Cl(g) which have a symmetric bilinear form g from those which do not have such symmetric bilinear form but a more general form B instead. We call the former
classical Clifford algebras
while we use the term
quantum Clifford algebras
for the general non-necessarily-symmetric case.
Example 8:
It is easy to write a wrapper for the Graßmann co-product too. Since the co-product
&gco
makes essential use of the decomposition of elements into one-vectors, we expect that the dotted-Graßmann co-product will depend on F, that is, then antisymmetric part of B. First we have to load
Bigebra
package.
NOTE:
&gco_d
computes the dotted Graßmann co-product in the undotted wedge basis! (The Graßmann co-product on the dotted wedge basis w.r.t. the dotted wedge basis is according to the isomorphy theorem for those algebras identical to the original Graßmann co-product).
> _CLIENV[_SILENT]:=`true`:with(Bigebra);
Warning, new definition for init
Warning, new definition for drop_t
Warning, new definition for gco_d_monom
Warning, new definition for gco_monom
>
w_p1:=e1we2;
w_p2:=&gco_d(w_p1);
The following examples compose the dotted co-product with dotted and undotted wedge (acting on a wedge basis!!)
>
dwedge[F](e1,e2);
dwedge[F](e1,e2,e3);
We then substitute `&dw` and `&w` for the tensor product sign `&t` and evaluate. We will show the results sided by side for easier comparison:
>
subs(`&t`=`&dw`,&gco_d(Id));simplify(%);
subs(`&t`=`&w`,&gco_d(Id));simplify(%);
>
subs(`&t`=`&dw`,&gco_d(e1));simplify(%);
subs(`&t`=`&w`,&gco_d(e1));simplify(%);
>
subs(`&t`=`&dw`,&gco_d(e2));simplify(%);
subs(`&t`=`&w`,&gco_d(e2));simplify(%);
>
subs(`&t`=`&dw`,&gco_d(e1we2));simplify(%);
subs(`&t`=`&w`,&gco_d(e1we2));simplify(%);
>
subs(`&t`=`&dw`,&gco_d(e1we3));simplify(%);
subs(`&t`=`&w`,&gco_d(e1we3));simplify(%);
>
subs(`&t`=`&dw`,&gco_d(e2we3));simplify(%);
subs(`&t`=`&w`,&gco_d(e2we3));simplify(%);
>
subs(`&t`=`&dw`,&gco_d(e1we2we3));simplify(%);
subs(`&t`=`&w`,&gco_d(e1we2we3));simplify(%);
It is of utmost importance, that in these calculations we find that the usual loop tangle mult \citc Delta_{mult} which come up with the dimension of the spaces involved fails here. This might have an strong impact on the renormalization theory in QFT.
Note however, that if we do everything in the same algebra we end up with the correct factor 2^(grade_of_x) for the dotted bi-vector e1we2:
> d_p1:=&gco_d(dwedge[F](e1,e2));
> drop_t(&map(d_p1,1,dwedge[F]));
>
d_p2:=convert(%,wedge_to_dwedge,F);#comes up with the factor 4 in the dotted basis
'd_p2'=-4*reversion(e1we2);
>
See Also: Bigebra [`&gco`] , Bigebra[`&cco`] , Bigebra[`&t`] , Bigebra[drop_t] , Bigebra[`&map`]
(c) Copyright October 8, 1995, by Rafal Ablamowicz & Bertfried Fauser, all rights reserved.
Last modified: January 4, 2002, RA/BF.