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

Non-degeneracy of the pairing

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 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
 (1)
Type: PositiveInteger?
fricas
macro ℒ == List
Type: Void
fricas
macro ℚ == Expression Integer
Type: Void
fricas
𝐋 := LinearOperator(OVAR ['1, '2], ℚ)
 (2)
Type: Type
fricas
𝐞:ℒ 𝐋      := basisOut()
 (3)
Type: List(LinearOperator(OrderedVariableList([1,2]),Expression(Integer)))
fricas
𝐝:ℒ 𝐋      := basisIn()
 (4)
Type: List(LinearOperator(OrderedVariableList([1,2]),Expression(Integer)))
fricas
I:𝐋:=[1]   -- identity for composition
 (5)
Type: LinearOperator(OrderedVariableList([1,2]),Expression(Integer))
fricas
X:𝐋:=[2,1] -- twist
 (6)
Type: LinearOperator(OrderedVariableList([1,2]),Expression(Integer))

## Pairing

A scalar product (pairing) is represented by

fricas
U:=Σ(Σ(sp('u,[i,j])*𝐝.i*𝐝.j, i,1..dim), j,1..dim)
 (7)
Type: LinearOperator(OrderedVariableList([1,2]),Expression(Integer))

In general we do not require that it be symmetric.

## Co-pairing

Solve the "snake relation" as a system of linear equations.

fricas
Ω:𝐋:=Σ(Σ(sb('u,[i,j])*𝐞.i*𝐞.j, i,1..dim), j,1..dim)
 (8)
Type: LinearOperator(OrderedVariableList([1,2]),Expression(Integer))
fricas
Í:=(I*Ω)/(U*I);
Type: LinearOperator(OrderedVariableList([1,2]),Expression(Integer))
fricas
Ì:=(Ω*I)/(I*U);
Type: LinearOperator(OrderedVariableList([1,2]),Expression(Integer))
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)))
 (9)
Type: List(Equation(Expression(Integer)))
fricas
eq2:=equate(Ì,I)
 (10)
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))
 (11)
Type: LinearOperator(OrderedVariableList([1,2]),Expression(Integer))
fricas
matrix Ξ(Ξ(Ω/(𝐝.i*𝐝.j), i,1..dim), j,1..dim)
 (12)
Type: Matrix(LinearOperator(OrderedVariableList([1,2]),Expression(Integer)))

This is equivalent to a matrix inverse (transposed!)

fricas
Um:=matrix Ξ(Ξ((𝐞.i*𝐞.j)/U, i,1..dim), j,1..dim)
 (13)
Type: Matrix(LinearOperator(OrderedVariableList([1,2]),Expression(Integer)))
fricas
mU:=transpose inverse map(retract,Um)
 (14)
Type: Matrix(Expression(Integer))
fricas
Ωm:=Σ(Σ(mU(i,j)*(𝐞.i*𝐞.j), i,1..dim), j,1..dim)
 (15)
Type: LinearOperator(OrderedVariableList([1,2]),Expression(Integer))
fricas
-- compare
test(Ω=Ωm)
 (16)
Type: Boolean

Check that the snake relation holds

fricas
test
(  I Ω   )  /
(   U I  )  =  I
 (17)
Type: Boolean
fricas
test
(   Ω I  )  /
(  I U   )  =  I
 (18)
Type: Boolean

## Dimension

This quantity depends on !

fricas
d:=
Ω /
U
 (19)
Type: LinearOperator(OrderedVariableList([1,2]),Expression(Integer))

This "twisted" quantity does not.

fricas
d':=
Ω /
X /
U
 (20)
Type: LinearOperator(OrderedVariableList([1,2]),Expression(Integer))

## Symmetric Pairing

Repeat the calculation, assuming that U is symmetric.

fricas
sym:=groebner ravel(U-X/U)
 (21)
Type: List(Polynomial(Integer))
fricas
vars:=map(x+->kernels(x).1,sym)::List Symbol
 (22)
Type: List(Symbol)
fricas
eqs:=solve(sym,vars).1
 (23)
Type: List(Equation(Fraction(Polynomial(Integer))))
fricas
U:=eval(U,eqs)
 (24)
Type: LinearOperator(OrderedVariableList([1,2]),Expression(Integer))

fricas
Um:=matrix Ξ(Ξ((𝐞.i*𝐞.j)/U, i,1..dim), j,1..dim)
 (25)
Type: Matrix(LinearOperator(OrderedVariableList([1,2]),Expression(Integer)))
fricas
mU:=transpose inverse map(retract,Um)
 (26)
Type: Matrix(Expression(Integer))
fricas
Ω:=Σ(Σ(mU(i,j)*(𝐞.i*𝐞.j), i,1..dim), j,1..dim)
 (27)
Type: LinearOperator(OrderedVariableList([1,2]),Expression(Integer))

Check that the snake relation holds

fricas
test
(  I Ω   )  /
(   U I  )  =  I
 (28)
Type: Boolean
fricas
test
(   Ω I  )  /
(  I U   )  =  I
 (29)
Type: Boolean

These quantities no longer depends on !

fricas
d:=
Ω /
U
 (30)
Type: LinearOperator(OrderedVariableList([1,2]),Expression(Integer))

fricas
d':=
Ω /
X /
U
 (31)
Type: LinearOperator(OrderedVariableList([1,2]),Expression(Integer))

Twist dimension or twist snake? --Bill Page, Sun, 08 May 2011 14:16:39 -0700 reply
TwistedSnakeRelation

 Subject:   Be Bold !! ( 14 subscribers )