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

# Edit detail for Snake Relation revision 3 of 11

 1 2 3 4 5 6 7 8 9 10 11 Editor: Bill Page Time: 2011/04/22 09:43:41 GMT-7 Note: dimension

changed:
-We need the Axiom LinearOperator library.
We use the Axiom LinearOperator library

changed:
-
-Use the following macros for convenient notation
and convenient notation

removed:
--- summation

removed:
--- list

removed:
--- subscript

macro sp == superscript

changed:
-𝐋 is the domain of 4-dimensional linear operators
Let 𝐋 be the domain of 2-dimensional linear operators

changed:
-U:=Σ(Σ(script('u,[[],[i,j]])*𝐝.i*𝐝.j, i,1..dim), j,1..dim)
U:=Σ(Σ(sp('u,[i,j])*𝐝.i*𝐝.j, i,1..dim), j,1..dim)

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

changed:
-Ω:𝐋:=Σ(Σ(script('u,[[i,j]])*𝐞.i*𝐞.j, i,1..dim), j,1..dim)
-Iright:=(I*Ω)/(U*I);
-Ileft:=(Ω*I)/(I*U);
Ω:𝐋:=Σ(Σ(sb('u,[i,j])*𝐞.i*𝐞.j, i,1..dim), j,1..dim)
Í:=(I*Ω)/(U*I);
Ì:=(Ω*I)/(I*U);

changed:
-eq1:=equate(Iright,I);
-eq2:=equate(Ileft,I);
-snake:=solve(concat(eq1,eq2),concat Ξ(Ξ(script('u,[[i,j]]), i,1..dim), j,1..dim));
eq1:=equate(Í,I)
eq2:=equate(Ì,I)
snake:=solve(concat(eq1,eq2),concat Ξ(Ξ(sb('u,[i,j]), i,1..dim), j,1..dim));

changed:
-The quantity "dimension" depends on $U$!
Dimension

This quantity depends on $U$!


Non-degeneracy of the pairing

Ref:

We use the Axiom LinearOperator? library

axiom
)library MONAL PROP LIN
Monoidal is now explicitly exposed in frame initial
Monoidal will be automatically loaded when needed from
/var/zope2/var/LatexWiki/MONAL.NRLIB/MONAL
Prop is now explicitly exposed in frame initial
Prop will be automatically loaded when needed from
/var/zope2/var/LatexWiki/PROP.NRLIB/PROP
LinearOperator is now explicitly exposed in frame initial
LinearOperator will be automatically loaded when needed from
/var/zope2/var/LatexWiki/LIN.NRLIB/LIN

and convenient notation

axiom
macro Σ(x,i,n)==reduce(+,[x for i in n])
Type: Void
axiom
macro Ξ(f,i,n)==[f for i in n]
Type: Void
axiom
macro sb == subscript
Type: Void
axiom
macro sp == superscript
Type: Void

Let 𝐋 be the domain of 2-dimensional linear operators

axiom
dim:=2
 (1)
Type: PositiveInteger?
axiom
macro ℒ == List
Type: Void
axiom
macro ℚ == Expression Integer
Type: Void
axiom
𝐋 := LinearOperator(dim, OVAR [], ℚ)
 (2)
Type: Type
axiom
𝐞:ℒ 𝐋      := basisVectors()
 (3)
Type: List(LinearOperator?(2,OrderedVariableList?([]),Expression(Integer)))
axiom
𝐝:ℒ 𝐋      := basisForms()
 (4)
Type: List(LinearOperator?(2,OrderedVariableList?([]),Expression(Integer)))
axiom
I:𝐋:=[1]   -- identity for composition
 (5)
Type: LinearOperator?(2,OrderedVariableList?([]),Expression(Integer))
axiom
X:𝐋:=[2,1] -- twist
 (6)
Type: LinearOperator?(2,OrderedVariableList?([]),Expression(Integer))

A scalar product (pairing) is denoted by

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

## Co-pairing

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

axiom
Ω:𝐋:=Σ(Σ(sb('u,[i,j])*𝐞.i*𝐞.j, i,1..dim), j,1..dim)
 (8)
Type: LinearOperator?(2,OrderedVariableList?([]),Expression(Integer))
axiom
Í:=(I*Ω)/(U*I);
Type: LinearOperator?(2,OrderedVariableList?([]),Expression(Integer))
axiom
Ì:=(Ω*I)/(I*U);
Type: LinearOperator?(2,OrderedVariableList?([]),Expression(Integer))
axiom
equate(f,g)==map((x,y)+->(x=y),ravel f, ravel g);
Type: Void
axiom
eq1:=equate(Í,I)
axiom
Compiling function equate with type (LinearOperator(2,
OrderedVariableList([]),Expression(Integer)),LinearOperator(2,
OrderedVariableList([]),Expression(Integer))) -> List(Equation(
Expression(Integer)))
 (9)
Type: List(Equation(Expression(Integer)))
axiom
eq2:=equate(Ì,I)
 (10)
Type: List(Equation(Expression(Integer)))
axiom
snake:=solve(concat(eq1,eq2),concat Ξ(Ξ(sb('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))
 (11)
Type: LinearOperator?(2,OrderedVariableList?([]),Expression(Integer))
axiom
matrix Ξ(Ξ(Ω/(𝐝.i*𝐝.j), i,1..dim), j,1..dim)
 (12)
Type: Matrix(LinearOperator?(2,OrderedVariableList?([]),Expression(Integer)))

This is equivalent to a matrix inverse (transposed!)

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

Check that the snake relation holds

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

## Dimension

This quantity depends on !

axiom
d:𝐋:=
Ω      /
U
 (19)
Type: LinearOperator?(2,OrderedVariableList?([]),Expression(Integer))