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

Edit detail for LinearOperator revision 40 of 63

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
Editor: Bill Page
Time: 2011/04/19 20:38:46 GMT-7
Note: Evalable

added:
    if K has Evalable(K) then Evalable(K)

added:
    if K has Evalable(K) then
      eval(g:%,f:List Equation K):% == map((x:K):K+->eval(x,f),g)

changed:
-L:=LinearOperator(dim,OVAR [x,y],FRAC POLY INT)
Q:=EXPR INT
L:=LinearOperator(dim,OVAR [x,y],Q)

changed:
-X2:L:=inp[inp([script(x,[[],[i,j]]) for j in 1..2])$L for i in 1..2]
X2:L:=inp[inp([script(x,[[],[i,j]]) for j in 1..2])$L for i in 1..dim]

changed:
-Y2:L:=out[out([script(y,[[i,j]]) for j in 1..2])$L for i in 1..2]
Y2:L:=out[out([script(y,[[i,j]]) for j in 1..2])$L for i in 1..dim]

changed:
-\end{axiom}
[superscript(a1,[i])=i for i in 1..dim]::List EQ Q
eval(A,[superscript(a1,[i])=i for i in 1..dim]::List EQ Q)
\end{axiom}

Introduction

Bi-graded linear operators (transformations) over n-dimensional vector spaces on a commutative ring K. Members of this domain are morphisms K^n \to K^m. Products, permutations and composition (grafting) of morphisms are implemented. Operators are represented internally as tensors.

Operator composition and products can be visualized by directed graphs (read from top to bottom) such as:

      n = 3     inputs
      m = 0     outputs


\scalebox{1} % Change this value to rescale the drawing.
{
\begin{pspicture}(0,-0.92)(4.82,0.92)
\psbezier[linewidth=0.04](2.2,0.9)(2.2,0.1)(2.6,0.1)(2.6,0.9)
\psline[linewidth=0.04cm](2.4,0.3)(2.4,-0.1)
\psbezier[linewidth=0.04](2.4,-0.1)(2.4,-0.9)(3.0,-0.9)(3.0,-0.1)
\psline[linewidth=0.04cm](3.0,-0.1)(3.0,0.9)
\psbezier[linewidth=0.04](4.8,0.9)(4.8,0.1)(4.4,0.1)(4.4,0.9)
\psline[linewidth=0.04cm](4.6,0.3)(4.6,-0.1)
\psbezier[linewidth=0.04](4.6,-0.1)(4.6,-0.9)(4.0,-0.9)(4.0,-0.1)
\psline[linewidth=0.04cm](4.0,-0.1)(4.0,0.9)
\usefont{T1}{ptm}{m}{n}
\rput(3.4948437,0.205){=}
\psline[linewidth=0.04cm](0.6,-0.7)(0.6,0.9)
\psbezier[linewidth=0.04](0.0,-0.1)(0.0,-0.9)(1.2,-0.9)(1.2,-0.1)
\psline[linewidth=0.04cm](0.0,-0.1)(0.0,0.9)
\psline[linewidth=0.04cm](1.2,-0.1)(1.2,0.9)
\usefont{T1}{ptm}{m}{n}
\rput(1.6948438,0.205){=}
\end{pspicture} 
}
 

External vertices in this graph represent vectors, and tensors. Internal nodes and arcs (edges) represent linear operators. Horizontal juxtaposition (i.e. a horizontal cross-section) represents tensor product. Vertical juxtaposition represents operator composition.

See examples and documentation below

I would like you to make brief comments in the form at the bottom of this web page. For more detailed but related comments click discussion on the top menu.

Regards, Bill Page.

Source Code

We try to start the right way by defining the concept of a monoidal category.

Ref: http://en.wikipedia.org/wiki/PROP_(category_theory)

spad
)abbrev category MONAL Monoidal
Monoidal(R:AbelianSemiGroup):Category == Monoid with
    dom: % -> R
      ++ domain
    cod: % -> R
      ++ co-domain
    _/: (%,%) -> %
      ++ vertical composition f/g
    apply:(%,%) -> %
      ++ horizontal product f g = f*g
spad
   Compiling FriCAS source code from file 
      /var/zope2/var/LatexWiki/3243124937217769214-25px001.spad using 
      old system compiler.
   MONAL abbreviates category Monoidal 
------------------------------------------------------------------------
   initializing NRLIB MONAL for Monoidal 
   compiling into NRLIB MONAL 
;;; *** |Monoidal| REDEFINED Time: 0.03 SEC.
finalizing NRLIB MONAL Processing Monoidal for Browser database: --------(dom (R %))--------- --------(cod (R %))--------- --------(/ (% % %))--------- --->-->Monoidal((/ (% % %))): Improper first word in comments: vertical "vertical composition \\spad{f/g}" --------(apply (% % %))--------- --->-->Monoidal((apply (% % %))): Improper first word in comments: horizontal "horizontal product \\spad{f} \\spad{g} = \\spad{f*g}" --->-->Monoidal(constructor): Not documented!!!! --->-->Monoidal(): Missing Description ; compiling file "/var/zope2/var/LatexWiki/MONAL.NRLIB/MONAL.lsp" (written 19 APR 2011 08:38:04 PM):
; /var/zope2/var/LatexWiki/MONAL.NRLIB/MONAL.fasl written ; compilation finished in 0:00:00.048 ------------------------------------------------------------------------ Monoidal is now explicitly exposed in frame initial Monoidal will be automatically loaded when needed from /var/zope2/var/LatexWiki/MONAL.NRLIB/MONAL
>> System error: The bounding indices 163 and 162 are bad for a sequence of length 162. See also: The ANSI Standard, Glossary entry for "bounding index designator" The ANSI Standard, writeup for Issue SUBSEQ-OUT-OF-BOUNDS:IS-AN-ERROR

The initial object in this category is the domain Prop (Products and Permutations).

spad
)abbrev domain PROP Prop
Prop(): Exports == Implementation where
  NNI ==> NonNegativeInteger
Exports ==> Join(Monoidal NNI, CoercibleTo OutputForm) with _/:(NNI,NNI) -> % ++ Prop constructor
Implementation ==> add Rep == Record(domain:NNI,codomain:NNI) rep(x:%):Rep == x pretend Rep per(x:Rep):% == x pretend %
dom(f:%):NNI == rep(f).domain cod(f:%):NNI == rep(f).codomain
coerce(f:%):OutputForm == dom(f)::OutputForm / cod(f)::OutputForm (f:NNI / g:NNI):% == per [f,g] I == per [1,1]
-- evaluation (ff:% / gg:%):% == g:=gg; f:=ff -- partial application from the left n:=subtractIfCan(cod ff,dom gg) if n case NNI and n>0 then -- apply g on f from the left, pass extra f outputs on the right print(hconcat([message("arity warning: "), _ over(ff::OutputForm, _ gg::OutputForm*(I::OutputForm)^n::OutputForm) ]))$OutputForm g:=gg*I^n m:=subtractIfCan(dom gg, cod ff) -- apply g on f from the left, add extra g inputs on the left if m case NNI and m>0 then print(hconcat([message("arity warning: "), _ over((I::OutputForm)^m::OutputForm*ff::OutputForm, _ gg::OutputForm)]))$OutputForm f:=I^m*ff f/g
0:% == per [0,0] 1:% == per [0,0]
-- product apply(f:%,g:%):% == f * g (f:% * g:%):% == per [dom(f)+dom(g),cod(f)+cod(g)]
-- preserves arity (f:% + g:%):% == dom(f)~=dom(g) or cod(g) ~= cod(g) => error "arity" f
spad
   Compiling FriCAS source code from file 
      /var/zope2/var/LatexWiki/9071963415324596130-25px002.spad using 
      old system compiler.
   PROP abbreviates domain Prop 
------------------------------------------------------------------------
   initializing NRLIB PROP for Prop 
   compiling into NRLIB PROP 
   compiling local rep : $ -> Record(domain: NonNegativeInteger,codomain: NonNegativeInteger)
      PROP;rep is replaced by x 
Time: 0.05 SEC.
compiling local per : Record(domain: NonNegativeInteger,codomain: NonNegativeInteger) -> $ PROP;per is replaced by x Time: 0 SEC.
compiling exported dom : $ -> NonNegativeInteger Time: 0 SEC.
compiling exported cod : $ -> NonNegativeInteger Time: 0.01 SEC.
compiling exported coerce : $ -> OutputForm Time: 0.01 SEC.
compiling exported / : (NonNegativeInteger,NonNegativeInteger) -> $ Time: 0 SEC.
compiling exported / : ($,$) -> $ Time: 0.03 SEC.
compiling local Zero : () -> $ Time: 0.01 SEC.
compiling exported One : () -> $ Time: 0 SEC.
compiling exported apply : ($,$) -> $ Time: 0 SEC.
compiling exported * : ($,$) -> $ Time: 0.01 SEC.
compiling local + : ($,$) -> $ Time: 0.01 SEC.
(time taken in buildFunctor: 0)
;;; *** |Prop| REDEFINED
;;; *** |Prop| REDEFINED Time: 0.01 SEC.
Cumulative Statistics for Constructor Prop Time: 0.14 seconds
finalizing NRLIB PROP Processing Prop for Browser database: --------(/ (% NNI NNI))--------- --->-->Prop(constructor): Not documented!!!! --->-->Prop(): Missing Description ; compiling file "/var/zope2/var/LatexWiki/PROP.NRLIB/PROP.lsp" (written 19 APR 2011 08:38:05 PM):
; /var/zope2/var/LatexWiki/PROP.NRLIB/PROP.fasl written ; compilation finished in 0:00:00.259 ------------------------------------------------------------------------ Prop is now explicitly exposed in frame initial Prop will be automatically loaded when needed from /var/zope2/var/LatexWiki/PROP.NRLIB/PROP
>> System error: The bounding indices 163 and 162 are bad for a sequence of length 162. See also: The ANSI Standard, Glossary entry for "bounding index designator" The ANSI Standard, writeup for Issue SUBSEQ-OUT-OF-BOUNDS:IS-AN-ERROR

