Non-degeneracy of the pairing (snake relation) or equivalently Ref:
We use the Axiom LinearOperator library fricas )library CARTEN MONAL PROP LOP and some convenient notation fricas macro Σ(x, Type: Void
fricas macro Ξ(f, 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
Type: PositiveInteger?
fricas macro ℒ == List Type: Void
fricas macro ℚ == Expression Integer Type: Void
fricas 𝐋 := LinearOperator(OVAR ['1,
Type: Type
fricas 𝐞:ℒ 𝐋 := basisOut()
fricas 𝐝:ℒ 𝐋 := basisIn()
fricas I:𝐋:=[1] -- identity for composition
fricas X:𝐋:=[2,
PairingA scalar product (pairing) is represented by fricas U:=Σ(Σ(sp('u,
In general we do not require that it be symmetric. Co-pairingSolve the "twisted snake relation" as a system of linear equations. fricas Ω:𝐋:=Σ(Σ(sb('u,
fricas Í := ( I Ω ) / ( I X ) / ( U I )
fricas Ì:= ( Ω I ) / ( X I ) / ( I U )
fricas equate(f, Type: Void
fricas eq1:=equate(Í, fricas Compiling function equate with type (LinearOperator( OrderedVariableList([1,
Type: List(Equation(Expression(Integer)))
fricas eq2:=equate(Ì,
Type: List(Equation(Expression(Integer)))
fricas snake:=solve(concat(eq1, Type: List(List(Equation(Expression(Integer))))
fricas if #snake ~= 1 then error "no solution" Type: Void
fricas Ω:=eval(Ω,
fricas matrix Ξ(Ξ(Ω/(𝐝.i*𝐝.j),
This is equivalent to a matrix inverse (transposed!) fricas Um:=matrix Ξ(Ξ((𝐞.i*𝐞.j)/U,
fricas mU:=inverse map(retract,
Type: Union(Matrix(Expression(Integer)),
fricas Ωm:=Σ(Σ(mU(i,
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
DimensionSince the "snake" is twisted, dimension is as expected. fricas d:= Ω / U
This "twisted dimension " depends on ! fricas d':= Ω / X / U
|