changed: -$Y=\{ {y_k}^{ji} \} \ i,j,k =1,2, ... n $ $Y=\{ {y_k}^{ji} \ i,j,k =1,2, ... n \}$ changed: ---T:=CartesianTensor(1,n,DEXPR INT) -T:=CartesianTensor(1,n,HDMP(concat[concat concat - [[[script(y,[[k],[j,i]]) - for i in 1..n] - for j in 1..n] - for k in 1..n], - [script(u,[[i]]) for i in 1..n], - [script(v,[[i]]) for i in 1..n] ],FRAC INT)) T:=CartesianTensor(1,n,DEXPR INT) --T:=CartesianTensor(1,n,HDMP(concat[concat concat -- [[[script(y,[[k],[j,i]]) -- for i in 1..n] -- for j in 1..n] -- for k in 1..n], -- [script(u,[[i]]) for i in 1..n], -- [script(v,[[i]]) for i in 1..n] ],FRAC INT)) changed: -test(reindex(reindex(Y,[1,3,2])*reindex(Y,[1,3,2]),[1,4,3,2])=reindex(contract(Y,1,Y,2),[3,1,2,4])) -AA := reindex(contract(Y,1,Y,2),[3,1,2,4])-Y*Y; ravel(AA) test(reindex(reindex(Y,[1,3,2])*reindex(Y,[1,3,2]),[1,4,3,2]) = reindex(contract(Y,1,Y,2),[3,1,2,4])) AA := reindex(reindex(Y,[1,3,2])*reindex(Y,[1,3,2]),[1,4,3,2])-Y*Y; ravel(AA) changed: - A scalar product is denoted by $U = \{ u^{ij} \}$ \begin{axiom} U:=unravel(concat [[script(u,[[],[j,i]]) for i in 1..n] for j in 1..n] )$T \end{axiom} We say that the scalar product is "associative" if the following tensor equation holds:: Y I = I Y U U \begin{axiom} UA := reindex(reindex(U,[2,1])*reindex(Y,[1,3,2]),[3,2,1])-U*Y; ravel(UA) \end{axiom}
An n-dimensional algebra is represented by a (1,2)-tensor
Y=\{ {y_k}^{ji} \ i,j,k =1,2, ... n \}
viewed as an operator with two inputs i,j and one
output k. For example in 2 dimensions
)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
T:=CartesianTensor(1,n, DEXPR INT)
--T:=CartesianTensor(1,n, HDMP(concat[concat concat -- [[[script(y, [[k], [j, i]]) -- for i in 1..n] -- for j in 1..n] -- for k in 1..n], -- [script(u, [[i]]) for i in 1..n], -- [script(v, [[i]]) for i in 1..n] ], FRAC INT)) 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
Given two vectors U=\{ u_i \} and V=\{ v_j \}
U:=unravel([script(u,[[i]]) for i in 1..n])$T
V:=unravel([script(v,[[i]]) for i in 1..n])$T
the tensor Y operates on their tensor product to
yield a vector W=\{ w_k = {y_k}^{ji} u_i v_j \}
W:=contract(contract(Y,3, product(U, V), 1), 2, 3)
Diagram:
U V 2i 3j \ / | 1k W
or in a more convenient notation:
W:=(Y*U)*V
The algebra Y is commutative if the following tensor
(the commutator) is zero
K:=Y-reindex(Y,[1, 3, 2])
A basis for the ideal defined by the coefficients of the commutator is given by:
C:=groebner(ravel(K))
An algebra is associative if:
Y I = I Y Y Y Note: right figure is mirror image of left! 2 3 6 2 5 6 2 3 4 \/ / \ \/ \ | / \/ = \/ = \|/ \ / | 4 1 1
In other words an algebra is associative if and only if the following (3,1)-tensor A=\{ {a_s}^{kji} = {y_s}^{kr} {y_r}^{ji} - {y_r}^{kj} {y_s}^{ri} \} is zero.
test(Y*Y = contract(product(Y,Y), 3, 4))
test(Y*Y = contract(Y,3, Y, 1))
test(reindex(reindex(Y,[1, 3, 2])*reindex(Y, [1, 3, 2]), [1, 4, 3, 2]) = reindex(contract(product(Y, Y), 1, 5), [3, 1, 2, 4]))
test(reindex(reindex(Y,[1, 3, 2])*reindex(Y, [1, 3, 2]), [1, 4, 3, 2]) = reindex(contract(Y, 1, Y, 2), [3, 1, 2, 4]))
AA := reindex(reindex(Y,[1, 3, 2])*reindex(Y, [1, 3, 2]), [1, 4, 3, 2])-Y*Y; ravel(AA)
AB:=groebner(ravel(AA))
#AB
The Jacobi identity requires the following tensor to be zero:
2 3 6 2 5 6 2 6 3 \ / / \ \ / \ \/ \/ / \ \/ \/\ \/ - \/ - \/ \ / \ 4 1 4
BA := AA - reindex(contract(Y,1, Y, 2), [3, 1, 4, 2]); ravel(BA)
BB:=groebner(ravel(BA));
#BB
A scalar product is denoted by U = \{ u^{ij} \}
U:=unravel(concat [[script(u,[[], [j, i]]) for i in 1..n] for j in 1..n] )$T
We say that the scalar product is "associative" if the following tensor equation holds:
Y I = I Y U U
UA := reindex(reindex(U,[2, 1])*reindex(Y, [1, 3, 2]), [3, 2, 1])-U*Y; ravel(UA)