The LinearOperator? domain is Moniodal over NonNegativeInteger?. It is the free algebra over Prop with n-generators.

Ref: http://en.wikipedia.org/wiki/Category_of_vector_spaces

  • all members of this domain have the same dimension
  • it might be useful (but much more complicated) to allow source and target dimensions to be different

spad
)abbrev domain LIN LinearOperator
LinearOperator(dim:NNI,gen:OrderedFinite,K:CommutativeRing): Exports == Implementation where
  NNI ==> NonNegativeInteger
  NAT ==> PositiveInteger
  T ==> CartesianTensor(1,dim,K)
Exports ==> Join(Field, BiModule(K,K), Monoidal NNI, RetractableTo K) with inp: List K -> % ++ incoming vector inp: List % -> % out: List K -> % ++ output vector out: List % -> % arity: % -> Prop basisVectors: () -> List % basisForms: () -> List % tensor: % -> T map: (K->K,%) -> % if K has Evalable(K) then Evalable(K) ravel: % -> List K unravel: (Prop,List K) -> % coerce:(x:List NAT) -> % ++ identity for composition and permutations of its products coerce:(x:List None) -> % ++ [] = 1 elt: (%,%) -> % elt: (%,NAT) -> % elt: (%,NAT,NAT) -> % elt: (%,NAT,NAT,NAT) -> %
Implementation ==> add import List NNI import NAT Rep == Record(domain:NNI, codomain:NNI, data:T) rep(x:%):Rep == x pretend Rep per(x:Rep):% == x pretend %
-- Prop (arity) dom(f:%):NNI == rep(f).domain cod(f:%):NNI == rep(f).codomain dat(f:%):T == rep(f).data arity(f:%):Prop == dom(f)/cod(f)
retractIfCan(f:%):Union(K,"failed") == dom(f)=0 and cod(f)=0 => retract(dat f)$T return "failed" retract(f:%):K == dom(f)=0 and cod(f)=0 => retract(dat f)$T error "failed"
-- basis basisVectors():List % == [per [0,1,entries(row(1,i)$SquareMatrix(dim,K))::T] for i in 1..dim] basisForms():List % == [per [1,0,entries(row(1,i)$SquareMatrix(dim,K))::T] for i in 1..dim]
-- manipulation map(f:K->K, g:%):% == per [dom g,cod g,unravel(map(f,ravel dat g))$T] if K has Evalable(K) then eval(g:%,f:List Equation K):% == map((x:K):K+->eval(x,f),g) ravel(g:%):List K == ravel dat g unravel(p:Prop,r:List K):% == dim^(dom(p)+cod(p)) ~= #r => error "failed" per [dom(p),cod(p),unravel(r)$T] tensor(x:%):T == dat(x)
-- sum (f:% + g:%):% == dat(f)=0 => g dat(g)=0 => f dom(f) ~= dom(g) or cod(f) ~= cod(g) => error "arity" per [dom f,cod f,dat(f)+dat(g)]
(f:% - g:%):% == dat(f)=0 => g dat(g)=0 => f dom(f) ~= dom(f) or cod(g) ~= cod(g) => error "arity" per [dom f, cod f,dat(f)-dat(g)]
_-(f:%):% == per [dom f, cod f,-dat(f)]
-- identity for sum (trivial zero map) 0 == per [0,0,0] -- identity for product 1:% == per [0,0,1] -- identity for composition I == per([1,1,kroneckerDelta()$T])
-- repeated sum (p:NNI * f:%):% == p=1 => f q:=subtractIfCan(p,1) q case NNI => q*f + f -- zero map (non-trivial) per [dom f,cod f,0*dat(f)]
-- permutations and identities coerce(p:List NAT):% == r:=I^#p #p = 1 and p.1 = 1 => return r p1:List Integer:=[i for i in 1..#p] p2:List Integer:=[#p+i for i in p] p3:=concat(p1,p2) per [#p,#p,reindex(dat r,p3)] coerce(p:List None):% == per [0,0,1] coerce(x:K):% == 1*x
-- product elt(f:%,g:%):% == f * g elt(f:%,g:NAT):% == f * I^g -- why do we have to pretend? !! elt(f:%,g1:NAT,g2:NAT):% == f * [g1 pretend NAT,g2 pretend NAT]::List NAT::% elt(f:%,g1:NAT,g2:NAT,g3:NAT):% == f * [g1 pretend NAT,g2 pretend NAT,g3 pretend NAT]::List NAT::% apply(f:%,g:%):% == f * g (f:% * g:%):% == r:T := product(dat f,dat g) -- dom(f) + cod(f) + dom(g) + cod(g) p:List Integer := concat _ [[i for i in 1..dom(f)], _ [dom(f)+cod(f)+i for i in 1..dom(g)], _ [dom(f)+i for i in 1..cod(f)], _ [dom(f)+dom(g)+cod(f)+i for i in 1..cod(g)]] -- dom(f) + dom(g) + cod(f) + cod(g) per [dom(f)+dom(g),cod(f)+cod(g),reindex(r,p)]
-- repeated product (f:% ^ p:NNI):% == p=1 => f q:=subtractIfCan(p,1) q case NNI => f^q * f 1
-- evaluation: -- f/g : A^n -> A^p = f:A^n -> A^m / g:A^m -> A^p (ff:% / gg:%):% == g:=gg; f:=ff -- partial application from the left n:=subtractIfCan(cod ff,dom gg) if n case NNI and n>0 then -- apply g on f from the left, pass extra f outputs on the right print(hconcat([message("arity warning: "), _ over(arity(ff)::OutputForm, _ arity(gg)::OutputForm*(arity(I)::OutputForm)^n::OutputForm) ]))$OutputForm g:=gg*I^n m:=subtractIfCan(dom gg, cod ff) -- apply g on f from the left, add extra g inputs on the left if m case NNI and m>0 then print(hconcat([message("arity warning: "), _ over((arity(I)::OutputForm)^m::OutputForm*arity(ff)::OutputForm, _ arity(gg)::OutputForm)]))$OutputForm f:=I^m*ff -- dom(g) ~= cod(f) => error "arity" r:T := product(dat f, dat g) g1:Integer:=dom(f)+1 f1:Integer:=dom(f)+cod(f)+1 for i in 0..cod(f)-1 repeat r := contract(r,g1,f1-i) per [dom(f),cod(g),r]
-- inherited from Ring (x:% = y:%):Boolean == dom(x) ~= dom(y) or cod(x) ~= cod(y) => error "arity" dat(x) = dat(y) (x:K * y:%):% == per [dom y, cod y,x*dat(y)] (x:% * y:K):% == per [dom x,cod x,dat(x)*y] (x:Integer * y:%):% == per [dom y,cod y,x*dat(y)]
-- constructors inp(x:List K):% == per [1,0,entries(x)::T] inp(x:List %):% == #removeDuplicates([dom(y) for y in x]) ~= 1 or #removeDuplicates([cod(y) for y in x]) ~= 1 => error "arity" per [(dom(first x)+1),cod(first x),[dat(y) for y in x]::T]$Rep out(x:List K):% == per [0,1,entries(x)::T] out(x:List %):% == #removeDuplicates([dom(y) for y in x])~=1 or #removeDuplicates([cod(y) for y in x])~=1 => error "arity" per [dom(first x),(cod(first x)+1),[dat(y) for y in x]::T]$Rep
-- display operators using basis coerce(x:%):OutputForm == dom(x)=0 and cod(x)=0 => return dat(x)::OutputForm if size()$gen > 0 then gens:List OutputForm:=[index(i::PositiveInteger)$gen::OutputForm for i in 1..dim] else -- default to numeric indices gens:List OutputForm:=[i::OutputForm for i in 1..dim] -- input basis inps:List OutputForm := [] for i in 1..dom(x) repeat empty? inps => inps:=gens inps:=concat [[(inps.k * gens.j) for j in 1..dim] for k in 1..#inps] -- output basis outs:List OutputForm := [] for i in 1..cod(x) repeat empty? outs => outs:=gens outs:=concat [[(outs.k * gens.j) for j in 1..dim] for k in 1..#outs] -- combine input (superscripts) and/or output(subscripts) to form basis symbols bases:List OutputForm := [] if #inps > 0 and #outs > 0 then bases:=concat([[ scripts(message("|"),[i,j]) for i in outs] for j in inps]) else if #inps > 0 then bases:=[super(message("|"),i) for i in inps] else if #outs > 0 then bases:=[sub(message("|"),j) for j in outs] -- merge bases with data to form term list terms:=[(k=1 => base;k::OutputForm*base) for base in bases for k in ravel dat(x) | k~=0] empty? terms => return 0::OutputForm -- combine the terms return reduce(_+,terms)
spad
   Compiling FriCAS source code from file 
      /var/zope2/var/LatexWiki/3864091039844420508-25px003.spad using 
      old system compiler.
   LIN abbreviates domain LinearOperator 
------------------------------------------------------------------------
   initializing NRLIB LIN for LinearOperator 
   compiling into NRLIB LIN 
   importing List NonNegativeInteger
   importing PositiveInteger
   compiling local rep : $ -> Record(domain: NonNegativeInteger,codomain: NonNegativeInteger,data: CartesianTensor(One,dim,K))
      LIN;rep is replaced by x 
Time: 0.09 SEC.
compiling local per : Record(domain: NonNegativeInteger,codomain: NonNegativeInteger,data: CartesianTensor(One,dim,K)) -> $ LIN;per is replaced by x Time: 0 SEC.
compiling exported dom : $ -> NonNegativeInteger Time: 0.01 SEC.
compiling exported cod : $ -> NonNegativeInteger Time: 0 SEC.
compiling local dat : $ -> CartesianTensor(One,dim,K) Time: 0 SEC.
compiling exported arity : $ -> Prop Time: 0 SEC.
compiling exported retractIfCan : $ -> Union(K,failed) Time: 0.01 SEC.
compiling exported retract : $ -> K Time: 0.01 SEC.
compiling exported basisVectors : () -> List $ Time: 0.16 SEC.
compiling exported basisForms : () -> List $ Time: 0.03 SEC.
compiling exported map : (K -> K,$) -> $ Time: 0.04 SEC.
****** Domain: K already in scope augmenting K: (Evalable K) compiling exported eval : ($,List Equation K) -> $ Time: 0.01 SEC.
compiling exported ravel : $ -> List K Time: 0.01 SEC.
compiling exported unravel : (Prop,List K) -> $ Time: 0.05 SEC.
compiling exported tensor : $ -> CartesianTensor(One,dim,K) Time: 0.01 SEC.
compiling exported + : ($,$) -> $ Time: 0.01 SEC.
compiling exported - : ($,$) -> $ Time: 0.01 SEC.
compiling exported - : $ -> $ Time: 0 SEC.
compiling exported Zero : () -> $ Time: 0 SEC.
compiling exported One : () -> $ Time: 0.01 SEC.
compiling exported * : (NonNegativeInteger,$) -> $ Time: 0 SEC.
compiling exported coerce : List PositiveInteger -> $ Time: 0.03 SEC.
compiling exported coerce : List None -> $ Time: 0.01 SEC.
compiling exported coerce : K -> $ Time: 0.03 SEC.
compiling exported elt : ($,$) -> $ Time: 0 SEC.
compiling exported elt : ($,PositiveInteger) -> $ Time: 0 SEC.
compiling exported elt : ($,PositiveInteger,PositiveInteger) -> $ Time: 0 SEC.
compiling exported elt : ($,PositiveInteger,PositiveInteger,PositiveInteger) -> $ Time: 0.01 SEC.
compiling exported apply : ($,$) -> $ Time: 0 SEC.
compiling exported * : ($,$) -> $ Time: 0.07 SEC.
compiling exported ^ : ($,NonNegativeInteger) -> $ Time: 0 SEC.
compiling exported / : ($,$) -> $ Time: 0.05 SEC.
compiling exported = : ($,$) -> Boolean Time: 0.01 SEC.
compiling exported * : (K,$) -> $ Time: 0 SEC.
compiling exported * : ($,K) -> $ Time: 0 SEC.
compiling exported * : (Integer,$) -> $ Time: 0 SEC.
compiling exported inp : List K -> $ Time: 0 SEC.
compiling exported inp : List $ -> $ Time: 0.04 SEC.
compiling exported out : List K -> $ Time: 0 SEC.
compiling exported out : List $ -> $ Time: 0.02 SEC.
compiling exported coerce : $ -> OutputForm Time: 0.07 SEC.
****** Domain: K already in scope augmenting K: (Evalable K) (time taken in buildFunctor: 10)
;;; *** |LinearOperator| REDEFINED
;;; *** |LinearOperator| REDEFINED Time: 0.28 SEC.
Warnings: [1] elt: pretend(PositiveInteger) -- should replace by @ [2] coerce: bases has no value
Cumulative Statistics for Constructor LinearOperator Time: 1.08 seconds
finalizing NRLIB LIN Processing LinearOperator for Browser database: --------(inp (% (List K)))--------- --->-->LinearOperator((inp (% (List %)))): Not documented!!!! --------(out (% (List K)))--------- --->-->LinearOperator((out (% (List %)))): Not documented!!!! --->-->LinearOperator((arity ((Prop) %))): Not documented!!!! --->-->LinearOperator((basisVectors ((List %)))): Not documented!!!! --->-->LinearOperator((basisForms ((List %)))): Not documented!!!! --->-->LinearOperator((tensor (T$ %))): Not documented!!!! --->-->LinearOperator((map (% (Mapping K K) %))): Not documented!!!! --->-->LinearOperator((ravel ((List K) %))): Not documented!!!! --->-->LinearOperator((unravel (% (Prop) (List K)))): Not documented!!!! --------(coerce (% (List NAT)))--------- --->-->LinearOperator((coerce (% (List NAT)))): Improper first word in comments: identity "identity for composition and permutations of its products" --------(coerce (% (List (None))))--------- --->-->LinearOperator((coerce (% (List (None))))): Improper first word in comments: [] "[] = 1" --->-->LinearOperator((elt (% % %))): Not documented!!!! --->-->LinearOperator((elt (% % NAT))): Not documented!!!! --->-->LinearOperator((elt (% % NAT NAT))): Not documented!!!! --->-->LinearOperator((elt (% % NAT NAT NAT))): Not documented!!!! --->-->LinearOperator(constructor): Not documented!!!! --->-->LinearOperator(): Missing Description ; compiling file "/var/zope2/var/LatexWiki/LIN.NRLIB/LIN.lsp" (written 19 APR 2011 08:38:09 PM):
; /var/zope2/var/LatexWiki/LIN.NRLIB/LIN.fasl written ; compilation finished in 0:00:03.171 ------------------------------------------------------------------------ LinearOperator is now explicitly exposed in frame initial LinearOperator will be automatically loaded when needed from /var/zope2/var/LatexWiki/LIN.NRLIB/LIN
>> System error: The bounding indices 163 and 162 are bad for a sequence of length 162. See also: The ANSI Standard, Glossary entry for "bounding index designator" The ANSI Standard, writeup for Issue SUBSEQ-OUT-OF-BOUNDS:IS-AN-ERROR

Getting Started

Consult the source code above for more details.

Conveniences

axiom
-- summation
macro Σ(x,i)==reduce(+,[x for i in 1..dim])
Type: Void
axiom
-- list comprehension
macro Ξ(f,i)==[f for i in 1..dim]
Type: Void

Basis

axiom
dim:=2

\label{eq1}2(1)
Type: PositiveInteger?
axiom
Q:=EXPR INT

\label{eq2}\hbox{\axiomType{Expression}\ } (\hbox{\axiomType{Integer}\ })(2)
Type: Type
axiom
L:=LinearOperator(dim,OVAR [x,y],Q)

\label{eq3}\hbox{\axiomType{LinearOperator}\ } (2, \hbox{\axiomType{OrderedVariableList}\ } ([ x , y ]) , \hbox{\axiomType{Expression}\ } (\hbox{\axiomType{Integer}\ }))(3)
Type: Type
axiom
Dx:=basisVectors()$L

\label{eq4}\left[{|_{x}}, \:{|_{y}}\right](4)
Type: List(LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer)))
axiom
dx:=basisForms()$L

