login  home  contents  what's new  discussion  bug reports help  links  subscribe  changes  refresh  edit

# Edit detail for SandBoxFrobeniusAlgebra revision 17 of 26

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Editor: Bill Page Time: 2011/02/15 21:20:12 GMT-8 Note: clean up notation

removed:
-)library DEXPR

removed:
---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:
-(the commutator) is zero
(the commutator) is zero::

Y  -  X
Y

changed:
-(the commutator) is zero
(the anti-commutator) is zero::

Y  +  X
Y

changed:
-  Y I  =  I Y
Y    =    Y

Y    -    Y  -   X
Y       Y       Y
Y

changed:
-    Y I = I Y
Y   =   Y


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
n:=2 (1)
Type: PositiveInteger?
axiom
T:=CartesianTensor(1,n,FRAC POLY INT) (2)
Type: Domain
axiom
Y:T := unravel(concat concat
[[[script(y,[[k],[j,i]])
for i in 1..n]
for j in 1..n]
for k in 1..n]
) (3)
Type: CartesianTensor?(1,2,Fraction(Polynomial(Integer)))

Given two vectors and axiom
U:T := unravel([script(u,[[i]]) for i in 1..n]) (4)
Type: CartesianTensor?(1,2,Fraction(Polynomial(Integer)))
axiom
V:T := unravel([script(v,[[i]]) for i in 1..n]) (5)
Type: CartesianTensor?(1,2,Fraction(Polynomial(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) (6)
Type: CartesianTensor?(1,2,Fraction(Polynomial(Integer)))

Diagram:

  U   V
2i  3j
\ /
|
1k
W


or in a more convenient notation:

axiom
W:=(Y*U)*V (7)
Type: CartesianTensor?(1,2,Fraction(Polynomial(Integer)))

The algebra Y is commutative if the following tensor (the commutator) is zero:

   Y  -  X
Y


axiom
KK:=Y-reindex(Y,[1,3,2]) (8)
Type: CartesianTensor?(1,2,Fraction(Polynomial(Integer)))

A basis for the ideal defined by the coefficients of the commutator is given by:

axiom
KB:=groebner(ravel(KK)) (9)
Type: List(Polynomial(Integer))

The algebra Y is anti-commutative if the following tensor (the anti-commutator) is zero:

   Y  +  X
Y


axiom
AK:=Y+reindex(Y,[1,3,2]) (10)
Type: CartesianTensor?(1,2,Fraction(Polynomial(Integer)))

A basis for the ideal defined by the coefficients of the anti-commutator is given by:

axiom
KA:=groebner(ravel(AK)) (11)
Type: List(Polynomial(Integer))

An algebra is associative if:

  Y    =    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 is zero.

axiom
AA := reindex(reindex(Y,[1,3,2])*reindex(Y,[1,3,2]),[1,4,3,2])-Y*Y; ravel(AA) (12)
Type: List(Fraction(Polynomial(Integer)))

The Jacobi identity requires the following tensor to be zero:

  Y    -    Y  -   X
Y       Y       Y
Y

2    3 6   2 5    6   2 6  3
\  / /     \ \  /     \ \/
\/ /       \ \/       \/\
\/    -    \/    -    \/
\         /           \
4       1             4


axiom
BA := AA - reindex(contract(Y,1,Y,2),[3,1,4,2]); ravel(BA) (13)
Type: List(Fraction(Polynomial(Integer)))

A scalar product is denoted by axiom
U:T := unravel(concat
[[script(u,[[],[j,i]])
for i in 1..n]
for j in 1..n]
) (14)
Type: CartesianTensor?(1,2,Fraction(Polynomial(Integer)))

## Definition 1

We say that the scalar product is "associative" if the following tensor equation holds:

    Y   =   Y
U     U


axiom
UA := reindex(reindex(U,[2,1])*reindex(Y,[1,3,2]),[3,2,1])-U*Y (15)
Type: CartesianTensor?(1,2,Fraction(Polynomial(Integer)))

## Definition 2

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.

axiom
)expose MCALCFN
MultiVariableCalculusFunctions is now explicitly exposed in frame
initial
K := jacobian(ravel(UA),concat(map(variables,ravel(Y)))::List Symbol);
Type: Matrix(Fraction(Polynomial(Integer)))
axiom
YY := transpose matrix [concat(map(variables,ravel(Y)))::List Symbol];
Type: Matrix(Polynomial(Integer))
axiom
K::OutputForm * YY::OutputForm = 0 (16)
Type: Equation(OutputForm?)

The matrix K transforms the coefficients of the tensor Y into coefficients of the tensor UA. We are looking for coefficients of the tensor U such that K transforms Y into UA=0 for any Y.

A necessary condition for the equation to have a non-trivial solution is that the matrix K be degenerate.

## Theorem 1

The scalar product of all 2-dimensional pre-Frobenius algebras is symmetric.

Proof: Consider the determinant of the matrix K above.

axiom
Kd:DMP(concat map(variables,ravel(U)),FRAC INT) := factor determinant(K) (17)
Type: DistributedMultivariatePolynomial?([*002u11,*002u12,*002u21,*002u22],Fraction(Integer))

The scalar product must also be non-degenerate

axiom
Ud:DMP(concat map(variables,ravel(U)),FRAC INT) := determinant [[U[i,j] for j in 1..n] for i in 1..n] (18)
Type: DistributedMultivariatePolynomial?([*002u11,*002u12,*002u21,*002u22],Fraction(Integer))

therefore U must be symmetric.

axiom
nthFactor(Kd,1) (19)
Type: DistributedMultivariatePolynomial?([*002u11,*002u12,*002u21,*002u22],Fraction(Integer))
axiom
US:T := unravel(map(x+->subst(x,U[2,1]=U[1,2]),ravel U)) (20)
Type: CartesianTensor?(1,2,Fraction(Polynomial(Integer)))

## Theorem 2

All 2-dimensional algebras with associative scalar product are symmetric.

Proof: The basis of the null space of the symmetric K matrix are all symmetric

axiom
UAS:T := unravel(map(x+->subst(x,U[2,1]=U[1,2]),ravel UA)) (21)
Type: CartesianTensor?(1,2,Fraction(Polynomial(Integer)))
axiom
--solve(ravel(UAS),removeDuplicates concat map(variables,ravel(US)))
KS := jacobian(ravel(UAS),concat(map(variables,ravel(Y)))::List Symbol);
Type: Matrix(Fraction(Polynomial(Integer)))
axiom
NS:=nullSpace(KS) (22)
Type: List(Vector(Fraction(Polynomial(Integer))))
axiom
SS:=map((x,y)+->x=y,concat map(variables,ravel Y),
entries reduce(+,[p[i]*NS.i for i in 1..#NS])) (23)
Type: List(Equation(Fraction(Polynomial(Integer))))
axiom
YS:T := unravel(map(x+->subst(x,SS),ravel Y)) (24)
Type: CartesianTensor?(1,2,Fraction(Polynomial(Integer)))

This is a 4-parameter family of 2-d pre-Frobenius algebras with a given admissible (i.e. symmetric) scalar product.

axiom
UASS:T := unravel(map(x+->subst(x,SS),ravel UAS)) (25)
Type: CartesianTensor?(1,2,Fraction(Polynomial(Integer)))

axiom
J := jacobian(ravel(UA),concat(map(variables,ravel(U)))::List Symbol);
Type: Matrix(Fraction(Polynomial(Integer)))
axiom
UU := transpose matrix [concat(map(variables,ravel(U)))::List Symbol];
Type: Matrix(Polynomial(Integer))
axiom
J::OutputForm * UU::OutputForm = 0 (26)
Type: Equation(OutputForm?)

The matrix J transforms the coefficients of the tensor U into coefficients of the tensor UA. We are looking for coefficients of the tensor Y such that J transforms U into UA=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.

axiom
JP:=ideal concat concat concat
[[[[ determinant(
matrix([row(J,i1),row(J,i2),row(J,i3),row(J,i4)]))
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) ];
Type: PolynomialIdeals?(Fraction(Integer),IndexedExponents?(Symbol),Symbol,Polynomial(Fraction(Integer)))
axiom
#generators(%) (27)
Type: PositiveInteger?

## Theorem 3

A 2-d algebra is pre-Frobenius if it is associative, commutative, anti-commutative or if it satisfies the Jacobi identity.

Proof

axiom
in?(JP,ideal ravel AA) (28)
Type: Boolean
axiom
in?(JP,ideal ravel KK) (29)
Type: Boolean
axiom
in?(JP,ideal ravel AK) (30)
Type: Boolean
axiom
in?(JP,ideal ravel BA) (31)
Type: Boolean