Non-degeneracy of the pairing (snake relation)
or equivalently
Ref:
We use the Axiom LinearOperator library
fricas
)library 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
and some convenient notation
fricas
macro Σ(x,i,n)==reduce(+,[x for i in n])
Type: Void
fricas
macro Ξ(f,i,n)==[f for i in n]
Type: Void
fricas
macro sb == subscript
Type: Void
fricas
macro sp == superscript
Type: Void
Let 𝐋 be the domain of 2-dimensional linear operators
fricas
dim:=2
fricas
macro ℒ == List
Type: Void
fricas
macro ℚ == Expression Integer
Type: Void
fricas
𝐋 := LinearOperator(OVAR ['1,'2], ℚ)
Type: Type
fricas
𝐞:ℒ 𝐋 := basisOut()
fricas
𝐝:ℒ 𝐋 := basisIn()
fricas
I:𝐋:=[1] -- identity for composition
fricas
X:𝐋:=[2,1] -- twist
Pairing
A scalar product (pairing) is represented by
fricas
U:=Σ(Σ(sp('u,[i,j])*𝐝.i*𝐝.j, i,1..dim), j,1..dim)
In general we do not require that it be symmetric.
Co-pairing
Solve the "twisted snake relation" as a system of linear equations.
fricas
Ω:𝐋:=Σ(Σ(sb('u,[i,j])*𝐞.i*𝐞.j, i,1..dim), j,1..dim)
fricas
Í :=
( I Ω ) /
( I X ) /
( U I )
fricas
Ì:=
( Ω I ) /
( X I ) /
( I U )
fricas
equate(f,g)==map((x,y)+->(x=y),ravel f, ravel g);
Type: Void
fricas
eq1:=equate(Í,I)
fricas
Compiling function equate with type (LinearOperator(
OrderedVariableList([1,2]),Expression(Integer)), LinearOperator(
OrderedVariableList([1,2]),Expression(Integer))) -> List(Equation
(Expression(Integer)))
Type: List(Equation(Expression(Integer)))
fricas
eq2:=equate(Ì,I)
Type: List(Equation(Expression(Integer)))
fricas
snake:=solve(concat(eq1,eq2),concat Ξ(Ξ(sb('u,[i,j]), i,1..dim), j,1..dim));
Type: List(List(Equation(Expression(Integer))))
fricas
if #snake ~= 1 then error "no solution"
Type: Void
fricas
Ω:=eval(Ω,snake(1))
fricas
matrix Ξ(Ξ(Ω/(𝐝.i*𝐝.j), i,1..dim), j,1..dim)
This is equivalent to a matrix inverse (transposed!)
fricas
Um:=matrix Ξ(Ξ((𝐞.i*𝐞.j)/U, i,1..dim), j,1..dim)
fricas
mU:=inverse map(retract,Um)
Type: Union(Matrix(Expression(Integer)),...)
fricas
Ωm:=Σ(Σ(mU(i,j)*(𝐞.i*𝐞.j), i,1..dim), j,1..dim)
fricas
-- compare
test(Ω=Ωm)
Type: Boolean
Check that the twisted snake relation holds
fricas
test
( I Ω ) /
( I X ) /
( U I ) = I
Type: Boolean
fricas
test
( Ω I ) /
( X I ) /
( I U ) = I
Type: Boolean
Dimension
Since the "snake" is twisted, dimension is as expected.
fricas
d:=
Ω /
U
This "twisted dimension " depends on !
fricas
d':=
Ω /
X /
U