\label{eq5}\left[{|_{\ }^{x}}, \:{|_{\ }^{y}}\right](5)
Type: List(LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer)))
axiom
matrix Ξ(Ξ( dx.i * Dx.j, i),j)

\label{eq6}\left[ 
\begin{array}{cc}
{|_{x}^{x}}&{|_{x}^{y}}
\
{|_{y}^{x}}&{|_{y}^{y}}
(6)
Type: Matrix(LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer)))
axiom
matrix Ξ(Ξ( Dx.i / dx.j, i),j)

\label{eq7}\left[ 
\begin{array}{cc}
1 & 0 
\
0 & 1 
(7)
Type: Matrix(LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer)))

Construction

axiom
A1:L := Σ(superscript(a1,[i])*dx.i,i)

\label{eq8}{{a 1^{1}}\ {|_{\ }^{x}}}+{{a 1^{2}}\ {|_{\ }^{y}}}(8)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity A1

\label{eq9}1 \over 0(9)
Type: Prop
axiom
A2:L := Σ(superscript(a2,[i])*dx.i,i)

\label{eq10}{{a 2^{1}}\ {|_{\ }^{x}}}+{{a 2^{2}}\ {|_{\ }^{y}}}(10)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
A:L := inp[A1,A2]

\label{eq11}{{a 1^{1}}\ {|_{\ }^{x \  x}}}+{{a 1^{2}}\ {|_{\ }^{x \  y}}}+{{a 2^{1}}\ {|_{\ }^{y \  x}}}+{{a 2^{2}}\ {|_{\ }^{y \  y}}}(11)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity A

\label{eq12}2 \over 0(12)
Type: Prop
axiom
B1:L := Σ(subscript(b1,[i])*Dx.i,i)

\label{eq13}{{b 1_{1}}\ {|_{x}}}+{{b 1_{2}}\ {|_{y}}}(13)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity B1

