Refs:
We need the Axiom LinearOperator library.
fricas
(1) -> )library CARTEN ARITY CMONAL CPROP CLOP CALEY
CartesianTensor is now explicitly exposed in frame initial
CartesianTensor will be automatically loaded when needed from
/var/aw/var/LatexWiki/CARTEN.NRLIB/CARTEN
Arity is now explicitly exposed in frame initial
Arity will be automatically loaded when needed from
/var/aw/var/LatexWiki/ARITY.NRLIB/ARITY
ClosedMonoidal is now explicitly exposed in frame initial
ClosedMonoidal will be automatically loaded when needed from
/var/aw/var/LatexWiki/CMONAL.NRLIB/CMONAL
ClosedProp is now explicitly exposed in frame initial
ClosedProp will be automatically loaded when needed from
/var/aw/var/LatexWiki/CPROP.NRLIB/CPROP
ClosedLinearOperator is now explicitly exposed in frame initial
ClosedLinearOperator will be automatically loaded when needed from
/var/aw/var/LatexWiki/CLOP.NRLIB/CLOP
CaleyDickson is now explicitly exposed in frame initial
CaleyDickson will be automatically loaded when needed from
/var/aw/var/LatexWiki/CALEY.NRLIB/CALEY
Use the following macros for convenient notation
fricas
-- summation
macro Σ(x,i,n)==reduce(+,[x for i in n])
Type: Void
fricas
-- list
macro Ξ(f,i,n)==[f for i in n]
Type: Void
fricas
-- subscript and superscripts
macro sb == subscript
Type: Void
fricas
macro sp == superscript
Type: Void
𝐋 is the domain of 2-dimensional linear operators over the rational functions ℚ (Expression Integer), i.e. ratio of polynomials with integer coefficients.
fricas
dim:=2
fricas
macro ℒ == List
Type: Void
fricas
macro ℂ == CaleyDickson
Type: Void
fricas
macro ℚ == Expression Integer
Type: Void
fricas
𝐋 := ClosedLinearOperator(OVAR ['1,'2], ℚ)
Type: Type
fricas
𝐞:ℒ 𝐋 := basisOut()
fricas
𝐝:ℒ 𝐋 := basisIn()
fricas
I:𝐋:=[1] -- identity for composition
fricas
X:𝐋:=[2,1] -- twist
fricas
V:𝐋:=ev(1) -- evaluation
fricas
Λ:𝐋:=co(1) -- co-evaluation
fricas
!:𝐋:=[-1] -- color change 1 -> 1*
fricas
$:𝐋:=dagger ! -- 1* -> 1
fricas
J:𝐋:=$/!
fricas
test(!/$=I)
Type: Boolean
fricas
equate(eq)==map((x,y)+->(x=y),ravel lhs eq, ravel rhs eq);
Type: Void
We want to be able to implement linear operators with two
"colors" like the following:
An example starting with Complex Algebra
The basis consists of the real and imaginary units. We use complex multiplication to form the "multiplication table" as a matrix. Then the structure constants can be obtained by dividing each matrix entry by the list of basis vectors.
Split-complex can be specified by Caley-Dickson parameter (q0 = -1)
fricas
--q:=1 -- split-complex
q:=sp('i,[2])
Type: Symbol
fricas
QQ := ℂ(ℚ,'i,q);
Type: Type
Basis: Each B.i is a complex number
fricas
B:ℒ QQ := map(x +-> hyper x,1$SQMATRIX(dim,ℚ)::ℒ ℒ ℚ)
fricas
-- Multiplication table:
M:Matrix QQ := matrix Ξ(Ξ(B.i*B.j, i,1..dim), j,1..dim)
fricas
-- Function to divide the matrix entries by a basis element
S(y) == map(x +-> real real(x/y),M)
Type: Void
fricas
-- The result is a nested list
ѕ :=map(S,B)::ℒ ℒ ℒ ℚ
fricas
Compiling function S with type CaleyDickson(Expression(Integer),i,i[
;2]) -> Matrix(Expression(Integer))
Type: List(List(List(Expression(Integer))))
fricas
-- structure constants form a tensor operator
Y := Σ(Σ(Σ(ѕ(i)(k)(j)*𝐞.i*𝐝.j*($/𝐝.k), i,1..dim), j,1..dim), k,1..dim)
fricas
arity Y
fricas
Y! := (I,!)/Y
fricas
matrix Ξ(Ξ((𝐞.i*𝐞.j)/Y!, i,1..dim), j,1..dim)
Multiplication of arbitrary quaternions and
fricas
a:=Σ(sb('a,[i])*𝐞.i, i,1..dim)
fricas
b:=Σ(sb('b,[i])*𝐞.i, i,1..dim)
fricas
(a,b)/Y!
Multiplication is Associative
fricas
test(
( Y! J ) / _
( Y ) = _
( I Y ) / _
( Y! ) )
Type: Boolean
A scalar product is denoted by the (2,0)-tensor
fricas
U:=Σ(Σ(script('u,[[],[i,j]])*𝐝.i*($/𝐝.j), i,1..dim), j,1..dim)
fricas
arity U
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.
How should we color this?