|
|
last edited 11 years ago by Bill Page |
1 2 3 4 5 6 7 8 | ||
Editor: page
Time: 2011/04/08 10:42:49 GMT-7 |
||
Note: Caley-Dickson |
changed: - 4-dimensional vector space representing Octonion Algebra 8-dimensional vector space representing Octonion Algebra changed: -T := CartesianTensor(1,dim,EXPR INT) R ==> EXPR INT T ==> CartesianTensor(1,dim,EXPR INT) changed: -Generate structure constants for Quaternion Algebra Generate structure constants for Octonion Algebra (the Caley-Dickson way) changed: -B:=map(x+->octon(x.1,x.2,x.3,x.4,x.5,x.6,x.7,x.8),1$SQMATRIX(dim,FRAC INT)::List List FRAC INT) -M:=matrix [[B.i*B.j for j in 1..dim] for i in 1..dim] -S(y)==map(x+->(x*inv(y)=1 or x*inv(y)=-1 => x*inv(y);0),M) -Yg:T:=unravel concat concat(map(S,B)::List List List FRAC POLY INT) Q ==> Quaternion R O ==> DirectProduct(2,Q) B0:=map(x+->octon(x.1,x.2,x.3,x.4,x.5,x.6,x.7,x.8),1$SQMATRIX(dim,R)::List List R) pair(x:Q,y:Q):O==directProduct vector [x,y] caleyOne:=pair(1,0) B:=map(x+->pair(quatern(x.1,x.2,x.3,x.4),quatern(x.5,x.6,x.7,x.8)),1$SQMATRIX(dim,R)::List List R) added: \begin{axiom} caleyMul(x:O,y:O):O == pair((x.1)*(y.1) - conjugate(y.2)*(x.2), (y.2)*(x.1) + (x.2)*conjugate(y.1)) caleyMul(caleyOne,caleyOne) M0:=matrix [[B0.i*B0.j for j in 1..dim] for i in 1..dim] M:=matrix [[caleyMul(B.i,B.j) for j in 1..dim] for i in 1..dim] \end{axiom} \begin{axiom} caleyConj(x:O):O == pair(conjugate(x.1), -x.2) caleyInv(x:O):O == inv(caleyMul(caleyConj x,x).1) * caleyConj(x) S0(y)==map(x+->(x*inv(y)=1 or x*inv(y)=-1 => x*inv(y);0),M0) S0(B0.1) S(y)==map(x+->(caleyMul(x,caleyInv y)=caleyOne => 1;caleyMul(x,caleyInv y)=-caleyOne => -1;0),M) S(B.1) Yg0:T:=unravel concat concat(map(S0,B0)::List List List R); Yg:T:=unravel concat concat(map(S,B)::List List List R) test(Yg0=Yg) \end{axiom}
8-dimensional vector space representing Octonion Algebra
)set output tex off
)set output algebra on
dim:=8
(1) 8
R ==> EXPR INT
T ==> CartesianTensor(1,dim, EXPR INT)
X:List T := [unravel [(i=j => 1;0) for j in 1..dim] for i in 1..dim]
(4) [[1,0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 1]]
X(1),X(2)
(5) [[1,0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0]]
Generate structure constants for Octonion Algebra (the Caley-Dickson way)
Q ==> Quaternion R
O ==> DirectProduct(2,Q)
B0:=map(x+->octon(x.1,x.2, x.3, x.4, x.5, x.6, x.7, x.8), 1$SQMATRIX(dim, R)::List List R)
(8) [1,i, j, k, E, I, J, K]
pair(x:Q,y:Q):O==directProduct vector [x, y]
Function declaration pair : (Quaternion(Expression(Integer)),Quaternion(Expression(Integer))) -> DirectProduct(2, Quaternion( Expression(Integer))) has been added to workspace.
caleyOne:=pair(1,0)
Compiling function pair with type (Quaternion(Expression(Integer)),Quaternion(Expression(Integer))) -> DirectProduct(2, Quaternion( Expression(Integer)))
(10) [1,0]
B:=map(x+->pair(quatern(x.1,x.2, x.3, x.4), quatern(x.5, x.6, x.7, x.8)), 1$SQMATRIX(dim, R)::List List R)
(11) [[1,0], [i, 0], [j, 0], [k, 0], [0, 1], [0, i], [0, j], [0, k]]
caleyMul(x:O,y:O):O == pair((x.1)*(y.1) - conjugate(y.2)*(x.2), (y.2)*(x.1) + (x.2)*conjugate(y.1))
Function declaration caleyMul : (DirectProduct(2,Quaternion( Expression(Integer))), DirectProduct(2, Quaternion(Expression( Integer)))) -> DirectProduct(2, Quaternion(Expression(Integer))) has been added to workspace.
caleyMul(caleyOne,caleyOne)
Compiling function caleyMul with type (DirectProduct(2,Quaternion( Expression(Integer))), DirectProduct(2, Quaternion(Expression( Integer)))) -> DirectProduct(2, Quaternion(Expression(Integer)))
(13) [1,0]
M0:=matrix [[B0.i*B0.j for j in 1..dim] for i in 1..dim]
+1 i j k E I J K + | | |i - 1 k - j I - E - K J | | | |j - k - 1 i J K - E - I| | | |k j - i - 1 K - J I - E| (14) | | |E - I - J - K - 1 i j k | | | |I E - K J - i - 1 - k j | | | |J K E - I - j k - 1 - i| | | +K - J I E - k - j i - 1+
M:=matrix [[caleyMul(B.i,B.j) for j in 1..dim] for i in 1..dim]
(15) +[1,0] [i, 0] [j, 0] [k, 0] [0, 1] [0, i] [0, j] [0, k] + | | |[i, 0] [- 1, 0] [k, 0] [- j, 0] [0, i] [0, - 1] [0, - k] [0, j] | | | |[j, 0] [- k, 0] [- 1, 0] [i, 0] [0, j] [0, k] [0, - 1] [0, - i]| | | |[k, 0] [j, 0] [- i, 0] [- 1, 0] [0, k] [0, - j] [0, i] [0, - 1]| | | |[0, 1] [0, - i] [0, - j] [0, - k] [- 1, 0] [i, 0] [j, 0] [k, 0] | | | |[0, i] [0, 1] [0, - k] [0, j] [- i, 0] [- 1, 0] [- k, 0] [j, 0] | | | |[0, j] [0, k] [0, 1] [0, - i] [- j, 0] [k, 0] [- 1, 0] [- i, 0]| | | +[0, k] [0, - j] [0, i] [0, 1] [- k, 0] [- j, 0] [i, 0] [- 1, 0]+
caleyConj(x:O):O == pair(conjugate(x.1),-x.2)
Function declaration caleyConj : DirectProduct(2,Quaternion( Expression(Integer))) -> DirectProduct(2, Quaternion(Expression( Integer))) has been added to workspace.
caleyInv(x:O):O == inv(caleyMul(caleyConj x,x).1) * caleyConj(x)
Function declaration caleyInv : DirectProduct(2,Quaternion( Expression(Integer))) -> DirectProduct(2, Quaternion(Expression( Integer))) has been added to workspace.
S0(y)==map(x+->(x*inv(y)=1 or x*inv(y)=-1 => x*inv(y);0),M0)
S0(B0.1)
Compiling function S0 with type Octonion(Expression(Integer)) -> Matrix(Octonion(Expression(Integer)))
+1 0 0 0 0 0 0 0 + | | |0 - 1 0 0 0 0 0 0 | | | |0 0 - 1 0 0 0 0 0 | | | |0 0 0 - 1 0 0 0 0 | (19) | | |0 0 0 0 - 1 0 0 0 | | | |0 0 0 0 0 - 1 0 0 | | | |0 0 0 0 0 0 - 1 0 | | | +0 0 0 0 0 0 0 - 1+
S(y)==map(x+->(caleyMul(x,caleyInv y)=caleyOne => 1;caleyMul(x, caleyInv y)=-caleyOne => -1;0), M)
S(B.1)
Compiling function caleyConj with type DirectProduct(2,Quaternion( Expression(Integer))) -> DirectProduct(2, Quaternion(Expression( Integer)))
Compiling function caleyInv with type DirectProduct(2,Quaternion( Expression(Integer))) -> DirectProduct(2, Quaternion(Expression( Integer)))
Compiling function S with type DirectProduct(2,Quaternion(Expression (Integer))) -> Matrix(Integer)
+1 0 0 0 0 0 0 0 + | | |0 - 1 0 0 0 0 0 0 | | | |0 0 - 1 0 0 0 0 0 | | | |0 0 0 - 1 0 0 0 0 | (21) | | |0 0 0 0 - 1 0 0 0 | | | |0 0 0 0 0 - 1 0 0 | | | |0 0 0 0 0 0 - 1 0 | | | +0 0 0 0 0 0 0 - 1+
Yg0:T:=unravel concat concat(map(S0,B0)::List List List R);
Yg:T:=unravel concat concat(map(S,B)::List List List R)
(23) +1 0 0 0 0 0 0 0 + +0 1 0 0 0 0 0 0 + | | | | |0 - 1 0 0 0 0 0 0 | |1 0 0 0 0 0 0 0 | | | | | |0 0 - 1 0 0 0 0 0 | |0 0 0 1 0 0 0 0 | | | | | |0 0 0 - 1 0 0 0 0 | |0 0 - 1 0 0 0 0 0 | [| |,| |, |0 0 0 0 - 1 0 0 0 | |0 0 0 0 0 1 0 0 | | | | | |0 0 0 0 0 - 1 0 0 | |0 0 0 0 - 1 0 0 0 | | | | | |0 0 0 0 0 0 - 1 0 | |0 0 0 0 0 0 0 - 1| | | | | +0 0 0 0 0 0 0 - 1+ +0 0 0 0 0 0 1 0 + +0 0 1 0 0 0 0 0+ +0 0 0 1 0 0 0 0+ | | | | |0 0 0 - 1 0 0 0 0| |0 0 1 0 0 0 0 0| | | | | |1 0 0 0 0 0 0 0| |0 - 1 0 0 0 0 0 0| | | | | |0 1 0 0 0 0 0 0| |1 0 0 0 0 0 0 0| | |, | |, |0 0 0 0 0 0 1 0| |0 0 0 0 0 0 0 1| | | | | |0 0 0 0 0 0 0 1| |0 0 0 0 0 0 - 1 0| | | | | |0 0 0 0 - 1 0 0 0| |0 0 0 0 0 1 0 0| | | | | +0 0 0 0 0 - 1 0 0+ +0 0 0 0 - 1 0 0 0+ +0 0 0 0 1 0 0 0 + +0 0 0 0 0 1 0 0 + | | | | |0 0 0 0 0 - 1 0 0 | |0 0 0 0 1 0 0 0 | | | | | |0 0 0 0 0 0 - 1 0 | |0 0 0 0 0 0 0 - 1| | | | | |0 0 0 0 0 0 0 - 1| |0 0 0 0 0 0 1 0 | | |, | |, |1 0 0 0 0 0 0 0 | |0 - 1 0 0 0 0 0 0 | | | | | |0 1 0 0 0 0 0 0 | |1 0 0 0 0 0 0 0 | | | | | |0 0 1 0 0 0 0 0 | |0 0 0 - 1 0 0 0 0 | | | | | +0 0 0 1 0 0 0 0 + +0 0 1 0 0 0 0 0 + +0 0 0 0 0 0 1 0+ +0 0 0 0 0 0 0 1+ | | | | |0 0 0 0 0 0 0 1| |0 0 0 0 0 0 - 1 0| | | | | |0 0 0 0 1 0 0 0| |0 0 0 0 0 1 0 0| | | | | |0 0 0 0 0 - 1 0 0| |0 0 0 0 1 0 0 0| | |, | |] |0 0 - 1 0 0 0 0 0| |0 0 0 - 1 0 0 0 0| | | | | |0 0 0 1 0 0 0 0| |0 0 - 1 0 0 0 0 0| | | | | |1 0 0 0 0 0 0 0| |0 1 0 0 0 0 0 0| | | | | +0 - 1 0 0 0 0 0 0+ +1 0 0 0 0 0 0 0+
test(Yg0=Yg)
(24) true
A scalar product is denoted by the (2,0)-tensor
U:T := unravel(concat [[script(u,[[], [j, i]]) for i in 1..dim] for j in 1..dim] )
+ 1,1 1, 2 1, 3 1, 4 1, 5 1, 6 1, 7 1, 8+ |u u u u u u u u | | | | | | 2, 1 2, 2 2, 3 2, 4 2, 5 2, 6 2, 7 2, 8| |u u u u u u u u | | | | | | 3, 1 3, 2 3, 3 3, 4 3, 5 3, 6 3, 7 3, 8| |u u u u u u u u | | | | | | 4, 1 4, 2 4, 3 4, 4 4, 5 4, 6 4, 7 4, 8| |u u u u u u u u | | | (25) | | | 5, 1 5, 2 5, 3 5, 4 5, 5 5, 6 5, 7 5, 8| |u u u u u u u u | | | | | | 6, 1 6, 2 6, 3 6, 4 6, 5 6, 6 6, 7 6, 8| |u u u u u u u u | | | | | | 7, 1 7, 2 7, 3 7, 4 7, 5 7, 6 7, 7 7, 8| |u u u u u u u u | | | | | | 8, 1 8, 2 8, 3 8, 4 8, 5 8, 6 8, 7 8, 8| |u u u u u u u u | + +
We say that the scalar product is associative if the tensor equation holds:
Y = Y U U
In other words, if the (3,0)-tensor:
i j k i j k i j k \ | / \/ / \ \/ \|/ = \ / - \ / 0 0 0
(1) |
ω := reindex(reindex(U,[2, 1])*reindex(Yg, [1, 3, 2]), [3, 2, 1])-U*Yg;
An algebra with a non-degenerate associative scalar product is called pre-Frobenius.
We may consider the problem where multiplication Y is given, and look for all associative scalar products
This problem can be solved using linear algebra.
)expose MCALCFN
MultiVariableCalculusFunctions is now explicitly exposed in frame initial J := jacobian(ravel ω,concat(map(variables, ravel U))::List Symbol);
uu := transpose matrix [concat(map(variables,ravel(U)))::List Symbol];
J::OutputForm * uu::OutputForm = 0;
nrows(J)
(30) 512
ncols(J)
(31) 64
The matrix J
transforms the coefficients of the tensor
into coefficients of the tensor . We are looking for
the general linear family of tensors such that
J
transforms into for any such .
If the null space of the J
matrix is not empty we can use
the basis to find all non-trivial solutions for U:
NJ:=nullSpace(J)
(32) [ [- 1,0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1] ]
SS:=map((x,y)+->x=y, concat map(variables, ravel U), entries reduce(+, [p[i]*NJ.i for i in 1..#NJ]))
(33) 1,1 1, 2 1, 3 1, 4 1, 5 1, 6 1, 7 1, 8 [u = - p , u = 0, u = 0, u = 0, u = 0, u = 0, u = 0, u = 0, 1 2, 1 2, 2 2, 3 2, 4 2, 5 2, 6 2, 7 2, 8 u = 0, u = p , u = 0, u = 0, u = 0, u = 0, u = 0, u = 0, 1 3, 1 3, 2 3, 3 3, 4 3, 5 3, 6 3, 7 3, 8 u = 0, u = 0, u = p , u = 0, u = 0, u = 0, u = 0, u = 0, 1 4, 1 4, 2 4, 3 4, 4 4, 5 4, 6 4, 7 4, 8 u = 0, u = 0, u = 0, u = p , u = 0, u = 0, u = 0, u = 0, 1 5, 1 5, 2 5, 3 5, 4 5, 5 5, 6 5, 7 5, 8 u = 0, u = 0, u = 0, u = 0, u = p , u = 0, u = 0, u = 0, 1 6, 1 6, 2 6, 3 6, 4 6, 5 6, 6 6, 7 6, 8 u = 0, u = 0, u = 0, u = 0, u = 0, u = p , u = 0, u = 0, 1 7, 1 7, 2 7, 3 7, 4 7, 5 7, 6 7, 7 7, 8 u = 0, u = 0, u = 0, u = 0, u = 0, u = 0, u = p , u = 0, 1 8, 1 8, 2 8, 3 8, 4 8, 5 8, 6 8, 7 8, 8 u = 0, u = 0, u = 0, u = 0, u = 0, u = 0, u = 0, u = p ] 1
Ug:T := unravel(map(x+->subst(x,SS), ravel U))
+- p 0 0 0 0 0 0 0 + | 1 | | | | 0 p 0 0 0 0 0 0 | | 1 | | | | 0 0 p 0 0 0 0 0 | | 1 | | | | 0 0 0 p 0 0 0 0 | | 1 | (34) | | | 0 0 0 0 p 0 0 0 | | 1 | | | | 0 0 0 0 0 p 0 0 | | 1 | | | | 0 0 0 0 0 0 p 0 | | 1 | | | | 0 0 0 0 0 0 0 p | + 1+
This defines a family of pre-Frobenius algebras:
test(unravel(map(x+->subst(x,SS), ravel ω))$T=0*ω)
(35) true
The scalar product must be non-degenerate:
Ud:DMP([p[i] for i in 1..#NJ],INT) := determinant [[Ug[i, j] for j in 1..dim] for i in 1..dim]
8 (36) - p 1
factor Ud
8 (37) - p 1
Co-pairing
Ωg:T:=unravel concat(transpose(1/Ud*adjoint([[Ug[i,j] for j in 1..dim] for i in 1..dim]).adjMat)::List List FRAC POLY INT)
+ 1 + |- -- 0 0 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 -- 0 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 0 -- 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 0 0 -- 0 0 0 0 | | p | | 1 | (38) | | | 1 | | 0 0 0 0 -- 0 0 0 | | p | | 1 | | | | 1 | | 0 0 0 0 0 -- 0 0 | | p | | 1 | | | | 1 | | 0 0 0 0 0 0 -- 0 | | p | | 1 | | | | 1| | 0 0 0 0 0 0 0 --| | p | + 1+
dimension Ω U
contract(contract(Ωg,1, Ug, 1), 1, 2)
(39) 8
Co-multiplication
λg:=reindex(contract(contract(Ug*Yg,1, Ωg, 1), 1, Ωg, 1), [2, 3, 1]);
-- just for display reindex(λg,[3, 1, 2])
(41) + 1 + |- -- 0 0 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 -- 0 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 0 -- 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 0 0 -- 0 0 0 0 | | p | | 1 | [| |,| 1 | | 0 0 0 0 -- 0 0 0 | | p | | 1 | | | | 1 | | 0 0 0 0 0 -- 0 0 | | p | | 1 | | | | 1 | | 0 0 0 0 0 0 -- 0 | | p | | 1 | | | | 1| | 0 0 0 0 0 0 0 --| | p | + 1+ + 1 + | 0 - -- 0 0 0 0 0 0 | | p | | 1 | | | | 1 | |- -- 0 0 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 0 0 -- 0 0 0 0 | | p | | 1 | | | | 1 | | 0 0 - -- 0 0 0 0 0 | | p | | 1 | | |, | 1 | | 0 0 0 0 0 -- 0 0 | | p | | 1 | | | | 1 | | 0 0 0 0 - -- 0 0 0 | | p | | 1 | | | | 1| | 0 0 0 0 0 0 0 - --| | p | | 1| | | | 1 | | 0 0 0 0 0 0 -- 0 | | p | + 1 + + 1 + | 0 0 - -- 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 0 0 - -- 0 0 0 0 | | p | | 1 | | | | 1 | |- -- 0 0 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 -- 0 0 0 0 0 0 | | p | | 1 | | |, | 1 | | 0 0 0 0 0 0 -- 0 | | p | | 1 | | | | 1| | 0 0 0 0 0 0 0 --| | p | | 1| | | | 1 | | 0 0 0 0 - -- 0 0 0 | | p | | 1 | | | | 1 | | 0 0 0 0 0 - -- 0 0 | | p | + 1 + + 1 + | 0 0 0 - -- 0 0 0 0 | | p | | 1 | | | | 1 | | 0 0 -- 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 - -- 0 0 0 0 0 0 | | p | | 1 | | | | 1 | |- -- 0 0 0 0 0 0 0 | | p | | 1 | | |, | 1| | 0 0 0 0 0 0 0 --| | p | | 1| | | | 1 | | 0 0 0 0 0 0 - -- 0 | | p | | 1 | | | | 1 | | 0 0 0 0 0 -- 0 0 | | p | | 1 | | | | 1 | | 0 0 0 0 - -- 0 0 0 | | p | + 1 + + 1 + | 0 0 0 0 - -- 0 0 0 | | p | | 1 | | | | 1 | | 0 0 0 0 0 - -- 0 0 | | p | | 1 | | | | 1 | | 0 0 0 0 0 0 - -- 0 | | p | | 1 | | | | 1| | 0 0 0 0 0 0 0 - --| | p | | 1| | |, | 1 | |- -- 0 0 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 -- 0 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 0 -- 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 0 0 -- 0 0 0 0 | | p | + 1 + + 1 + | 0 0 0 0 0 - -- 0 0 | | p | | 1 | | | | 1 | | 0 0 0 0 -- 0 0 0 | | p | | 1 | | | | 1| | 0 0 0 0 0 0 0 - --| | p | | 1| | | | 1 | | 0 0 0 0 0 0 -- 0 | | p | | 1 | | |, | 1 | | 0 - -- 0 0 0 0 0 0 | | p | | 1 | | | | 1 | |- -- 0 0 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 0 0 - -- 0 0 0 0 | | p | | 1 | | | | 1 | | 0 0 -- 0 0 0 0 0 | | p | + 1 + + 1 + | 0 0 0 0 0 0 - -- 0 | | p | | 1 | | | | 1| | 0 0 0 0 0 0 0 --| | p | | 1| | | | 1 | | 0 0 0 0 -- 0 0 0 | | p | | 1 | | | | 1 | | 0 0 0 0 0 - -- 0 0 | | p | | 1 | | |, | 1 | | 0 0 - -- 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 0 0 -- 0 0 0 0 | | p | | 1 | | | | 1 | |- -- 0 0 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 - -- 0 0 0 0 0 0 | | p | + 1 + + 1+ | 0 0 0 0 0 0 0 - --| | p | | 1| | | | 1 | | 0 0 0 0 0 0 - -- 0 | | p | | 1 | | | | 1 | | 0 0 0 0 0 -- 0 0 | | p | | 1 | | | | 1 | | 0 0 0 0 -- 0 0 0 | | p | | 1 | | |] | 1 | | 0 0 0 - -- 0 0 0 0 | | p | | 1 | | | | 1 | | 0 0 - -- 0 0 0 0 0 | | p | | 1 | | | | 1 | | 0 -- 0 0 0 0 0 0 | | p | | 1 | | | | 1 | |- -- 0 0 0 0 0 0 0 | | p | + 1 +
i λ=Ω
test(λg*X(1)=Ωg)
(42) true
i U
ιg:=X(1)*Ug
(43) [- p ,0, 0, 0, 0, 0, 0, 0] 1
Y=U ι
test(ιg * Yg = Ug)
(44) true
For example:
Ug0:T:=unravel eval(ravel Ug,[p[1]=1])
+- 1 0 0 0 0 0 0 0+ | | | 0 1 0 0 0 0 0 0| | | | 0 0 1 0 0 0 0 0| | | | 0 0 0 1 0 0 0 0| (45) | | | 0 0 0 0 1 0 0 0| | | | 0 0 0 0 0 1 0 0| | | | 0 0 0 0 0 0 1 0| | | + 0 0 0 0 0 0 0 1+
Ωg0:T:=unravel eval(ravel Ωg,[p[1]=1])
+- 1 0 0 0 0 0 0 0+ | | | 0 1 0 0 0 0 0 0| | | | 0 0 1 0 0 0 0 0| | | | 0 0 0 1 0 0 0 0| (46) | | | 0 0 0 0 1 0 0 0| | | | 0 0 0 0 0 1 0 0| | | | 0 0 0 0 0 0 1 0| | | + 0 0 0 0 0 0 0 1+
λg0:T:=unravel eval(ravel λg,[p[1]=1]);
reindex(λg0,[3, 1, 2])
(48) +- 1 0 0 0 0 0 0 0+ + 0 - 1 0 0 0 0 0 0 + | | | | | 0 1 0 0 0 0 0 0| |- 1 0 0 0 0 0 0 0 | | | | | | 0 0 1 0 0 0 0 0| | 0 0 0 1 0 0 0 0 | | | | | | 0 0 0 1 0 0 0 0| | 0 0 - 1 0 0 0 0 0 | [| |,| |, | 0 0 0 0 1 0 0 0| | 0 0 0 0 0 1 0 0 | | | | | | 0 0 0 0 0 1 0 0| | 0 0 0 0 - 1 0 0 0 | | | | | | 0 0 0 0 0 0 1 0| | 0 0 0 0 0 0 0 - 1| | | | | + 0 0 0 0 0 0 0 1+ + 0 0 0 0 0 0 1 0 + + 0 0 - 1 0 0 0 0 0+ + 0 0 0 - 1 0 0 0 0+ | | | | | 0 0 0 - 1 0 0 0 0| | 0 0 1 0 0 0 0 0| | | | | |- 1 0 0 0 0 0 0 0| | 0 - 1 0 0 0 0 0 0| | | | | | 0 1 0 0 0 0 0 0| |- 1 0 0 0 0 0 0 0| | |, | |, | 0 0 0 0 0 0 1 0| | 0 0 0 0 0 0 0 1| | | | | | 0 0 0 0 0 0 0 1| | 0 0 0 0 0 0 - 1 0| | | | | | 0 0 0 0 - 1 0 0 0| | 0 0 0 0 0 1 0 0| | | | | + 0 0 0 0 0 - 1 0 0+ + 0 0 0 0 - 1 0 0 0+ + 0 0 0 0 - 1 0 0 0 + + 0 0 0 0 0 - 1 0 0 + | | | | | 0 0 0 0 0 - 1 0 0 | | 0 0 0 0 1 0 0 0 | | | | | | 0 0 0 0 0 0 - 1 0 | | 0 0 0 0 0 0 0 - 1| | | | | | 0 0 0 0 0 0 0 - 1| | 0 0 0 0 0 0 1 0 | | |, | |, |- 1 0 0 0 0 0 0 0 | | 0 - 1 0 0 0 0 0 0 | | | | | | 0 1 0 0 0 0 0 0 | |- 1 0 0 0 0 0 0 0 | | | | | | 0 0 1 0 0 0 0 0 | | 0 0 0 - 1 0 0 0 0 | | | | | + 0 0 0 1 0 0 0 0 + + 0 0 1 0 0 0 0 0 + + 0 0 0 0 0 0 - 1 0+ + 0 0 0 0 0 0 0 - 1+ | | | | | 0 0 0 0 0 0 0 1| | 0 0 0 0 0 0 - 1 0 | | | | | | 0 0 0 0 1 0 0 0| | 0 0 0 0 0 1 0 0 | | | | | | 0 0 0 0 0 - 1 0 0| | 0 0 0 0 1 0 0 0 | | |, | |] | 0 0 - 1 0 0 0 0 0| | 0 0 0 - 1 0 0 0 0 | | | | | | 0 0 0 1 0 0 0 0| | 0 0 - 1 0 0 0 0 0 | | | | | |- 1 0 0 0 0 0 0 0| | 0 1 0 0 0 0 0 0 | | | | | + 0 - 1 0 0 0 0 0 0+ +- 1 0 0 0 0 0 0 0 +