\label{eq14}0 \over 1(14)
Type: Prop
axiom
B2:L := Σ(subscript(b2,[i])*Dx.i,i)

\label{eq15}{{b 2_{1}}\ {|_{x}}}+{{b 2_{2}}\ {|_{y}}}(15)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
B:L := out[B1,B2]

\label{eq16}{{b 1_{1}}\ {|_{x \  x}}}+{{b 1_{2}}\ {|_{x \  y}}}+{{b 2_{1}}\ {|_{y \  x}}}+{{b 2_{2}}\ {|_{y \  y}}}(16)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity B

\label{eq17}0 \over 2(17)
Type: Prop
axiom
BB:L := Σ(Σ(subscript(b,[i,j])*Dx.i*Dx.j,i),j)

\label{eq18}{{b_{1, \: 1}}\ {|_{x \  x}}}+{{b_{1, \: 2}}\ {|_{x \  y}}}+{{b_{2, \: 1}}\ {|_{y \  x}}}+{{b_{2, \: 2}}\ {|_{y \  y}}}(18)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
W:L := Σ(Σ(Σ(script(w,[[k],[i,j]])*(Dx.k*dx.i*dx.j),k),i),j)

\label{eq19}\begin{array}{@{}l}
\displaystyle
{{w_{1}^{1, \: 1}}\ {|_{x}^{x \  x}}}+{{w_{2}^{1, \: 1}}\ {|_{y}^{x \  x}}}+{{w_{1}^{1, \: 2}}\ {|_{x}^{x \  y}}}+{{w_{2}^{1, \: 2}}\ {|_{y}^{x \  y}}}+ 
\
\
\displaystyle
{{w_{1}^{2, \: 1}}\ {|_{x}^{y \  x}}}+{{w_{2}^{2, \: 1}}\ {|_{y}^{y \  x}}}+{{w_{1}^{2, \: 2}}\ {|_{x}^{y \  y}}}+{{w_{2}^{2, \: 2}}\ {|_{y}^{y \  y}}}
(19)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))

Composition (evaluation)


g/f : A^n \to A^{m+p} = f:A^n \to A^m <em> g:A^n \to A^p
 
axiom
AB2 := A2 / B2; AB2::OutputForm = A2::OutputForm / B2::OutputForm

\label{eq20}\begin{array}{@{}l}
\displaystyle
{{{a 2^{1}}\ {b 2_{1}}\ {|_{x}^{x}}}+{{a 2^{1}}\ {b 2_{2}}\ {|_{y}^{x}}}+{{a 2^{2}}\ {b 2_{1}}\ {|_{x}^{y}}}+{{a 2^{2}}\ {b 2_{2}}\ {|_{y}^{y}}}}= 
\
\
\displaystyle
{{{{a 2^{1}}\ {|_{\ }^{x}}}+{{a 2^{2}}\ {|_{\ }^{y}}}}\over{{{b 2_{1}}\ {|_{x}}}+{{b 2_{2}}\ {|_{y}}}}}
(20)
Type: Equation(OutputForm?)
axiom
arity(AB2)::OutputForm = arity(A2)::OutputForm / arity(B2)::OutputForm

\label{eq21}{1 \over 1}={{1 \over 0}\over{0 \over 1}}(21)
Type: Equation(OutputForm?)
axiom
BA1 := B1 / A1; BA1::OutputForm = B1::OutputForm / A1::OutputForm

\label{eq22}{{{a 1^{2}}\ {b 1_{2}}}+{{a 1^{1}}\ {b 1_{1}}}}={{{{b 1_{1}}\ {|_{x}}}+{{b 1_{2}}\ {|_{y}}}}\over{{{a 1^{1}}\ {|_{\ }^{x}}}+{{a 1^{2}}\ {|_{\ }^{y}}}}}(22)
Type: Equation(OutputForm?)
axiom
arity(BA1)::OutputForm = arity(B1)::OutputForm / arity(A1)::OutputForm

\label{eq23}{0 \over 0}={{0 \over 1}\over{1 \over 0}}(23)
Type: Equation(OutputForm?)
axiom
AB1 := A1 / B1; AB1::OutputForm = A1::OutputForm / B1::OutputForm

\label{eq24}\begin{array}{@{}l}
\displaystyle
{{{a 1^{1}}\ {b 1_{1}}\ {|_{x}^{x}}}+{{a 1^{1}}\ {b 1_{2}}\ {|_{y}^{x}}}+{{a 1^{2}}\ {b 1_{1}}\ {|_{x}^{y}}}+{{a 1^{2}}\ {b 1_{2}}\ {|_{y}^{y}}}}= 
\
\
\displaystyle
{{{{a 1^{1}}\ {|_{\ }^{x}}}+{{a 1^{2}}\ {|_{\ }^{y}}}}\over{{{b 1_{1}}\ {|_{x}}}+{{b 1_{2}}\ {|_{y}}}}}
(24)
Type: Equation(OutputForm?)
axiom
arity(AB1)::OutputForm = arity(A1)::OutputForm / arity(B1)::OutputForm

\label{eq25}{1 \over 1}={{1 \over 0}\over{0 \over 1}}(25)
Type: Equation(OutputForm?)

Partial Evaluation

axiom
BBA1 := B/A1
0 - 2 arity warning: ------ 1 1 1 - (-) 0 1

\label{eq26}{{\left({{a 1^{2}}\ {b 2_{1}}}+{{a 1^{1}}\ {b 1_{1}}}\right)}\ {|_{x}}}+{{\left({{a 1^{2}}\ {b 2_{2}}}+{{a 1^{1}}\ {b 1_{2}}}\right)}\ {|_{y}}}(26)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
BBA2 := B/B1
0 - 2 arity warning: ------ 0 1 2 - (-) 1 1

\label{eq27}\begin{array}{@{}l}
\displaystyle
{{{b 1_{1}}^2}\ {|_{x \  x \  x}}}+{{b 1_{1}}\ {b 1_{2}}\ {|_{x \  x \  y}}}+{{b 1_{1}}\ {b 2_{1}}\ {|_{x \  y \  x}}}+ 
\
\
\displaystyle
{{b 1_{1}}\ {b 2_{2}}\ {|_{x \  y \  y}}}+{{b 1_{1}}\ {b 1_{2}}\ {|_{y \  x \  x}}}+{{{b 1_{2}}^2}\ {|_{y \  x \  y}}}+ 
\
\
\displaystyle
{{b 1_{2}}\ {b 2_{1}}\ {|_{y \  y \  x}}}+{{b 1_{2}}\ {b 2_{2}}\ {|_{y \  y \  y}}}
(27)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
BBA3 := A1/A
1 2 1 (-) - 1 0 arity warning: ------ 2 - 0

\label{eq28}\begin{array}{@{}l}
\displaystyle
{{{a 1^{1}}^2}\ {|_{\ }^{x \  x \  x}}}+{{a 1^{1}}\ {a 1^{2}}\ {|_{\ }^{x \  x \  y}}}+{{a 1^{1}}\ {a 1^{2}}\ {|_{\ }^{x \  y \  x}}}+ 
\
\
\displaystyle
{{{a 1^{2}}^2}\ {|_{\ }^{x \  y \  y}}}+{{a 1^{1}}\ {a 2^{1}}\ {|_{\ }^{y \  x \  x}}}+{{a 1^{2}}\ {a 2^{1}}\ {|_{\ }^{y \  x \  y}}}+ 
\
\
\displaystyle
{{a 1^{1}}\ {a 2^{2}}\ {|_{\ }^{y \  y \  x}}}+{{a 1^{2}}\ {a 2^{2}}\ {|_{\ }^{y \  y \  y}}}
(28)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
BBA4 := B1/A
1 1 0 (-) - 1 1 arity warning: ------ 2 - 0

\label{eq29}{{\left({{a 1^{2}}\ {b 1_{2}}}+{{a 1^{1}}\ {b 1_{1}}}\right)}\ {|_{\ }^{x}}}+{{\left({{a 2^{2}}\ {b 1_{2}}}+{{a 2^{1}}\ {b 1_{1}}}\right)}\ {|_{\ }^{y}}}(29)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))

Powers

axiom
AB3:=(AB1*AB1)*AB1;
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity(AB3)

\label{eq30}3 \over 3(30)
Type: Prop
axiom
test(AB3=AB1*(AB1*AB1))

\label{eq31} \mbox{\rm true} (31)
Type: Boolean
axiom
test(AB3=AB1^3)

\label{eq32} \mbox{\rm true} (32)
Type: Boolean

Sums


f+g : A^n \to A^m = f:A^n \to A^m + g:A^n \to A^m
 
axiom
A12s := A1 + A2; A12s::OutputForm = A1::OutputForm + A2::OutputForm

\label{eq33}\begin{array}{@{}l}
\displaystyle
{{{\left({a 2^{1}}+{a 1^{1}}\right)}\ {|_{\ }^{x}}}+{{\left({a 2^{2}}+{a 1^{2}}\right)}\ {|_{\ }^{y}}}}= 
\
\
\displaystyle
{{{a 1^{1}}\ {|_{\ }^{x}}}+{{a 1^{2}}\ {|_{\ }^{y}}}+{{a 2^{1}}\ {|_{\ }^{x}}}+{{a 2^{2}}\ {|_{\ }^{y}}}}
(33)
Type: Equation(OutputForm?)
axiom
arity(A12s)::OutputForm = arity(A1)::OutputForm + arity(A2)::OutputForm

