/* Copyright (C) 2004 Viktor T. Toth * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be * useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * ATENSOR basics */ if get('atensor,'version)=false then load(atensor); ("ATENSOR can simplify noncommutative products in various algebras.")$ ("Let us begin with a Clifford algebra")$ init_atensor(clifford); atensimp(u.u); atensimp(u.v-v.u); ("Here is the symplectic algebra")$ init_atensor(symplectic); atensimp(u.v+v.u); ("The function af is an antisymmetric scalar-valued function.")$ atensimp(w.u.v); ("A Clifford algebra of positive dimension 3 is defined as")$ init_atensor(clifford,3); ("The symbol used for base vectors is stored in asymbol")$ asymbol; atensimp(v[1].v[1]); ("ATENSOR knows about predefined algebras, such as quaternions")$ init_atensor(quaternion); ("Quaternions are defined as a Clifford algebra of 2 negative dimensions")$ adim; ("The antisymmetric function af() takes its values from the matrix aform")$ aform; ("Quaternionic units are v[1], v[2], and v[1].v[2]")$ atensimp(v[1].v[1]); atensimp(v[2].v[2]); atensimp((v[1].v[2]).(v[1].v[2])); ("We can even construct the quaternionic multiplication table:")$ q:zeromatrix(4,4); q[1,1]:1; for i thru adim do q[1,i+1]:q[i+1,1]:v[i]; q[1,4]:q[4,1]:v[1].v[2]; for i from 2 thru 4 do for j from 2 thru 4 do q[i,j]:atensimp(q[i,1].q[1,j]); q; ("Scalar variables are treated appropriately")$ declare([a,b],scalar); atensimp((a+b*v[1].v[2]).(v[1].v[2])); ("Verify the Jacobi-identity for Lie algebras")$ init_atensor(lie_envelop); ("Let's define the Lie-bracket")$ lbr(u,v):=u.v-v.u; atensimp(lbr(u,lbr(v,w))); atensimp(lbr(v,lbr(w,u))); atensimp(lbr(w,lbr(u,v))); %th(3)+%th(2)+%th(1); /* End of demo -- comment line needed by MAXIMA to resume demo menu */