Grassmann Algebra Is Frobenius In Many Ways
A -dimensional vector space represents Grassmann algebra with generators
Linear operators over a 4-dimensional vector space representing Grassmann
algebra with two generators.
Ref:
We need the Axiom LinearOperator? library.
axiom
)library CARTEN ARITY CMONAL CPROP CLOP CALEY
CartesianTensor is now explicitly exposed in frame initial
CartesianTensor will be automatically loaded when needed from
/var/zope2/var/LatexWiki/CARTEN.NRLIB/CARTEN
Arity is now explicitly exposed in frame initial
Arity will be automatically loaded when needed from
/var/zope2/var/LatexWiki/ARITY.NRLIB/ARITY
ClosedMonoidal is now explicitly exposed in frame initial
ClosedMonoidal will be automatically loaded when needed from
/var/zope2/var/LatexWiki/CMONAL.NRLIB/CMONAL
ClosedProp is now explicitly exposed in frame initial
ClosedProp will be automatically loaded when needed from
/var/zope2/var/LatexWiki/CPROP.NRLIB/CPROP
ClosedLinearOperator is now explicitly exposed in frame initial
ClosedLinearOperator will be automatically loaded when needed from
/var/zope2/var/LatexWiki/CLOP.NRLIB/CLOP
CaleyDickson is now explicitly exposed in frame initial
CaleyDickson will be automatically loaded when needed from
/var/zope2/var/LatexWiki/CALEY.NRLIB/CALEY
Use the following macros for convenient notation
axiom
-- summation
macro Σ(x,i,n)==reduce(+,[x for i in n])
Type: Void
axiom
-- list
macro Ξ(f,i,n)==[f for i in n]
Type: Void
axiom
-- subscript and superscripts
macro sb == subscript
Type: Void
axiom
macro sp == superscript
Type: Void
𝐋 is the domain of 4-dimensional linear operators over the
rational functions ℚ (Expression Integer), i.e. ratio of
polynomials with integer coefficients.
axiom
dim:=4
axiom
macro ℒ == List
Type: Void
axiom
macro ℂ == CaleyDickson
Type: Void
axiom
macro ℚ == Expression Integer
Type: Void
axiom
𝐋 := ClosedLinearOperator(OVAR ['1,'i,'j,'k], ℚ)
Type: Type
axiom
𝐞:ℒ 𝐋 := basisOut()
Type: List(ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer)))
axiom
𝐝:ℒ 𝐋 := basisIn()
Type: List(ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer)))
axiom
I:𝐋:=[1] -- identity for composition
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
X:𝐋:=[2,1] -- twist
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
V:𝐋:=ev(1) -- evaluation
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
Λ:𝐋:=co(1) -- co-evaluation
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
equate(eq)==map((x,y)+->(x=y),ravel lhs eq, ravel rhs eq);
Type: Void
Generate structure constants for Grassmann Algebra
The structure constants can be obtained by dividing each matrix entry by the list of basis vectors.
Grassmann algebra will be specified by setting the Caley-Dickson parameters (i2, j2) to zero.
axiom
i2:=sp('i,[2])
Type: Symbol
axiom
j2:=sp('j,[2])
Type: Symbol
axiom
QQ:=CliffordAlgebra(2,ℚ,matrix [[i2,0],[0,j2]])
Type: Type
axiom
B:ℒ QQ := [monomial(1,[]),monomial(1,[1]),monomial(1,[2]),monomial(1,[1,2])]
Type: List(CliffordAlgebra
?(2,
Expression(Integer),
[[*001i(2),
0],
[0,
*001j(2)]]))
axiom
M:Matrix QQ := matrix Ξ(Ξ(B.i*B.j, i,1..dim), j,1..dim)
Type: Matrix(CliffordAlgebra
?(2,
Expression(Integer),
[[*001i(2),
0],
[0,
*001j(2)]]))
axiom
S(y) == map(x +-> coefficient(recip(y)*x,[]),M)
Type: Void
axiom
ѕ :=map(S,B)::ℒ ℒ ℒ ℚ
axiom
Compiling function S with type CliffordAlgebra(2,Expression(Integer)
,[[*001i(2),0],[0,*001j(2)]]) -> Matrix(Expression(Integer))
Type: List(List(List(Expression(Integer))))
axiom
-- structure constants form a tensor operator
--Y := Σ(Σ(Σ(ѕ(i)(k)(j)*𝐞.i*𝐝.j*𝐝.k, i,1..dim), j,1..dim), k,1..dim)
Y := eval(Σ(Σ(Σ(ѕ(i)(k)(j)*𝐞.i*𝐝.j*𝐝.k, i,1..dim), j,1..dim), k,1..dim),[i2=0,j2=0])
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
matrix Ξ(Ξ((𝐞.i*𝐞.j)/Y, i,1..dim), j,1..dim)
Type: Matrix(ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer)))
Units
axiom
e:=𝐞.1; i:=𝐞.2; j:=𝐞.3; k:=𝐞.4;
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
Multiplication of arbitrary Grassmann numbers and
axiom
a:=Σ(sb('a,[i])*𝐞.i, i,1..dim)
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
b:=Σ(sb('b,[i])*𝐞.i, i,1..dim)
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
(a*b)/Y
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
Multiplication is Associative
axiom
test(
( I Y ) / _
( Y ) = _
( Y I ) / _
( Y ) )
Type: Boolean
A scalar product is denoted by the (2,0)-tensor
axiom
U:=Σ(Σ(script('u,[[],[i,j]])*𝐝.i*𝐝.j, i,1..dim), j,1..dim)
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
Definition 1
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:
(three-point function) is zero.
Using the LinearOperator? domain in Axiom and some carefully chosen symbols we can easily enter expressions that are both readable and interpreted by Axiom as "graphical calculus" diagrams describing complex products and compositions of linear operators.
axiom
ω:𝐋 :=
( Y I ) /
U -
( I Y ) /
U
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
Definition 2
An algebra with a non-degenerate associative scalar product
is called a [Frobenius Algebra]?.
The Cartan-Killing Trace
axiom
Ú:=
( Y Λ ) / _
( Y I ) / _
V
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
Ù:=
( Λ Y ) / _
( I Y ) / _
V
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
test(Ù=Ú)
Type: Boolean
forms is degenerate
axiom
Ũ := Ù
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
test
( Y I ) /
Ũ =
( I Y ) /
Ũ
Type: Boolean
axiom
determinant Ξ(Ξ(retract((𝐞.i * 𝐞.j)/Ũ), j,1..dim), i,1..dim)
Type: Expression(Integer)
General Solution
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.
axiom
)expose MCALCFN
MultiVariableCalculusFunctions is now explicitly exposed in frame
initial
J := jacobian(ravel ω,concat map(variables,ravel U)::ℒ Symbol);
Type: Matrix(Expression(Integer))
axiom
nrows(J),ncols(J)
Type: Tuple(PositiveInteger
?)
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:
axiom
Ñ:=nullSpace(J)
Type: List(Vector(Expression(Integer)))
axiom
ℰ:=map((x,y)+->x=y, concat
map(variables,ravel U), entries Σ(sb('p,[i])*Ñ.i, i,1..#Ñ) )
Type: List(Equation(Expression(Integer)))
This defines a family of pre-Frobenius algebras:
axiom
zero? eval(ω,ℰ)
Type: Boolean
axiom
Ų:𝐋 := eval(U,ℰ)
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
Frobenius Form (co-unit)
axiom
d:=ε1*𝐝.1+εi*𝐝.2+εj*𝐝.3+εk*𝐝.4
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
𝔇:=equate(d=
( e I ) / _
Ų )
axiom
Compiling function equate with type Equation(ClosedLinearOperator(
OrderedVariableList([1,i,j,k]),Expression(Integer))) -> List(
Equation(Expression(Integer)))
Type: List(Equation(Expression(Integer)))
Express scalar product in terms of Frobenius form
axiom
𝔓:=solve(𝔇,Ξ(sb('p,[i]), i,1..#Ñ)).1
Type: List(Equation(Expression(Integer)))
axiom
Ų:=eval(Ų,𝔓)
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
test
Y /
d = Ų
Type: Boolean
In general the pairing is not symmetric!
axiom
u1:=matrix Ξ(Ξ(retract((𝐞.i 𝐞.j)/Ų), i,1..dim), j,1..dim)
Type: Matrix(Expression(Integer))
The scalar product must be non-degenerate:
axiom
Ů:=determinant u1
Type: Expression(Integer)
axiom
factor(numer Ů)/factor(denom Ů)
Type: Fraction(Factored(SparseMultivariatePolynomial
?(Integer,
Kernel(Expression(Integer)))))
Frobenius scalar product of "vectors" and
axiom
a:=sb('a,[1])*i+sb('a,[2])*j
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
b:=sb('b,[1])*i+sb('b,[2])*j
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
(a,a)/Ų
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
(a,b)/Ų
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
Definition 3
Co-scalar product
Solve the [Snake Relation]? as a system of linear equations.
axiom
Ω:𝐋:=Σ(Σ(script('u,[[i,j]])*𝐞.i*𝐞.j, i,1..dim), j,1..dim)
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
ΩX:=Ω/X;
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
UXΩ:=(I*ΩX)/(Ų*I);
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
ΩXU:=(ΩX*I)/(I*Ų);
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
eq1:=equate(UXΩ=I);
Type: List(Equation(Expression(Integer)))
axiom
eq2:=equate(ΩXU=I);
Type: List(Equation(Expression(Integer)))
axiom
snake:=solve(concat(eq1,eq2),concat Ξ(Ξ(script('u,[[i,j]]), i,1..dim), j,1..dim));
Type: List(List(Equation(Expression(Integer))))
axiom
if #snake ~= 1 then error "no solution"
Type: Void
axiom
Ω:=eval(Ω,snake(1))
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
ΩX:=Ω/X;
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
matrix Ξ(Ξ(retract(Ω/(𝐝.i*𝐝.j)), i,1..dim), j,1..dim)
Type: Matrix(Expression(Integer))
Check "dimension" and the snake relations.
axiom
O:𝐋:=
Ω /
Ų
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
test
( I ΩX ) /
( Ų I ) = I
Type: Boolean
axiom
test
( ΩX I ) /
( I Ų ) = I
Type: Boolean
Definition 4
Co-algebra
Compute the "three-point" function and use it to define co-multiplication.
axiom
W:=
(Y I) /
Ų
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
λ:=
( ΩX I ΩX ) /
( I W I )
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
test
( I ΩX ) /
( Y I ) = λ
Type: Boolean
axiom
test
( ΩX I ) /
( I Y ) = λ
Type: Boolean
Co-associativity
axiom
test(
( λ ) / _
( I λ ) = _
( λ ) / _
( λ I ) )
Type: Boolean
axiom
test
e /
λ = ΩX
Type: Boolean
Frobenius Condition (fork)
axiom
H :=
Y /
λ
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
test
( λ I ) /
( I Y ) = H
Type: Boolean
axiom
test
( I λ ) /
( Y I ) = H
Type: Boolean
Handle
axiom
Φ :=
λ /
Y
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
Figure 12
axiom
φφ:= _
( Ω Ω ) / _
( X I I ) / _
( I X I ) / _
( I I X ) / _
( Y Y )
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
Bi-algebra conditions
axiom
ΦΦ:= _
( λ λ ) / _
( I I X ) / _
( I X I ) / _
( I I X ) / _
( Y Y )
Type: ClosedLinearOperator
?(OrderedVariableList
?([1,
i,
j,
k]),
Expression(Integer))
axiom
test((e,e)/ΦΦ=φφ)
Type: Boolean