\label{eq34}{1 \over 0}={{1 \over 0}+{1 \over 0}}(34)
Type: Equation(OutputForm?)
axiom
B12s := B1 + B2; B12s::OutputForm = B1::OutputForm + B2::OutputForm

\label{eq35}\begin{array}{@{}l}
\displaystyle
{{{\left({b 2_{1}}+{b 1_{1}}\right)}\ {|_{x}}}+{{\left({b 2_{2}}+{b 1_{2}}\right)}\ {|_{y}}}}= 
\
\
\displaystyle
{{{b 1_{1}}\ {|_{x}}}+{{b 1_{2}}\ {|_{y}}}+{{b 2_{1}}\ {|_{x}}}+{{b 2_{2}}\ {|_{y}}}}
(35)
Type: Equation(OutputForm?)
axiom
arity(B12s)::OutputForm = arity(B1)::OutputForm + arity(B2)::OutputForm

\label{eq36}{0 \over 1}={{0 \over 1}+{0 \over 1}}(36)
Type: Equation(OutputForm?)
axiom
-B12s

\label{eq37}{{\left(-{b 2_{1}}-{b 1_{1}}\right)}\ {|_{x}}}+{{\left(-{b 2_{2}}-{b 1_{2}}\right)}\ {|_{y}}}(37)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))

Multiplication

axiom
A3s:=(A1+A1)+A1

\label{eq38}{3 \ {a 1^{1}}\ {|_{\ }^{x}}}+{3 \ {a 1^{2}}\ {|_{\ }^{y}}}(38)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity(A3s)

\label{eq39}1 \over 0(39)
Type: Prop
axiom
test(A3s=A1+(A1+A1))

\label{eq40} \mbox{\rm true} (40)
Type: Boolean
axiom
test(A3s=A1*3)

\label{eq41} \mbox{\rm true} (41)
Type: Boolean

axiom
B3s:=(B1+B1)+B1

\label{eq42}{3 \ {b 1_{1}}\ {|_{x}}}+{3 \ {b 1_{2}}\ {|_{y}}}(42)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity(B3s)

\label{eq43}0 \over 1(43)
Type: Prop
axiom
test(B3s=B1+(B1+B1))

\label{eq44} \mbox{\rm true} (44)
Type: Boolean
axiom
test(B3s=B1*3)

\label{eq45} \mbox{\rm true} (45)
Type: Boolean

Product

axiom
AB11:=A1*B1

\label{eq46}{{a 1^{1}}\ {b 1_{1}}\ {|_{x}^{x}}}+{{a 1^{1}}\ {b 1_{2}}\ {|_{y}^{x}}}+{{a 1^{2}}\ {b 1_{1}}\ {|_{x}^{y}}}+{{a 1^{2}}\ {b 1_{2}}\ {|_{y}^{y}}}(46)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity(AB11)

\label{eq47}1 \over 1(47)
Type: Prop
axiom
BA11:= B1*A1

\label{eq48}{{a 1^{1}}\ {b 1_{1}}\ {|_{x}^{x}}}+{{a 1^{1}}\ {b 1_{2}}\ {|_{y}^{x}}}+{{a 1^{2}}\ {b 1_{1}}\ {|_{x}^{y}}}+{{a 1^{2}}\ {b 1_{2}}\ {|_{y}^{y}}}(48)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity(BA11)

\label{eq49}1 \over 1(49)
Type: Prop
axiom
AB := A*B

\label{eq50}\begin{array}{@{}l}
\displaystyle
{{a 1^{1}}\ {b 1_{1}}\ {|_{x \  x}^{x \  x}}}+{{a 1^{1}}\ {b 1_{2}}\ {|_{x \  y}^{x \  x}}}+{{a 1^{1}}\ {b 2_{1}}\ {|_{y \  x}^{x \  x}}}+ 
\
\
\displaystyle
{{a 1^{1}}\ {b 2_{2}}\ {|_{y \  y}^{x \  x}}}+{{a 1^{2}}\ {b 1_{1}}\ {|_{x \  x}^{x \  y}}}+{{a 1^{2}}\ {b 1_{2}}\ {|_{x \  y}^{x \  y}}}+ 
\
\
\displaystyle
{{a 1^{2}}\ {b 2_{1}}\ {|_{y \  x}^{x \  y}}}+{{a 1^{2}}\ {b 2_{2}}\ {|_{y \  y}^{x \  y}}}+{{a 2^{1}}\ {b 1_{1}}\ {|_{x \  x}^{y \  x}}}+ 
\
\
\displaystyle
{{a 2^{1}}\ {b 1_{2}}\ {|_{x \  y}^{y \  x}}}+{{a 2^{1}}\ {b 2_{1}}\ {|_{y \  x}^{y \  x}}}+{{a 2^{1}}\ {b 2_{2}}\ {|_{y \  y}^{y \  x}}}+ 
\
\
\displaystyle
{{a 2^{2}}\ {b 1_{1}}\ {|_{x \  x}^{y \  y}}}+{{a 2^{2}}\ {b 1_{2}}\ {|_{x \  y}^{y \  y}}}+{{a 2^{2}}\ {b 2_{1}}\ {|_{y \  x}^{y \  y}}}+ 
\
\
\displaystyle
{{a 2^{2}}\ {b 2_{2}}\ {|_{y \  y}^{y \  y}}}
(50)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity(AB)

\label{eq51}2 \over 2(51)
Type: Prop
axiom
BA := B*A

\label{eq52}\begin{array}{@{}l}
\displaystyle
{{a 1^{1}}\ {b 1_{1}}\ {|_{x \  x}^{x \  x}}}+{{a 1^{1}}\ {b 1_{2}}\ {|_{x \  y}^{x \  x}}}+{{a 1^{1}}\ {b 2_{1}}\ {|_{y \  x}^{x \  x}}}+ 
\
\
\displaystyle
{{a 1^{1}}\ {b 2_{2}}\ {|_{y \  y}^{x \  x}}}+{{a 1^{2}}\ {b 1_{1}}\ {|_{x \  x}^{x \  y}}}+{{a 1^{2}}\ {b 1_{2}}\ {|_{x \  y}^{x \  y}}}+ 
\
\
\displaystyle
{{a 1^{2}}\ {b 2_{1}}\ {|_{y \  x}^{x \  y}}}+{{a 1^{2}}\ {b 2_{2}}\ {|_{y \  y}^{x \  y}}}+{{a 2^{1}}\ {b 1_{1}}\ {|_{x \  x}^{y \  x}}}+ 
\
\
\displaystyle
{{a 2^{1}}\ {b 1_{2}}\ {|_{x \  y}^{y \  x}}}+{{a 2^{1}}\ {b 2_{1}}\ {|_{y \  x}^{y \  x}}}+{{a 2^{1}}\ {b 2_{2}}\ {|_{y \  y}^{y \  x}}}+ 
\
\
\displaystyle
{{a 2^{2}}\ {b 1_{1}}\ {|_{x \  x}^{y \  y}}}+{{a 2^{2}}\ {b 1_{2}}\ {|_{x \  y}^{y \  y}}}+{{a 2^{2}}\ {b 2_{1}}\ {|_{y \  x}^{y \  y}}}+ 
\
\
\displaystyle
{{a 2^{2}}\ {b 2_{2}}\ {|_{y \  y}^{y \  y}}}
(52)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity(BA)

\label{eq53}2 \over 2(53)
Type: Prop
axiom
WB1:=W*B1

\label{eq54}\begin{array}{@{}l}
\displaystyle
{{w_{1}^{1, \: 1}}\ {b 1_{1}}\ {|_{x \  x}^{x \  x}}}+{{w_{1}^{1, \: 1}}\ {b 1_{2}}\ {|_{x \  y}^{x \  x}}}+ 
\
\
\displaystyle
{{w_{2}^{1, \: 1}}\ {b 1_{1}}\ {|_{y \  x}^{x \  x}}}+{{w_{2}^{1, \: 1}}\ {b 1_{2}}\ {|_{y \  y}^{x \  x}}}+ 
\
\
\displaystyle
{{w_{1}^{1, \: 2}}\ {b 1_{1}}\ {|_{x \  x}^{x \  y}}}+{{w_{1}^{1, \: 2}}\ {b 1_{2}}\ {|_{x \  y}^{x \  y}}}+ 
\
\
\displaystyle
{{w_{2}^{1, \: 2}}\ {b 1_{1}}\ {|_{y \  x}^{x \  y}}}+{{w_{2}^{1, \: 2}}\ {b 1_{2}}\ {|_{y \  y}^{x \  y}}}+ 
\
\
\displaystyle
{{w_{1}^{2, \: 1}}\ {b 1_{1}}\ {|_{x \  x}^{y \  x}}}+{{w_{1}^{2, \: 1}}\ {b 1_{2}}\ {|_{x \  y}^{y \  x}}}+ 
\
\
\displaystyle
{{w_{2}^{2, \: 1}}\ {b 1_{1}}\ {|_{y \  x}^{y \  x}}}+{{w_{2}^{2, \: 1}}\ {b 1_{2}}\ {|_{y \  y}^{y \  x}}}+ 
\
\
\displaystyle
{{w_{1}^{2, \: 2}}\ {b 1_{1}}\ {|_{x \  x}^{y \  y}}}+{{w_{1}^{2, \: 2}}\ {b 1_{2}}\ {|_{x \  y}^{y \  y}}}+ 
\
\
\displaystyle
{{w_{2}^{2, \: 2}}\ {b 1_{1}}\ {|_{y \  x}^{y \  y}}}+{{w_{2}^{2, \: 2}}\ {b 1_{2}}\ {|_{y \  y}^{y \  y}}}
(54)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity(WB1)

