An n-dimensional algebra is represented by a (1,2)-tensor
viewed as an operator with two inputs i,j
and one
output k
. For example in 2 dimensions
axiom
)library DEXPR
DistributedExpression is now explicitly exposed in frame initial
DistributedExpression will be automatically loaded when needed from
/var/zope2/var/LatexWiki/DEXPR.NRLIB/DEXPR
n:=2
axiom
T:=CartesianTensor(1,n,DEXPR INT)
Type: Domain
axiom
Y:=unravel(concat concat
[[[script(y,[[k],[j,i]])
for i in 1..n]
for j in 1..n]
for k in 1..n]
)$T
Type: CartesianTensor
?(1,
2,
DistributedExpression
?(Integer))
Given two vectors and
axiom
U:=unravel([script(u,[[i]]) for i in 1..n])$T
Type: CartesianTensor
?(1,
2,
DistributedExpression
?(Integer))
axiom
V:=unravel([script(v,[[i]]) for i in 1..n])$T
Type: CartesianTensor
?(1,
2,
DistributedExpression
?(Integer))
the tensor Y
operates on their tensor product to
yield a vector
axiom
W:=contract(contract(Y,3,product(U,V),1),2,3)
Type: CartesianTensor
?(1,
2,
DistributedExpression
?(Integer))
or in a more convenient notation:
axiom
W:=(Y*U)*V
Type: CartesianTensor
?(1,
2,
DistributedExpression
?(Integer))
The algebra Y
is commutative if the following tensor
(the commutator) is zero
axiom
K:=Y-reindex(Y,[1,3,2])
Type: CartesianTensor
?(1,
2,
DistributedExpression
?(Integer))
A basis for the ideal defined by the coefficients of the
commutator is given by:
axiom
C:=groebner(ravel(K))
Type: List(Polynomial(Integer))
An algebra is associative if:
Y I = I Y
Y Y
Note: right figure is mirror image of left!
1 2 5 1 4 5
\/ / \ \/
\/ = \/
\ /
6 3
In other words an algebra is associative if and only
if the following (3,1)-tensor
is zero.
axiom
A := Y*Y - reindex(Y,[1,3,2])*reindex(Y,[1,3,2]); ravel(A)
Type: List(DistributedExpression
?(Integer))