|
|
|
last edited 4 years ago by Bill Page |
| 1 2 3 4 | ||
|
Editor: Bill Page
Time: 2011/05/13 20:57:07 GMT-7 |
||
| Note: Use new LinearOperator domain | ||
changed: -An n-dimensional algebra is represented by a (2,1)-tensor 2-d Example Use LinearOperator (LOP) \begin{axiom} )lib CARTEN MONAL PROP LOP L:=LOP(OVAR ['1,'2], EXPR INT) -- basis dx:=basisIn()$L Dx:=basisOut()$L -- summation macro Σ(f,b,i) == reduce(+,[f*b.i for i in 1..#b]) -- identity I:L:=[1] -- twist X:L:=[2,1] -- co-evaluation Λ:L:=co(1) -- evaluation V:L:=ev(1) \end{axiom} Algebra An n-dimensional algebra is represented by a (2,1)-tensor changed: -\begin{axiom} -n:=2 -T:=CartesianTensor(1,n,FRAC POLY INT) -Y:T := unravel(concat concat - [[[script(y,[[i,j],[k]]) - for i in 1..n] - for j in 1..n] - for k in 1..n] - ) -\end{axiom} -Given two vectors $P=\{ p^i \}$ and $Q=\{ q^j \}$ -\begin{axiom} -P:T := unravel([script(p,[[],[i]]) for i in 1..n]) -Q:T := unravel([script(q,[[],[i]]) for i in 1..n]) \begin{axiom} Y:=Σ(Σ(Σ(script(y,[[i,j],[k]]),dx,i),dx,j),Dx,k) \end{axiom} Multiplication Given two vectors $P=\{ p^i \}$ and $Q=\{ q^j \}$ \begin{axiom} P:=Σ(script(p,[[],[i]]),Dx,i) Q:=Σ(script(q,[[],[i]]),Dx,i) changed: -R:=contract(contract(Y,3,product(P,Q),1),2,3) R:=(P,Q)/Y changed: -In Axiom we may use the more convenient tensor inner -product denoted by '*' that combines tensor product with -a contraction on the last index of the first tensor and -the first index of the second tensor. -\begin{axiom} -R:=(Y*P)*Q -\end{axiom} -An algebra is said to be *associative* if:: - - Y = Y - Y Y - -**Note:** the right hand side of the equation above is -implicitly the mirror image of the left hand side:: - - i j k i j k i j k - \ | / \/ / \ \/ - \ | / \ / \ / - \|/ = e k - i e - | \/ \/ - | \ / - l l l Associator An algebra is said to be *associative* if:: Y = Y Y Y i j k i j k i j k \ | / \/ / \ \/ \ | / \ / \ / \|/ = e k - i e | \/ \/ | \ / l l l changed: -\begin{axiom} -YY := reindex(reindex(Y,[1,3,2])*reindex(Y,[1,3,2]),[1,4,3,2])-Y*Y; ravel(YY) -\end{axiom} - -The algebra $Y$ is *commutative* if:: - - Y = Y - - i j i j j i - \ / = \/ - \/ - | \ / - k k k \begin{axiom} YY := (Y,I)/Y - (I,Y)/Y \end{axiom} Commutator The algebra $Y$ is *commutative* if:: Y = Y i j i j j i \ / = \/ - \/ | \ / k k k changed: -YC:=Y-reindex(Y,[1,3,2]) YC:=Y-(X/Y) changed: -The algebra $Y$ is *anti-commutative* if:: - - Y = -Y - - i j i j j i - \ / = \/ = \/ - | \ / - k k k Anti-commutator The algebra $Y$ is *anti-commutative* if:: Y = -Y i j i j j i \ / = \/ = \/ | \ / k k k changed: -YA:=Y+reindex(Y,[1,3,2]) YA:=Y+(X/Y) changed: -The *Jacobi identity* is:: - - X - Y = Y + Y - Y Y Y - - i j k i j k i j k i j k - \ | / \ / / \ \ / \ \ / - \ | / \ / / \ \ / \ 0 - \ | / \/ / \ \/ \/ \ - \ | / \ / \ / \ \ - \|/ = e k - i e - e j - | \/ \/ \/ - | \ / / - l l l l Jacobi The *Jacobi identity* is:: X Y = Y + Y Y Y Y i j k i j k i j k i j k \ | / \ / / \ \ / \ \ / \ | / \ / / \ \ / \ 0 \ | / \/ / \ \/ \/ \ \ | / \ / \ / \ \ \|/ = e k - i e - e j | \/ \/ \/ | \ / / l l l l changed: -YX := YY - reindex(contract(Y,1,Y,2),[3,1,4,2]); ravel(YX) -\end{axiom} -A scalar product is denoted by the (2,0)-tensor YX := YY - (I,X)/(Y,I)/Y \end{axiom} Scalar Product A scalar product is denoted by the (2,0)-tensor changed: -U:T := unravel(concat - [[script(u,[[],[j,i]]) - for i in 1..n] - for j in 1..n] - ) -\end{axiom} U:=Σ(Σ(script(u,[[],[i,j]]),dx,i),dx,j) \end{axiom} changed: -YU := reindex(reindex(U,[2,1])*reindex(Y,[1,3,2]),[3,2,1])-U*Y YU := (Y,I)/U - (I,Y)/U changed: -Ud:DMP(concat map(variables,ravel(U)),FRAC INT) := determinant [[U[i,j] for j in 1..n] for i in 1..n] Ud:DMP(concat map(variables,ravel(U)),FRAC INT) := determinant [[retract((Dx.i,Dx.j)/U) for j in 1..#Dx] for i in 1..#Dx] changed: -US:T := unravel(map(x+->subst(x,U[2,1]=U[1,2]),ravel U)) -\end{axiom} US:=eval(U,retract((Dx.2,Dx.1)/U)=retract((Dx.1,Dx.2)/U)) \end{axiom} changed: -YUS:T := reindex(reindex(US,[2,1])*reindex(Y,[1,3,2]),[3,2,1])-US*Y YUS := (I,Y)/US - (Y,I)/US changed: -YS:T := unravel(map(x+->subst(x,SS),ravel Y)) YS:=eval(U,SS) changed: -test(unravel(map(x+->subst(x,SS),ravel YUS))$T=0*YU) -\end{axiom} test(eval(YUS,SS)=0*YUS) \end{axiom} changed: - matrix([row(J,i1),row(J,i2),row(J,i3),row(J,i4)])) matrix([row(J,i1),row(J,i2),row(J,i3),row(J,i4)]))::FRAC POLY INT changed: -YYI:=ideal ravel YY; YYI:=ideal(ravel(YY)::List FRAC POLY INT); changed: -YCI:=ideal ravel YC; YCI:=ideal(ravel(YC)::List FRAC POLY INT); changed: -YAI:=ideal ravel YA; YAI:=ideal(ravel(YA)::List FRAC POLY INT); changed: -YXI:=ideal ravel YX; YXI:=ideal(ravel(YX)::List FRAC POLY INT); changed: -Three traces of two graftings of an algebra gives six Three traces of two graftings of an algebra gives six changed: -LS:=contract(Y*Y,1,2) -RS:=reindex(contract(reindex(Y,[1,3,2])*reindex(Y,[1,3,2]),1,2),[2,1]) LS:= ( Y Λ )/ _ ( Y I )/ _ V RS:= ( Λ Y )/ _ ( I Y )/ _ V changed: -RD:=contract(Y*Y,1,3) -LD:=reindex(contract(reindex(Y,[1,3,2])*reindex(Y,[1,3,2]),1,3),[2,1]) RD:= ( I Λ I ) / _ ( Y X ) / _ ( Y I ) / _ V LD:= ( I Λ I ) / _ ( X Y ) / _ ( I Y ) / _ V changed: -RT:=contract(Y*Y,1,4) -LT:=reindex(contract(reindex(Y,[1,3,2])*reindex(Y,[1,3,2]),1,4),[2,1]) RT:= ( Λ I I ) / _ ( I Y I ) / _ ( I Y ) / _ V LT:= ( I I Λ ) / _ ( I Y I ) / _ ( Y I ) / _ V changed: -test(RT=reindex(RT,[2,1])) -test(LT=reindex(LT,[2,1])) test(RT = X/RT) test(LT = X/LT) changed: -in?(ideal ravel(RT-RS),YYI) -in?(ideal ravel(LT-LS),YYI) in?(ideal(ravel(RT-RS)::List FRAC POLY INT),YYI) in?(ideal(ravel(LT-LS)::List FRAC POLY INT),YYI) changed: -in?(ideal ravel(RS),YXI) -in?(ideal ravel(LS),YXI) in?(ideal(ravel(RS)::List FRAC POLY INT),YXI) in?(ideal(ravel(LS)::List FRAC POLY INT),YXI) changed: -in?(ideal ravel(RT+RD),YXI) -\end{axiom} - -From BillPage Fri May 13 11:28:33 -0700 2011 -From: Bill Page -Date: Fri, 13 May 2011 11:28:33 -0700 -Subject: Use new LinearOperator domain -Message-ID: <20110513112833-0700@axiom-wiki.newsynthesis.org> - -SandBoxFrobeniusAlgebra updated in?(ideal(ravel(RT+RD)::List FRAC POLY INT),YXI) \end{axiom}
References
Especially "Tensor calculus (linear algebra in coordinates)" in section 2.3.31, page 123.
See also:
Use LinearOperator? (LOP)
(1) -> )lib CARTEN MONAL PROP LOP
CartesianTensor is now explicitly exposed in frame initial CartesianTensor will be automatically loaded when needed from /var/aw/var/LatexWiki/CARTEN.NRLIB/CARTEN Monoidal is now explicitly exposed in frame initial Monoidal will be automatically loaded when needed from /var/aw/var/LatexWiki/MONAL.NRLIB/MONAL Prop is now explicitly exposed in frame initial Prop will be automatically loaded when needed from /var/aw/var/LatexWiki/PROP.NRLIB/PROP LinearOperator is now explicitly exposed in frame initial LinearOperator will be automatically loaded when needed from /var/aw/var/LatexWiki/LOP.NRLIB/LOP L:=LOP(OVAR ['1,'2], EXPR INT)
| (1) |
-- basis dx:=basisIn()$L
| (2) |
Dx:=basisOut()$L
| (3) |
-- summation macro Σ(f,b, i) == reduce(+, [f*b.i for i in 1..#b])
-- identity I:L:=[1]
| (4) |
-- twist X:L:=[2,1]
| (5) |
-- co-evaluation Λ:L:=co(1)
| (6) |
-- evaluation V:L:=ev(1)
| (7) |
An n-dimensional algebra is represented by a (2,1)-tensor
viewed as a linear operator with two inputs
and one
output
. For example in 2 dimensions
Y:=Σ(Σ(Σ(script(y,[[i, j], [k]]), dx, i), dx, j), Dx, k)
![]() | (8) |
Given two vectors
and ![]()
P:=Σ(script(p,[[], [i]]), Dx, i)
| (9) |
Q:=Σ(script(q,[[], [i]]), Dx, i)
| (10) |
the tensor
operates on their tensor product to
yield a vector
R:=(P,Q)/Y
>> System error: The value (0 . 0) is not of type UNSIGNED-BYTE
Pictorially:
P Q
Y
R
or more explicitly
Pi Qj
\/
\
Rk
An algebra is said to be associative if:
Y = Y
Y Y
i j k i j k i j k
\ | / \/ / \ \/
\ | / \ / \ /
\|/ = e k - i e
| \/ \/
| \ /
l l l
This requires that the following (3,1)-tensor
| (11) |
YY := (Y,I)/Y - (I, Y)/Y
>> System error: The value (0 . 0) is not of type UNSIGNED-BYTE
The algebra
is commutative if:
Y = Y
i j i j j i
\ / = \/ - \/
| \ /
k k k
This requires that the following (2,1)-tensor
| (12) |
YC:=Y-(X/Y)
>> System error: The value (0 . 0) is not of type UNSIGNED-BYTE
A basis for the ideal defined by the coefficients of the commutator is given by:
groebner(ravel(YC))
There are 2 exposed and 0 unexposed library operations named ravel having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op ravel to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named ravel with argument type(s) Variable(YC)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
The algebra
is anti-commutative if:
Y = -Y
i j i j j i
\ / = \/ = \/
| \ /
k k k
This requires that the following (2,1)-tensor
| (13) |
YA:=Y+(X/Y)
>> System error: The value (0 . 0) is not of type UNSIGNED-BYTE
A basis for the ideal defined by the coefficients of the commutator is given by:
groebner(ravel(YA))
There are 2 exposed and 0 unexposed library operations named ravel having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op ravel to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named ravel with argument type(s) Variable(YA)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
The Jacobi identity is:
X
Y = Y + Y
Y Y Y
i j k i j k i j k i j k
\ | / \ / / \ \ / \ \ /
\ | / \ / / \ \ / \ 0
\ | / \/ / \ \/ \/ \
\ | / \ / \ / \ \
\|/ = e k - i e - e j
| \/ \/ \/
| \ / /
l l l l
An algebra satisfies the Jacobi identity if and only if the following (3,1)-tensor
| (14) |
YX := YY - (I,X)/(Y, I)/Y
>> System error: The value (0 . 0) is not of type UNSIGNED-BYTE
A scalar product is denoted by the (2,0)-tensor
U:=Σ(Σ(script(u,[[], [i, j]]), dx, i), dx, j)
| (15) |
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
| (16) |
YU := (Y,I)/U - (I, Y)/U
>> System error: The value (0 . 0) is not of type UNSIGNED-BYTE
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
or we
may consider an scalar product U as given, and look for all
algebras
such that the scalar product is associative.
This problem can be solved using linear algebra.
)expose MCALCFN
MultiVariableCalculusFunctions is now explicitly exposed in frame initial K := jacobian(ravel(YU),concat(map(variables, ravel(Y)))::List Symbol);
There are 2 exposed and 0 unexposed library operations named ravel having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op ravel to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named ravel with argument type(s) Variable(YU)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
The matrix K transforms the coefficients of the tensor
into coefficients of the tensor
. We are looking for
coefficients of the tensor
such that K transforms the
tensor
into
for any
.
A necessary condition for the equation to have a non-trivial
solution is that the matrix K be degenerate.
All 2-dimensional pre-Frobenius algebras are symmetric.
Proof: Consider the determinant of the matrix K above.
Kd := factor(determinant(K)::DMP(concat map(variables,ravel(U)), FRAC INT))
There are 3 exposed and 1 unexposed library operations named determinant having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op determinant to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named determinant with argument type(s) Variable(K)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
The scalar product must also be non-degenerate
Ud:DMP(concat map(variables,ravel(U)), FRAC INT) := determinant [[retract((Dx.i, Dx.j)/U) for j in 1..#Dx] for i in 1..#Dx]
>> System error: The value (0 . 0) is not of type UNSIGNED-BYTE
therefore U must be symmetric.
nthFactor(Kd,1)
There are no exposed library operations named nthFactor but there are 3 unexposed operations with that name. Use HyperDoc Browse or issue )display op nthFactor to learn more about the available operations.
Cannot find a definition or applicable library operation named nthFactor with argument type(s) Variable(Kd) PositiveInteger
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
All 2-dimensional algebras with associative scalar product are commutative.
Proof: The basis of the null space of the symmetric
K matrix are all symmetric
YUS := (I,Y)/US - (Y, I)/US
There are 15 exposed and 15 unexposed library operations named / having 2 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op / to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named / with argument type(s) Tuple(LinearOperator(OrderedVariableList([1,2]), Expression(Integer))) Variable(US)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
This defines a 4-parameter family of 2-d pre-Frobenius algebras
test(eval(YUS,SS)=0*YUS)
There are 10 exposed and 6 unexposed library operations named eval having 2 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op eval to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named eval with argument type(s) Variable(YUS) Variable(SS)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
Alternatively we may consider
J := jacobian(ravel(YU),concat(map(variables, ravel(U)))::List Symbol);
There are 2 exposed and 0 unexposed library operations named ravel having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op ravel to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named ravel with argument type(s) Variable(YU)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
The matrix J transforms the coefficients of the tensor
into coefficients of the tensor
. We are looking for
coefficients of the tensor
such that J transforms the
tensor
into
for any
.
A necessary condition for the equation to have a non-trivial
solution is that all 70 of the 4x4 sub-matrices of J are
degenerate. To this end we can form the polynomial ideal of
the determinants of these sub-matrices.
JP:=ideal concat concat concat
[[[[ determinant(
matrix([row(J, i1), row(J, i2), row(J, i3), row(J, i4)]))::FRAC POLY INT
for i4 in (i3+1)..maxRowIndex(J) ]
for i3 in (i2+1)..(maxRowIndex(J)-1) ]
for i2 in (i1+1)..(maxRowIndex(J)-2) ]
for i1 in minRowIndex(J)..(maxRowIndex(J)-3) ];
There are 2 exposed and 0 unexposed library operations named
minRowIndex having 1 argument(s) but none was determined to be
applicable. Use HyperDoc Browse, or issue
)display op minRowIndex
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named
minRowIndex with argument type(s)
Variable(J)
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
If a 2-d algebra is associative, commutative, anti-commutative or if it satisfies the Jacobi identity then it is a pre-Frobenius algebra.
Proof
Consider the ideals of the associator, commutator, anti-commutator and Jacobi identity
YYI:=ideal(ravel(YY)::List FRAC POLY INT);
There are 2 exposed and 0 unexposed library operations named ravel having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op ravel to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named ravel with argument type(s) Variable(YY)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
Three traces of two graftings of an algebra gives six (2,0)-forms.
Left snail and right snail:
LS RS
Y /\ /\ Y
Y ) ( Y
\/ \/
i j j i
\/ \/
\ /\ /\ /
e f \ / f e
\/ \ / \/
\ / \ /
f / \ f
\/ \/
| (17) |
LS:=
( Y Λ )/ _
( Y I )/ _
V
>> System error:
The value
(0 . 0)
is not of type
UNSIGNED-BYTE
Left and right deer:
RD LD
\ /\/ \/\ /
Y /\ /\ Y
Y ) ( Y
\/ \/
i j i j
\ /\ / \ /\ /
\ f \ / \ / f /
\/ \/ \/ \/
\ /\ /\ /
e / \ / \ e
\/ \ / \/
\ / \ /
f / \ f
\/ \/
| (18) |
RD:=
( I Λ I ) / _
( Y X ) / _
( Y I ) / _
V
>> System error:
The value
(0 . 0)
is not of type
UNSIGNED-BYTE
Left and right turtles:
RT LT
/\ / / \ \ /\
( Y / \ Y )
\ Y Y /
\/ \/
i j i j
/\ / / \ \ /\
/ f / / \ \ f \
/ \/ / \ \/ \
\ \ / \ / /
\ e / \ e /
\ \/ \/ /
\ / \ /
\ f f /
\/ \/
| (19) |
RT:=
( Λ I I ) / _
( I Y I ) / _
( I Y ) / _
V
>> System error:
The value
(0 . 0)
is not of type
UNSIGNED-BYTE
The turles are symmetric
test(RT = X/RT)
>> System error: The value (0 . 2) is not of type UNSIGNED-BYTE
Five of the six forms are independent.
test(RT=RS)
| (20) |
test(RT=LS)
| (21) |
test(RT=RD)
| (22) |
test(LT=RS)
| (23) |
test(LT=LS)
| (24) |
test(LT=RD)
| (25) |
Associativity implies right turtle equals right snail and left turtle equals left snail.
in?(ideal(ravel(RT-RS)::List FRAC POLY INT),YYI)
There are 2 exposed and 0 unexposed library operations named ravel having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op ravel to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named ravel with argument type(s) Polynomial(Integer)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
If the Jacobi identity holds then both snails are zero
in?(ideal(ravel(RS)::List FRAC POLY INT),YXI)
There are 2 exposed and 0 unexposed library operations named ravel having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op ravel to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named ravel with argument type(s) Variable(RS)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
and right turtle and deer have opposite signs
in?(ideal(ravel(RT+RD)::List FRAC POLY INT),YXI)
There are 2 exposed and 0 unexposed library operations named ravel having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse,or issue )display op ravel to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named ravel with argument type(s) Polynomial(Integer)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.