\label{eq55}2 \over 2(55)
Type: Prop
axiom
X2:L:=inp[inp([script(x,[[],[i,j]]) for j in 1..2])$L for i in 1..dim]

\label{eq56}{{x^{1, \: 1}}\ {|_{\ }^{x \  x}}}+{{x^{1, \: 2}}\ {|_{\ }^{x \  y}}}+{{x^{2, \: 1}}\ {|_{\ }^{y \  x}}}+{{x^{2, \: 2}}\ {|_{\ }^{y \  y}}}(56)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
XB21:=X2*B1

\label{eq57}\begin{array}{@{}l}
\displaystyle
{{x^{1, \: 1}}\ {b 1_{1}}\ {|_{x}^{x \  x}}}+{{x^{1, \: 1}}\ {b 1_{2}}\ {|_{y}^{x \  x}}}+{{x^{1, \: 2}}\ {b 1_{1}}\ {|_{x}^{x \  y}}}+ 
\
\
\displaystyle
{{x^{1, \: 2}}\ {b 1_{2}}\ {|_{y}^{x \  y}}}+{{x^{2, \: 1}}\ {b 1_{1}}\ {|_{x}^{y \  x}}}+{{x^{2, \: 1}}\ {b 1_{2}}\ {|_{y}^{y \  x}}}+ 
\
\
\displaystyle
{{x^{2, \: 2}}\ {b 1_{1}}\ {|_{x}^{y \  y}}}+{{x^{2, \: 2}}\ {b 1_{2}}\ {|_{y}^{y \  y}}}
(57)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity(XB21)

\label{eq58}2 \over 1(58)
Type: Prop
axiom
Y2:L:=out[out([script(y,[[i,j]]) for j in 1..2])$L for i in 1..dim]

\label{eq59}{{y_{1, \: 1}}\ {|_{x \  x}}}+{{y_{1, \: 2}}\ {|_{x \  y}}}+{{y_{2, \: 1}}\ {|_{y \  x}}}+{{y_{2, \: 2}}\ {|_{y \  y}}}(59)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
XY22:=X2*Y2

\label{eq60}\begin{array}{@{}l}
\displaystyle
{{x^{1, \: 1}}\ {y_{1, \: 1}}\ {|_{x \  x}^{x \  x}}}+{{x^{1, \: 1}}\ {y_{1, \: 2}}\ {|_{x \  y}^{x \  x}}}+ 
\
\
\displaystyle
{{x^{1, \: 1}}\ {y_{2, \: 1}}\ {|_{y \  x}^{x \  x}}}+{{x^{1, \: 1}}\ {y_{2, \: 2}}\ {|_{y \  y}^{x \  x}}}+ 
\
\
\displaystyle
{{x^{1, \: 2}}\ {y_{1, \: 1}}\ {|_{x \  x}^{x \  y}}}+{{x^{1, \: 2}}\ {y_{1, \: 2}}\ {|_{x \  y}^{x \  y}}}+ 
\
\
\displaystyle
{{x^{1, \: 2}}\ {y_{2, \: 1}}\ {|_{y \  x}^{x \  y}}}+{{x^{1, \: 2}}\ {y_{2, \: 2}}\ {|_{y \  y}^{x \  y}}}+{{x^{2, \: 1}}\ {y_{1, \: 1}}\ {|_{x \  x}^{y \  x}}}+ 
\
\
\displaystyle
{{x^{2, \: 1}}\ {y_{1, \: 2}}\ {|_{x \  y}^{y \  x}}}+{{x^{2, \: 1}}\ {y_{2, \: 1}}\ {|_{y \  x}^{y \  x}}}+{{x^{2, \: 1}}\ {y_{2, \: 2}}\ {|_{y \  y}^{y \  x}}}+ 
\
\
\displaystyle
{{x^{2, \: 2}}\ {y_{1, \: 1}}\ {|_{x \  x}^{y \  y}}}+{{x^{2, \: 2}}\ {y_{1, \: 2}}\ {|_{x \  y}^{y \  y}}}+{{x^{2, \: 2}}\ {y_{2, \: 1}}\ {|_{y \  x}^{y \  y}}}+ 
\
\
\displaystyle
{{x^{2, \: 2}}\ {y_{2, \: 2}}\ {|_{y \  y}^{y \  y}}}
(60)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity(XY22)

\label{eq61}2 \over 2(61)
Type: Prop
axiom
YX22:=Y2*X2

\label{eq62}\begin{array}{@{}l}
\displaystyle
{{x^{1, \: 1}}\ {y_{1, \: 1}}\ {|_{x \  x}^{x \  x}}}+{{x^{1, \: 1}}\ {y_{1, \: 2}}\ {|_{x \  y}^{x \  x}}}+ 
\
\
\displaystyle
{{x^{1, \: 1}}\ {y_{2, \: 1}}\ {|_{y \  x}^{x \  x}}}+{{x^{1, \: 1}}\ {y_{2, \: 2}}\ {|_{y \  y}^{x \  x}}}+ 
\
\
\displaystyle
{{x^{1, \: 2}}\ {y_{1, \: 1}}\ {|_{x \  x}^{x \  y}}}+{{x^{1, \: 2}}\ {y_{1, \: 2}}\ {|_{x \  y}^{x \  y}}}+ 
\
\
\displaystyle
{{x^{1, \: 2}}\ {y_{2, \: 1}}\ {|_{y \  x}^{x \  y}}}+{{x^{1, \: 2}}\ {y_{2, \: 2}}\ {|_{y \  y}^{x \  y}}}+{{x^{2, \: 1}}\ {y_{1, \: 1}}\ {|_{x \  x}^{y \  x}}}+ 
\
\
\displaystyle
{{x^{2, \: 1}}\ {y_{1, \: 2}}\ {|_{x \  y}^{y \  x}}}+{{x^{2, \: 1}}\ {y_{2, \: 1}}\ {|_{y \  x}^{y \  x}}}+{{x^{2, \: 1}}\ {y_{2, \: 2}}\ {|_{y \  y}^{y \  x}}}+ 
\
\
\displaystyle
{{x^{2, \: 2}}\ {y_{1, \: 1}}\ {|_{x \  x}^{y \  y}}}+{{x^{2, \: 2}}\ {y_{1, \: 2}}\ {|_{x \  y}^{y \  y}}}+{{x^{2, \: 2}}\ {y_{2, \: 1}}\ {|_{y \  x}^{y \  y}}}+ 
\
\
\displaystyle
{{x^{2, \: 2}}\ {y_{2, \: 2}}\ {|_{y \  y}^{y \  y}}}
(62)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity(XY22)

\label{eq63}2 \over 2(63)
Type: Prop
axiom
test((A*A)*A=A*(A*A))

\label{eq64} \mbox{\rm true} (64)
Type: Boolean
axiom
test((B*B)*B=B*(B*B))

\label{eq65} \mbox{\rm true} (65)
Type: Boolean
axiom
test((A*B)*A=A*(B*A))

\label{eq66} \mbox{\rm true} (66)
Type: Boolean

Permutations and Identities

axiom
H:L:=[1,2]

\label{eq67}{|_{x \  x}^{x \  x}}+{|_{x \  y}^{x \  y}}+{|_{y \  x}^{y \  x}}+{|_{y \  y}^{y \  y}}(67)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
X:L:=[2,1]

\label{eq68}{|_{x \  x}^{x \  x}}+{|_{y \  x}^{x \  y}}+{|_{x \  y}^{y \  x}}+{|_{y \  y}^{y \  y}}(68)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
test(X/X=H)

\label{eq69} \mbox{\rm true} (69)
Type: Boolean

Manipulations

axiom
tensor AB

