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
>> System error: The value 15684 is not of type LIST
An n-dimensional algebra is represented by a (2,1)-tensor Y=\{ {y^k}_{ij} \ i,j,k =1,2, ... n \} viewed as a linear operator with two inputs i,j and one output k. For example in 2 dimensions
Y:=Σ(Σ(Σ(script(y,[[i, j], [k]]), dx, i), dx, j), Dx, k)
There are no library operations named Σ Use HyperDoc Browse or issue )what op Σ to learn if there is any operation containing " Σ " in its name.
Cannot find a definition or applicable library operation named Σ with argument type(s) Symbol Variable(dx) Variable(i)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
Given two vectors P=\{ p^i \} and Q=\{ q^j \}
P:=Σ(script(p,[[], [i]]), Dx, i)
There are no library operations named Σ Use HyperDoc Browse or issue )what op Σ to learn if there is any operation containing " Σ " in its name.
Cannot find a definition or applicable library operation named Σ with argument type(s) Symbol Variable(Dx) Variable(i)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
the tensor Y operates on their tensor product to yield a vector R=\{ r_k = {y^k}_{ij} p^i q^j \}
R:=(P,Q)/Y
There are 11 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(OrderedVariableList([P,Q])) Variable(Y)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
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
YY := (Y,I)/Y - (I, Y)/Y
There are 11 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(OrderedVariableList([Y,I])) Variable(Y)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
The algebra Y is commutative if:
Y = Y i j i j j i \ / = \/ - \/ | \ / k k k
This requires that the following (2,1)-tensor
YC:=Y-(X/Y)
A basis for the ideal defined by the coefficients of the commutator is given by:
groebner(ravel(YC))
There are 1 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) Fraction(Polynomial(Integer))
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
The algebra Y is anti-commutative if:
Y = -Y i j i j j i \ / = \/ = \/ | \ / k k k
This requires that the following (2,1)-tensor
YA:=Y+(X/Y)
A basis for the ideal defined by the coefficients of the commutator is given by:
groebner(ravel(YA))
There are 1 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) Fraction(Polynomial(Integer))
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
YX := YY - (I,X)/(Y, I)/Y
There are 11 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(OrderedVariableList([I,X])) Tuple(OrderedVariableList([Y, I]))
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
A scalar product is denoted by the (2,0)-tensor U = \{ u_{ij} \}
U:=Σ(Σ(script(u,[[], [i, j]]), dx, i), dx, j)
There are no library operations named Σ Use HyperDoc Browse or issue )what op Σ to learn if there is any operation containing " Σ " in its name.
Cannot find a definition or applicable library operation named Σ with argument type(s) Symbol Variable(dx) Variable(i)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
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
YU := (Y,I)/U - (I, Y)/U
There are 11 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(OrderedVariableList([Y,I])) Variable(U)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
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 U = U(Y) or we may consider an scalar product U as given, and look for all algebras Y=Y(U) 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 1 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 Y
into coefficients of the tensor \Phi. We are looking for
coefficients of the tensor U such that K transforms the
tensor Y into \Phi=0 for any Y.
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 1 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(U)
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]
There are 1 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(U)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
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 11 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(OrderedVariableList([I,Y])) 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 1 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 U
into coefficients of the tensor \Phi. We are looking for
coefficients of the tensor Y such that J transforms the
tensor U into \Phi=0 for any U.
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 1 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 \/ \/
LS:= ( Y Λ )/ _ ( Y I )/ _ V
There are no exposed library operations named Y but there are 2 unexposed operations with that name. Use HyperDoc Browse or issue )display op Y to learn more about the available operations.
Cannot find a definition or applicable library operation named Y with argument type(s) Variable(Λ)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
Left and right deer:
RD LD \ /\/ \/\ / Y /\ /\ Y Y ) ( Y \/ \/ i j i j \ /\ / \ /\ / \ f \ / \ / f / \/ \/ \/ \/ \ /\ /\ / e / \ / \ e \/ \ / \/ \ / \ / f / \ f \/ \/
RD:= ( I Λ I ) / _ ( Y X ) / _ ( Y I ) / _ V
There are no library operations named Λ Use HyperDoc Browse or issue )what op Λ to learn if there is any operation containing " Λ " in its name.
Cannot find a definition or applicable library operation named Λ with argument type(s) Variable(I)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
Left and right turtles:
RT LT /\ / / \ \ /\ ( Y / \ Y ) \ Y Y / \/ \/ i j i j /\ / / \ \ /\ / f / / \ \ f \ / \/ / \ \/ \ \ \ / \ / / \ e / \ e / \ \/ \/ / \ / \ / \ f f / \/ \/
RT:= ( Λ I I ) / _ ( I Y I ) / _ ( I Y ) / _ V
There are no exposed library operations named I but there is one unexposed operation with that name. Use HyperDoc Browse or issue )display op I to learn more about the available operation.
Cannot find a definition or applicable library operation named I with argument type(s) Variable(I)
Perhaps you should use "@" to indicate the required return type,or "$" to specify which version of the function you need.
The turles are symmetric
test(RT = X/RT)
test(LT = X/LT)
Five of the six forms are independent.
test(RT=RS)
test(RT=LS)
test(RT=RD)
test(LT=RS)
test(LT=LS)
test(LT=RD)
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 1 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 1 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 1 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.