\label{eq70}\left[ 
\begin{array}{cc}
{\left[ 
\begin{array}{cc}
{{a 1^{1}}\ {b 1_{1}}}&{{a 1^{1}}\ {b 1_{2}}}
\
{{a 1^{1}}\ {b 2_{1}}}&{{a 1^{1}}\ {b 2_{2}}}
(70)
Type: CartesianTensor?(1,2,Expression(Integer))
axiom
ravel AB

\label{eq71}\begin{array}{@{}l}
\displaystyle
\left[{{a 1^{1}}\ {b 1_{1}}}, \:{{a 1^{1}}\ {b 1_{2}}}, \:{{a 1^{1}}\ {b 2_{1}}}, \:{{a 1^{1}}\ {b 2_{2}}}, \:{{a 1^{2}}\ {b 1_{1}}}, \:{{a 1^{2}}\ {b 1_{2}}}, \:{{a 1^{2}}\ {b 2_{1}}}, \right.
\
\
\displaystyle
\left.\:{{a 1^{2}}\ {b 2_{2}}}, \:{{a 2^{1}}\ {b 1_{1}}}, \:{{a 2^{1}}\ {b 1_{2}}}, \:{{a 2^{1}}\ {b 2_{1}}}, \:{{a 2^{1}}\ {b 2_{2}}}, \:{{a 2^{2}}\ {b 1_{1}}}, \: \right.
\
\
\displaystyle
\left.{{a 2^{2}}\ {b 1_{2}}}, \:{{a 2^{2}}\ {b 2_{1}}}, \:{{a 2^{2}}\ {b 2_{2}}}\right] 
(71)
Type: List(Expression(Integer))
axiom
test(unravel(arity AB,ravel AB)$L=AB)

\label{eq72} \mbox{\rm true} (72)
Type: Boolean
axiom
map(x+->x+1,AB)$L

\label{eq73}\begin{array}{@{}l}
\displaystyle
{{\left({{a 1^{1}}\ {b 1_{1}}}+ 1 \right)}\ {|_{x \  x}^{x \  x}}}+{{\left({{a 1^{1}}\ {b 1_{2}}}+ 1 \right)}\ {|_{x \  y}^{x \  x}}}+ 
\
\
\displaystyle
{{\left({{a 1^{1}}\ {b 2_{1}}}+ 1 \right)}\ {|_{y \  x}^{x \  x}}}+{{\left({{a 1^{1}}\ {b 2_{2}}}+ 1 \right)}\ {|_{y \  y}^{x \  x}}}+ 
\
\
\displaystyle
{{\left({{a 1^{2}}\ {b 1_{1}}}+ 1 \right)}\ {|_{x \  x}^{x \  y}}}+{{\left({{a 1^{2}}\ {b 1_{2}}}+ 1 \right)}\ {|_{x \  y}^{x \  y}}}+ 
\
\
\displaystyle
{{\left({{a 1^{2}}\ {b 2_{1}}}+ 1 \right)}\ {|_{y \  x}^{x \  y}}}+{{\left({{a 1^{2}}\ {b 2_{2}}}+ 1 \right)}\ {|_{y \  y}^{x \  y}}}+ 
\
\
\displaystyle
{{\left({{a 2^{1}}\ {b 1_{1}}}+ 1 \right)}\ {|_{x \  x}^{y \  x}}}+{{\left({{a 2^{1}}\ {b 1_{2}}}+ 1 \right)}\ {|_{x \  y}^{y \  x}}}+ 
\
\
\displaystyle
{{\left({{a 2^{1}}\ {b 2_{1}}}+ 1 \right)}\ {|_{y \  x}^{y \  x}}}+{{\left({{a 2^{1}}\ {b 2_{2}}}+ 1 \right)}\ {|_{y \  y}^{y \  x}}}+ 
\
\
\displaystyle
{{\left({{a 2^{2}}\ {b 1_{1}}}+ 1 \right)}\ {|_{x \  x}^{y \  y}}}+{{\left({{a 2^{2}}\ {b 1_{2}}}+ 1 \right)}\ {|_{x \  y}^{y \  y}}}+ 
\
\
\displaystyle
{{\left({{a 2^{2}}\ {b 2_{1}}}+ 1 \right)}\ {|_{y \  x}^{y \  y}}}+{{\left({{a 2^{2}}\ {b 2_{2}}}+ 1 \right)}\ {|_{y \  y}^{y \  y}}}
(73)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
[superscript(a1,[i])=i for i in 1..dim]::List EQ Q

\label{eq74}\left[{{a 1^{1}}= 1}, \:{{a 1^{2}}= 2}\right](74)
Type: List(Equation(Expression(Integer)))
axiom
eval(A,[superscript(a1,[i])=i for i in 1..dim]::List EQ Q)

\label{eq75}{|_{\ }^{x \  x}}+{2 \ {|_{\ }^{x \  y}}}+{{a 2^{1}}\ {|_{\ }^{y \  x}}}+{{a 2^{2}}\ {|_{\ }^{y \  y}}}(75)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))

Examples

Another kind of diagram:

Y = Y U U

Algebra

axiom
Y:=out[inp[inp([script(y,[[k],[i,j]]) for j in 1..2])$L for i in 1..2] for k in 1..2]

\label{eq76}\begin{array}{@{}l}
\displaystyle
{{y_{1}^{1, \: 1}}\ {|_{x}^{x \  x}}}+{{y_{1}^{1, \: 2}}\ {|_{y}^{x \  x}}}+{{y_{1}^{2, \: 1}}\ {|_{x}^{x \  y}}}+{{y_{1}^{2, \: 2}}\ {|_{y}^{x \  y}}}+ 
\
\
\displaystyle
{{y_{2}^{1, \: 1}}\ {|_{x}^{y \  x}}}+{{y_{2}^{1, \: 2}}\ {|_{y}^{y \  x}}}+{{y_{2}^{2, \: 1}}\ {|_{x}^{y \  y}}}+{{y_{2}^{2, \: 2}}\ {|_{y}^{y \  y}}}
(76)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
Y:=Σ(Σ(Σ(script(y,[[k],[i,j]])*Dx.k*dx.i*dx.j,j),i),k)

\label{eq77}\begin{array}{@{}l}
\displaystyle
{{y_{1}^{1, \: 1}}\ {|_{x}^{x \  x}}}+{{y_{2}^{1, \: 1}}\ {|_{y}^{x \  x}}}+{{y_{1}^{1, \: 2}}\ {|_{x}^{x \  y}}}+{{y_{2}^{1, \: 2}}\ {|_{y}^{x \  y}}}+ 
\
\
\displaystyle
{{y_{1}^{2, \: 1}}\ {|_{x}^{y \  x}}}+{{y_{2}^{2, \: 1}}\ {|_{y}^{y \  x}}}+{{y_{1}^{2, \: 2}}\ {|_{x}^{y \  y}}}+{{y_{2}^{2, \: 2}}\ {|_{y}^{y \  y}}}
(77)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity Y

\label{eq78}2 \over 1(78)
Type: Prop
axiom
tensor Y

\label{eq79}\begin{array}{@{}l}
\displaystyle
\left[{\left[ 
\begin{array}{cc}
{y_{1}^{1, \: 1}}&{y_{2}^{1, \: 1}}
\
{y_{1}^{1, \: 2}}&{y_{2}^{1, \: 2}}
(79)
Type: CartesianTensor?(1,2,Expression(Integer))

Commutator Algebra

axiom
Y - [2,1]
  /   Y

\label{eq80}\begin{array}{@{}l}
\displaystyle
{{\left(-{y_{1}^{2, \: 1}}+{y_{1}^{1, \: 2}}\right)}\ {|_{x}^{x \  y}}}+{{\left(-{y_{2}^{2, \: 1}}+{y_{2}^{1, \: 2}}\right)}\ {|_{y}^{x \  y}}}+ 
\
\
\displaystyle
{{\left({y_{1}^{2, \: 1}}-{y_{1}^{1, \: 2}}\right)}\ {|_{x}^{y \  x}}}+{{\left({y_{2}^{2, \: 1}}-{y_{2}^{1, \: 2}}\right)}\ {|_{y}^{y \  x}}}
(80)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))

Pairing

axiom
U:=inp[inp([script(u,[[],[i,j]]) for j in 1..2])$L for i in 1..2]

\label{eq81}{{u^{1, \: 1}}\ {|_{\ }^{x \  x}}}+{{u^{1, \: 2}}\ {|_{\ }^{x \  y}}}+{{u^{2, \: 1}}\ {|_{\ }^{y \  x}}}+{{u^{2, \: 2}}\ {|_{\ }^{y \  y}}}(81)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity U

\label{eq82}2 \over 0(82)
Type: Prop

3-point function

axiom
I:L:=[1]

\label{eq83}{|_{x}^{x}}+{|_{y}^{y}}(83)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
YU := Y I
  /    U

\label{eq84}\begin{array}{@{}l}
\displaystyle
{{\left({{u^{2, \: 1}}\ {y_{2}^{1, \: 1}}}+{{u^{1, \: 1}}\ {y_{1}^{1, \: 1}}}\right)}\ {|_{\ }^{x \  x \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{1, \: 1}}}+{{u^{1, \: 2}}\ {y_{1}^{1, \: 1}}}\right)}\ {|_{\ }^{x \  x \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 1}}\ {y_{2}^{1, \: 2}}}+{{u^{1, \: 1}}\ {y_{1}^{1, \: 2}}}\right)}\ {|_{\ }^{x \  y \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{1, \: 2}}}+{{u^{1, \: 2}}\ {y_{1}^{1, \: 2}}}\right)}\ {|_{\ }^{x \  y \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 1}}\ {y_{2}^{2, \: 1}}}+{{u^{1, \: 1}}\ {y_{1}^{2, \: 1}}}\right)}\ {|_{\ }^{y \  x \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{2, \: 1}}}+{{u^{1, \: 2}}\ {y_{1}^{2, \: 1}}}\right)}\ {|_{\ }^{y \  x \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 1}}\ {y_{2}^{2, \: 2}}}+{{u^{1, \: 1}}\ {y_{1}^{2, \: 2}}}\right)}\ {|_{\ }^{y \  y \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{2, \: 2}}}+{{u^{1, \: 2}}\ {y_{1}^{2, \: 2}}}\right)}\ {|_{\ }^{y \  y \  y}}}
(84)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
YU := Y.I
  /    U

\label{eq85}\begin{array}{@{}l}
\displaystyle
{{\left({{u^{2, \: 1}}\ {y_{2}^{1, \: 1}}}+{{u^{1, \: 1}}\ {y_{1}^{1, \: 1}}}\right)}\ {|_{\ }^{x \  x \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{1, \: 1}}}+{{u^{1, \: 2}}\ {y_{1}^{1, \: 1}}}\right)}\ {|_{\ }^{x \  x \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 1}}\ {y_{2}^{1, \: 2}}}+{{u^{1, \: 1}}\ {y_{1}^{1, \: 2}}}\right)}\ {|_{\ }^{x \  y \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{1, \: 2}}}+{{u^{1, \: 2}}\ {y_{1}^{1, \: 2}}}\right)}\ {|_{\ }^{x \  y \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 1}}\ {y_{2}^{2, \: 1}}}+{{u^{1, \: 1}}\ {y_{1}^{2, \: 1}}}\right)}\ {|_{\ }^{y \  x \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{2, \: 1}}}+{{u^{1, \: 2}}\ {y_{1}^{2, \: 1}}}\right)}\ {|_{\ }^{y \  x \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 1}}\ {y_{2}^{2, \: 2}}}+{{u^{1, \: 1}}\ {y_{1}^{2, \: 2}}}\right)}\ {|_{\ }^{y \  y \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{2, \: 2}}}+{{u^{1, \: 2}}\ {y_{1}^{2, \: 2}}}\right)}\ {|_{\ }^{y \  y \  y}}}
(85)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity YU

\label{eq86}3 \over 0(86)
Type: Prop

Oddities (should work on the right)

axiom
YU := Y [1]
  /    U
There are no exposed library operations named Y but there are 2 unexposed operations with that name. Use HyperDoc Browse or issue )display op Y to learn more about the available operations.
Cannot find a definition or applicable library operation named Y with argument type(s) List(PositiveInteger)
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need. YU := Y.[1] / U
There are no exposed library operations named Y but there are 2 unexposed operations with that name. Use HyperDoc Browse or issue )display op Y to learn more about the available operations.
Cannot find a definition or applicable library operation named Y with argument type(s) List(PositiveInteger)
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need.

Ok on the left

axiom
UY := [1].Y
  /      U

\label{eq87}\begin{array}{@{}l}
\displaystyle
{{\left({{u^{1, \: 2}}\ {y_{2}^{1, \: 1}}}+{{u^{1, \: 1}}\ {y_{1}^{1, \: 1}}}\right)}\ {|_{\ }^{x \  x \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{1, \: 2}}\ {y_{2}^{1, \: 2}}}+{{u^{1, \: 1}}\ {y_{1}^{1, \: 2}}}\right)}\ {|_{\ }^{x \  x \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{1, \: 2}}\ {y_{2}^{2, \: 1}}}+{{u^{1, \: 1}}\ {y_{1}^{2, \: 1}}}\right)}\ {|_{\ }^{x \  y \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{1, \: 2}}\ {y_{2}^{2, \: 2}}}+{{u^{1, \: 1}}\ {y_{1}^{2, \: 2}}}\right)}\ {|_{\ }^{x \  y \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{1, \: 1}}}+{{u^{2, \: 1}}\ {y_{1}^{1, \: 1}}}\right)}\ {|_{\ }^{y \  x \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{1, \: 2}}}+{{u^{2, \: 1}}\ {y_{1}^{1, \: 2}}}\right)}\ {|_{\ }^{y \  x \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{2, \: 1}}}+{{u^{2, \: 1}}\ {y_{1}^{2, \: 1}}}\right)}\ {|_{\ }^{y \  y \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{2, \: 2}}}+{{u^{2, \: 1}}\ {y_{1}^{2, \: 2}}}\right)}\ {|_{\ }^{y \  y \  y}}}
(87)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
UY := [1] Y
  /      U

\label{eq88}\begin{array}{@{}l}
\displaystyle
{{\left({{u^{1, \: 2}}\ {y_{2}^{1, \: 1}}}+{{u^{1, \: 1}}\ {y_{1}^{1, \: 1}}}\right)}\ {|_{\ }^{x \  x \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{1, \: 2}}\ {y_{2}^{1, \: 2}}}+{{u^{1, \: 1}}\ {y_{1}^{1, \: 2}}}\right)}\ {|_{\ }^{x \  x \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{1, \: 2}}\ {y_{2}^{2, \: 1}}}+{{u^{1, \: 1}}\ {y_{1}^{2, \: 1}}}\right)}\ {|_{\ }^{x \  y \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{1, \: 2}}\ {y_{2}^{2, \: 2}}}+{{u^{1, \: 1}}\ {y_{1}^{2, \: 2}}}\right)}\ {|_{\ }^{x \  y \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{1, \: 1}}}+{{u^{2, \: 1}}\ {y_{1}^{1, \: 1}}}\right)}\ {|_{\ }^{y \  x \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{1, \: 2}}}+{{u^{2, \: 1}}\ {y_{1}^{1, \: 2}}}\right)}\ {|_{\ }^{y \  x \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{2, \: 1}}}+{{u^{2, \: 1}}\ {y_{1}^{2, \: 1}}}\right)}\ {|_{\ }^{y \  y \  x}}}+ 
\
\
\displaystyle
{{\left({{u^{2, \: 2}}\ {y_{2}^{2, \: 2}}}+{{u^{2, \: 1}}\ {y_{1}^{2, \: 2}}}\right)}\ {|_{\ }^{y \  y \  y}}}
(88)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity UY

\label{eq89}3 \over 0(89)
Type: Prop

Co-algebra

axiom
λ:=inp[out[out([script(y,[[i],[j,k]]) for k in 1..2])$L for j in 1..2] for i in 1..2]

\label{eq90}\begin{array}{@{}l}
\displaystyle
{{y_{1}^{1, \: 1}}\ {|_{x \  x}^{x}}}+{{y_{1}^{1, \: 2}}\ {|_{x \  y}^{x}}}+{{y_{1}^{2, \: 1}}\ {|_{y \  x}^{x}}}+{{y_{1}^{2, \: 2}}\ {|_{y \  y}^{x}}}+ 
\
\
\displaystyle
{{y_{2}^{1, \: 1}}\ {|_{x \  x}^{y}}}+{{y_{2}^{1, \: 2}}\ {|_{x \  y}^{y}}}+{{y_{2}^{2, \: 1}}\ {|_{y \  x}^{y}}}+{{y_{2}^{2, \: 2}}\ {|_{y \  y}^{y}}}
(90)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity λ

\label{eq91}1 \over 2(91)
Type: Prop
axiom
tensor λ

\label{eq92}\begin{array}{@{}l}
\displaystyle
\left[{\left[ 
\begin{array}{cc}
{y_{1}^{1, \: 1}}&{y_{1}^{1, \: 2}}
\
{y_{1}^{2, \: 1}}&{y_{1}^{2, \: 2}}
(92)
Type: CartesianTensor?(1,2,Expression(Integer))

Handle

λ
Y

axiom
Φ := λ
  /  Y

\label{eq93}\begin{array}{@{}l}
\displaystyle
{{\left({{y_{1}^{2, \: 2}}^2}+{{y_{1}^{2, \: 1}}^2}+{{y_{1}^{1, \: 2}}^2}+{{y_{1}^{1, \: 1}}^2}\right)}\ {|_{x}^{x}}}+ 
\
\
\displaystyle
{{\left({
\begin{array}{@{}l}
\displaystyle
{{y_{1}^{2, \: 2}}\ {y_{2}^{2, \: 2}}}+{{y_{1}^{2, \: 1}}\ {y_{2}^{2, \: 1}}}+{{y_{1}^{1, \: 2}}\ {y_{2}^{1, \: 2}}}+ 
\
\
\displaystyle
{{y_{1}^{1, \: 1}}\ {y_{2}^{1, \: 1}}}
(93)
Type: LinearOperator?(2,OrderedVariableList?([x,y]),Expression(Integer))
axiom
arity Φ

\label{eq94}1 \over 1(94)
Type: Prop

Back to the top.

Comments

Please leave comments and suggestions.

Thanks

Bill Page

Linear operators as morphisms --Bill Page, Thu, 10 Mar 2011 09:42:33 -0800 reply
If linear operators really are to be morphisms (in the sense of category theory) then they must have a domain and a co-domain that are vector spaces, not just an in-degree and out-degree. E.g.:
  Rep == Record(Dom:VectorSpace, Cod:VectorSpace, t:T)

But VectorSpace? is a category which would make Dom and Cod domains. The domains that currently satisfy VectorSpace? in Axiom are rather limited and seem oddly focused on number theory (finite fields). It is a good thing however that DirectProduct? is a conditional member of this cateogry.

axiom
DirectProduct(2,FRAC INT) has VectorSpace(FRAC INT)

\label{eq95} \mbox{\rm true} (95)
Type: Boolean

Unfortunately:

axiom
DirectProduct(2,DirectProduct(2,FRAC INT)) has VectorSpace(FRAC INT)

\label{eq96} \mbox{\rm false} (96)
Type: Boolean

The problem with VectorSpace? is that the domain [Vector]? is not a member of this category instead it satisfies VectoryCategory?.

Is it possible to treat tensors from CartesianTensor? as maps from VectorSpace? to VectorSpace?? We would like for example:

  T:DirectProduct(dim,DirectProduct(dim,FRAC INT)) -> DirectProduct(dim,FRAC INT))

To be a linear operator with two inputs and one output.

A [FreeModule]? over a [Field]? is a VectorSpace? unfortunately this is not currently understood by Axiom:
axiom
FreeModule(Fraction Integer,OrderedVariableList [e1,e1]) has VectorSpace(Fraction Integer)

\label{eq97} \mbox{\rm true} (97)
Type: Boolean