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

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)

fricas
)version
Value = "FriCAS 1.3.1 compiled at Thu Feb 16 03:24:08 UTC 2017"

spad
)abbrev category MONAL Monoidal
Monoidal(R:AbelianSemiGroup):Category == Ring 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/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/2074022068168685528-25px002.spad
      using old system compiler.
   MONAL abbreviates category Monoidal 
------------------------------------------------------------------------
   initializing NRLIB MONAL for Monoidal 
   compiling into NRLIB MONAL 
;;; *** |Monoidal| REDEFINED Time: 0 SEC.
finalizing NRLIB MONAL Processing Monoidal for Browser database: --->-->Monoidal(constructor): Not documented!!!! --------(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(): Missing Description ; compiling file "/var/aw/var/LatexWiki/MONAL.NRLIB/MONAL.lsp" (written 25 APR 2017 08:39:59 PM):
; /var/aw/var/LatexWiki/MONAL.NRLIB/MONAL.fasl written ; compilation finished in 0:00:00.005 ------------------------------------------------------------------------ Monoidal is now explicitly exposed in frame initial Monoidal will be automatically loaded when needed from /var/aw/var/LatexWiki/MONAL.NRLIB/MONAL

The initial object in this category is the domain Prop (Products and Permutations). The Prop domain represents everything that is "constant" about all the domains in this category. It can be defined as an endo-functor with only the information available about the category itself.

spad
)abbrev domain PROP Prop
Prop(L:Monoidal NNI): Exports == Implementation where
  NNI ==> NonNegativeInteger
Exports ==> Monoidal NNI with coerce: L -> %
Implementation ==> add Rep ==> Record(domain:NNI, codomain:NNI) -- Rep == L rep(x:%):Rep == x pretend Rep per(x:Rep):% == x pretend %
coerce(f:%):OutputForm == dom(f)::OutputForm / cod(f)::OutputForm
coerce(f:L):% == per [dom f, cod f] -- coerce(f:L):% == per f
dom(x:%):NNI == rep(x).domain -- dom(x:%):NNI == dom rep x cod(x:%):NNI == rep(x).codomain -- cod(x:%):NNI == cod rep x 0:% == per [0,0] -- 0:% == per 0 1:% == per [0,0] -- 1:% == per 1 -- evaluation (f:% / g:%):% == per [dom f, cod g] -- (f:% / g:%):% == per (rep f / rep g) -- product apply(f:%,g:%):% == per [dom f + dom g, cod f + cod g] -- apply(f:%,g:%):% == per apply(rep f,rep g) (f:% * g:%):% == per [dom f + dom g, cod f + cod g] --(f:% * g:%):% == per (rep f * rep g) -- sum (f:% + g:%):% == per [dom f, cod f] --(f:% + g:%):% == per (rep f + rep g)
spad
   Compiling FriCAS source code from file 
      /var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/3186492205692341477-25px003.spad
      using old system compiler.
   PROP abbreviates domain Prop 
------------------------------------------------------------------------
   initializing NRLIB PROP for Prop 
   compiling into NRLIB PROP 
   processing macro definition Rep ==> Record(domain: NonNegativeInteger,codomain: NonNegativeInteger) 
   compiling local rep : $ -> Record(domain: NonNegativeInteger,codomain: NonNegativeInteger)
      PROP;rep is replaced by x 
Time: 0.01 SEC.
compiling local per : Record(domain: NonNegativeInteger,codomain: NonNegativeInteger) -> $ PROP;per is replaced by x Time: 0 SEC.
compiling exported coerce : $ -> OutputForm Time: 0 SEC.
compiling exported coerce : L -> $ Time: 0 SEC.
compiling exported dom : $ -> NonNegativeInteger Time: 0 SEC.
compiling exported cod : $ -> NonNegativeInteger Time: 0 SEC.
compiling exported Zero : () -> $ Time: 0 SEC.
compiling exported One : () -> $ Time: 0 SEC.
compiling exported / : ($,$) -> $ Time: 0 SEC.
compiling exported apply : ($,$) -> $ Time: 0 SEC.
compiling exported * : ($,$) -> $ Time: 0 SEC.
compiling exported + : ($,$) -> $ Time: 0 SEC.
(time taken in buildFunctor: 0)
;;; *** |Prop| REDEFINED
;;; *** |Prop| REDEFINED Time: 0.01 SEC.
Warnings: [1] dom: domain has no value [2] cod: codomain has no value
Cumulative Statistics for Constructor Prop Time: 0.02 seconds
finalizing NRLIB PROP Processing Prop for Browser database: --->-->Prop(constructor): Not documented!!!! --->-->Prop((coerce (% L))): Not documented!!!! --->-->Prop(): Missing Description ; compiling file "/var/aw/var/LatexWiki/PROP.NRLIB/PROP.lsp" (written 25 APR 2017 08:39:59 PM):
; /var/aw/var/LatexWiki/PROP.NRLIB/PROP.fasl written ; compilation finished in 0:00:00.027 ------------------------------------------------------------------------ Prop is now explicitly exposed in frame initial Prop will be automatically loaded when needed from /var/aw/var/LatexWiki/PROP.NRLIB/PROP

The LinearOperator domain is Moniodal over NonNegativeInteger. The objects of this domain are all tensor powers of a vector space of fixed dimension. The arrows are linear operators that map from one object (tensor power) to another.

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

  • all members of this domain have the same dimension

fricas
)lib CARTEN MONAL PROP
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 already explicitly exposed in frame initial Monoidal will be automatically loaded when needed from /var/aw/var/LatexWiki/MONAL.NRLIB/MONAL Prop is already explicitly exposed in frame initial Prop will be automatically loaded when needed from /var/aw/var/LatexWiki/PROP.NRLIB/PROP

spad
)abbrev domain LOP LinearOperator
LinearOperator(gener:OrderedFinite,K:Field): Exports == Implementation where
  NNI ==> NonNegativeInteger
  NAT ==> PositiveInteger
Exports ==> Join(Ring, VectorSpace K, Monoidal NNI, RetractableTo K) with arity: % -> Prop % basisOut: () -> List % basisIn: () -> List % map: (K->K,%) -> % if K has Evalable(K) then Evalable(K) eval: % -> % 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) -> % _/: (Tuple %,Tuple %) -> % _/: (Tuple %,%) -> % _/: (%,Tuple %) -> % ++ yet another syntax for product ev: NAT -> % ++ (2,0)-tensor for evaluation co: NAT -> % ++ (0,2)-tensor for co-evaluation
Implementation ==> add import List NNI
dim:NNI := size()$gener T := CartesianTensor(1,dim,K) L := Record(domain:NNI, codomain:NNI, data:T) RR := Record(gen:L,exp:NNI) -- FreeMonoid provides unevaluated products Rep ==> FreeMonoid L rep(x:%):Rep == x pretend Rep per(x:Rep):% == x pretend %
dimension():CardinalNumber == coerce dim
-- Prop (arity) dom(f:%):NNI == r:NNI := 0 for y in factors(rep f) repeat r:=r+(y.gen.domain)*(y.exp) return r cod(f:%):NNI == r:NNI := 0 for y in factors(rep f) repeat r:=r+(y.gen.codomain)*(y.exp) return r
prod(f:L,g:L):L == r:T := product(f.data,g.data) -- dom(f) + cod(f) + dom(g) + cod(g) p:List Integer := concat _ [[i for i in 1..(f.domain)], _ [(f.domain)+(f.codomain)+i for i in 1..(g.domain)], _ [(f.domain)+i for i in 1..(f.codomain)], _ [(f.domain)+(g.domain)+(f.codomain)+i for i in 1..(g.codomain)]] -- dom(f) + dom(g) + cod(f) + cod(g) --output("prod p = ",p::OutputForm)$OutputPackage [(f.domain)+(g.domain),(f.codomain)+(g.codomain),reindex(r,p)]
dats(fs:List RR):L == r:L := [0,0,1$T] for y in fs repeat t:L:=y.gen for n in 1..y.exp repeat r:=prod(r,t) return r
dat(f:%):L == dats factors rep f
arity(f:%):Prop % == f::Prop %
eval(f:%):% == per coerce dat(f)
retractIfCan(f:%):Union(K,"failed") == dom(f)=0 and cod(f)=0 => retract(dat(f).data)$T return "failed" retract(f:%):K == dom(f)=0 and cod(f)=0 => retract(dat(f).data)$T error "failed"
-- basis basisOut():List % == [per coerce [0,1,entries(row(1,i)$SquareMatrix(dim,K))::T] for i in 1..dim] basisIn():List % == [per coerce [1,0,entries(row(1,i)$SquareMatrix(dim,K))::T] for i in 1..dim] ev(n:NAT):% == reduce(_+,[ dx^n * dx^n for dx in basisIn()])$List(%) co(n:NAT):% == reduce(_+,[ Dx^n * Dx^n for Dx in basisOut()])$List(%)
-- manipulation map(f:K->K, g:%):% == per coerce [dom g,cod g,unravel(map(f,ravel dat(g).data))$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).data unravel(p:Prop %,r:List K):% == dim^(dom(p)+cod(p)) ~= #r => error "failed" per coerce [dom(p),cod(p),unravel(r)$T]
-- sum (f:% + g:%):% == dat(f).data=0 => g dat(g).data=0 => f dom(f) ~= dom(g) or cod(f) ~= cod(g) => error "arity" per coerce [dom f,cod f,dat(f).data+dat(g).data]
(f:% - g:%):% == dat(f).data=0 => g dat(g).data=0 => f dom(f) ~= dom(f) or cod(g) ~= cod(g) => error "arity" per coerce [dom f, cod f,dat(f).data-dat(g).data]
_-(f:%):% == per coerce [dom f, cod f,-dat(f).data]
-- identity for sum (trivial zero map) 0 == per coerce [0,0,0] zero?(f:%):Boolean == dat(f).data = 0 * dat(f).data -- identity for product 1:% == per 1 one?(f:%):Boolean == one? rep f -- identity for composition I := per coerce [1,1,kroneckerDelta()$T] (x:% = y:%):Boolean == rep eval x = rep eval y
-- 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) --output("coerce p3 = ",p3::OutputForm)$OutputPackage per coerce [#p,#p,reindex(dat(r).data,p3)] coerce(p:List None):% == per coerce [0,0,1] coerce(x:K):% == 1*x
-- tensor product elt(f:%,g:%):% == f * g elt(f:%,g:NAT):% == f * I^g elt(f:%,g1:NAT,g2:NAT):% == f * [g1 @ NAT,g2 @ NAT]::List NAT::% elt(f:%,g1:NAT,g2:NAT,g3:NAT):% == f * [g1 @ NAT,g2 @ NAT,g3 @ NAT]::List NAT::% apply(f:%,g:%):% == f * g (f:% * g:%):% == per (rep f * rep g)
leadI(x:Rep):NNI == r:=hclf(x,rep(I)^size(x)) size(r)=0 => 0 nthExpon(r,1)
trailI(x:Rep):NNI == r:=hcrf(x,rep(I)^size(x)) size(r)=0 => 0 nthExpon(r,1)
-- composition: -- 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
-- parallelize composition f/g = (f1/g1)*(f2/g2) if cod(f)>0 then i:Integer:=1 j:Integer:=1 n:NNI:=1 m:NNI:=1 f1 := per coerce nthFactor(rep f,1) g1 := per coerce nthFactor(rep g,1) while cod(f1)~=dom(g1) repeat if cod(f1) < dom(g1) then if n < nthExpon(rep f,i) then n:=n+1 else n:=1 i:=i+1 f1 := f1 * per coerce nthFactor(rep f,i) else if cod(f1) > dom(g1) then if m < nthExpon(rep g,j) then m:=m+1 else n:=1 j:=j+1 g1 := g1 * per coerce nthFactor(rep g,j) f2 := per overlap(rep f1, rep f).rm g2 := per overlap(rep g1,rep g).rm f := f1 g := g1 else f2 := per 1 g2 := per 1
-- remove leading and trailing identities nf := leadI rep f f := per overlap(rep(I)^nf,rep f).rm ng := leadI rep g g := per overlap(rep(I)^ng,rep g).rm fn := trailI rep f f := per overlap(rep f,rep(I)^fn).lm gn := trailI rep g g := per overlap(rep g,rep(I)^gn).lm
-- parallel factors guarantees that these are just identities if nf>0 and ng>0 then return I*(f2/g2) if fn>0 and gn>0 then output("Should not happen: trailing [fn,gn] = ",[fn,gn]::OutputForm)$OutputPackage return (f/g)*I
-- Exercise for Reader: -- Prove the following contraction and permutation is correct by -- considering all 9 cases for (nf=0 or ng=0) and (fn=0 or gn=0). -- output("leading [nl,nf,ng] = ",[nl,nf,ng]::OutputForm)$OutputPackage -- output("trailing [ln,fn,gn] = ",[ln,fn,gn]::OutputForm)$OutputPackage r:T := contract(cod(f)-ng-gn, dat(f).data,dom(f)+ng+1, dat(g).data,nf+1) p:List Integer:=concat [ _ [dom(f)+gn+i for i in 1..nf], _ [i for i in 1..dom(f)], _ [dom(f)+nf+ng+i for i in 1..fn], _ [dom(f)+i for i in 1..ng], _ [dom(f)+nf+ng+fn+gn+i for i in 1..cod(g)], _ [dom(f)+ng+i for i in 1..gn] ] --print(p::OutputForm)$OutputForm r:=reindex(r,p)
if f2=1 and g2=1 then return per coerce [nf+dom(f)+fn,ng+cod(g)+gn,r] return per coerce [nf+dom(f)+fn,ng+cod(g)+gn,r] * (f2/g2)
-- another notation for composition of products (t:Tuple % / x:%):% == t / construct([x])$PrimitiveArray(%)::Tuple(%) (x:% / t:Tuple %):% == construct([x])$PrimitiveArray(%)::Tuple(%) / t (f:Tuple % / g:Tuple %):% == fs:List % := [select(f,i) for i in 0..#f-1] gs:List % := [select(g,i) for i in 0..#g-1] fr:=reduce(elt@(%,%)->%,fs,1) gr:=reduce(elt@(%,%)->%,gs,1) fr / gr
(x:K * y:%):% == per coerce [dom y, cod y,x*dat(y).data] (x:% * y:K):% == per coerce [dom x,cod x,dat(x).data*y] (x:Integer * y:%):% == per coerce [dom y,cod y,x*dat(y).data]
-- display operators using basis show(x:%):OutputForm == dom(x)=0 and cod(x)=0 => return (dat(x).data)::OutputForm if size()$gener > 0 then gens:List OutputForm:=[index(i::PositiveInteger)$gener::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] else bases:List OutputForm:= [] -- 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).data | k~=0] empty? terms => return 0::OutputForm -- combine the terms return reduce(_+,terms)
coerce(x:%):OutputForm == r:OutputForm := empty() for y in factors(rep x) repeat if y.exp = 1 then if size rep x = 1 then r := show per coerce y.gen else r:=r*paren(list show per coerce y.gen) else r:=r*paren(list show per coerce y.gen)^(y.exp::OutputForm) return r
spad
   Compiling FriCAS source code from file 
      /var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/1528013890310644746-25px005.spad
      using old system compiler.
   LOP abbreviates domain LinearOperator 
------------------------------------------------------------------------
   initializing NRLIB LOP for LinearOperator 
   compiling into NRLIB LOP 
   importing List NonNegativeInteger
   processing macro definition Rep ==> FreeMonoid L 
   compiling local rep : $ -> FreeMonoid L
      LOP;rep is replaced by x 
Time: 0.02 SEC.
compiling local per : FreeMonoid L -> $ LOP;per is replaced by x Time: 0 SEC.
compiling exported dimension : () -> CardinalNumber Time: 0 SEC.
compiling exported dom : $ -> NonNegativeInteger Time: 0 SEC.
compiling exported cod : $ -> NonNegativeInteger Time: 0.01 SEC.
compiling local prod : (L,L) -> L Time: 0.01 SEC.
compiling local dats : List RR -> L Time: 0 SEC.
compiling local dat : $ -> L Time: 0 SEC.
compiling exported arity : $ -> Prop $ Time: 0 SEC.
compiling exported eval : $ -> $ Time: 0 SEC.
compiling exported retractIfCan : $ -> Union(K,failed) Time: 0.01 SEC.
compiling exported retract : $ -> K Time: 0 SEC.
compiling exported basisOut : () -> List $ Time: 0.01 SEC.
compiling exported basisIn : () -> List $ Time: 0.01 SEC.
compiling exported ev : PositiveInteger -> $ Time: 0.02 SEC.
compiling exported co : PositiveInteger -> $ Time: 0 SEC.
compiling exported map : (K -> K,$) -> $ Time: 0.01 SEC.
****** Domain: K already in scope augmenting K: (Evalable K) compiling exported eval : ($,List Equation K) -> $ Time: 0 SEC.
compiling exported ravel : $ -> List K Time: 0 SEC.
compiling exported unravel : (Prop $,List 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 zero? : $ -> Boolean Time: 0 SEC.
compiling exported One : () -> $ Time: 0 SEC.
compiling exported one? : $ -> Boolean Time: 0 SEC.
compiling exported = : ($,$) -> Boolean Time: 0.01 SEC.
compiling exported coerce : List PositiveInteger -> $ Time: 0.03 SEC.
compiling exported coerce : List None -> $ Time: 0 SEC.
compiling exported coerce : K -> $ Time: 0 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 SEC.
compiling local leadI : FreeMonoid L -> NonNegativeInteger Time: 0.02 SEC.
compiling local trailI : FreeMonoid L -> NonNegativeInteger Time: 0.01 SEC.
compiling exported / : ($,$) -> $ Local variable n type redefined: (NonNegativeInteger) to (Union (NonNegativeInteger) failed) Local variable m type redefined: (NonNegativeInteger) to (Union (NonNegativeInteger) failed) Time: 0.86 SEC.
compiling exported / : (Tuple $,$) -> $ Time: 0.01 SEC.
compiling exported / : ($,Tuple $) -> $ Time: 0.01 SEC.
compiling exported / : (Tuple $,Tuple $) -> $ Time: 0 SEC.
compiling exported * : (K,$) -> $ Time: 0 SEC.
compiling exported * : ($,K) -> $ Time: 0 SEC.
compiling exported * : (Integer,$) -> $ Time: 0.01 SEC.
compiling local show : $ -> OutputForm Time: 0.03 SEC.
compiling exported coerce : $ -> OutputForm Time: 0.04 SEC.
****** Domain: K already in scope augmenting K: (Evalable K) (time taken in buildFunctor: 10)
;;; *** |LinearOperator| REDEFINED
;;; *** |LinearOperator| REDEFINED Time: 0.01 SEC.
Warnings: [1] dom: gen has no value [2] dom: exp has no value [3] cod: gen has no value [4] cod: exp has no value [5] prod: data has no value [6] prod: domain has no value [7] prod: codomain has no value [8] dats: gen has no value [9] dats: exp has no value [10] retractIfCan: data has no value [11] retract: data has no value [12] map: data has no value [13] ravel: data has no value [14] +: data has no value [15] -: data has no value [16] zero?: data has no value [17] coerce: data has no value [18] /: i has no value [19] /: j has no value [20] /: data has no value [21] *: data has no value [22] show: data has no value [23] coerce: exp has no value [24] coerce: gen has no value
Cumulative Statistics for Constructor LinearOperator Time: 1.18 seconds
finalizing NRLIB LOP Processing LinearOperator for Browser database: --->-->LinearOperator(constructor): Not documented!!!! --->-->LinearOperator((arity ((Prop %) %))): Not documented!!!! --->-->LinearOperator((basisOut ((List %)))): Not documented!!!! --->-->LinearOperator((basisIn ((List %)))): Not documented!!!! --->-->LinearOperator((map (% (Mapping K K) %))): Not documented!!!! --->-->LinearOperator((eval (% %))): Not documented!!!! --->-->LinearOperator((ravel ((List K) %))): Not documented!!!! --->-->LinearOperator((unravel (% (Prop %) (List K)))): Not documented!!!! --------(coerce (% (List (PositiveInteger))))--------- --->-->LinearOperator((coerce (% (List (PositiveInteger))))): 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 (% % (PositiveInteger)))): Not documented!!!! --->-->LinearOperator((elt (% % (PositiveInteger) (PositiveInteger)))): Not documented!!!! --->-->LinearOperator((elt (% % (PositiveInteger) (PositiveInteger) (PositiveInteger)))): Not documented!!!! --->-->LinearOperator((/ (% (Tuple %) (Tuple %)))): Not documented!!!! --->-->LinearOperator((/ (% (Tuple %) %))): Not documented!!!! --------(/ (% % (Tuple %)))--------- --->-->LinearOperator((/ (% % (Tuple %)))): Improper first word in comments: yet "yet another syntax for product" --------(ev (% (PositiveInteger)))--------- --->-->LinearOperator((ev (% (PositiveInteger)))): Improper first word in comments: "(2,{}0)-tensor for evaluation" --------(co (% (PositiveInteger)))--------- --->-->LinearOperator((co (% (PositiveInteger)))): Improper first word in comments: "(0,{}2)-tensor for co-evaluation" --->-->LinearOperator(): Missing Description ; compiling file "/var/aw/var/LatexWiki/LOP.NRLIB/LOP.lsp" (written 25 APR 2017 08:40:00 PM):
; /var/aw/var/LatexWiki/LOP.NRLIB/LOP.fasl written ; compilation finished in 0:00:00.362 ------------------------------------------------------------------------ LinearOperator is now explicitly exposed in frame initial LinearOperator will be automatically loaded when needed from /var/aw/var/LatexWiki/LOP.NRLIB/LOP

Getting Started

Consult the source code above for more details.

Convenient Notation

fricas
-- summation
macro Σ(f,i,b) == reduce(+,[f*b.i for i in 1..#b])
Type: Void
fricas
-- list comprehension
macro Ξ(f,i)==[f for i in 1..retract(dimension()$L)]
Type: Void

Basis

fricas
Q := EXPR INT

\label{eq1}\hbox{\axiomType{Expression}\ } (\hbox{\axiomType{Integer}\ })(1)
Type: Type
fricas
L := LOP(OVAR ['x,'y],Q)

\label{eq2}\hbox{\axiomType{LinearOperator}\ } (\hbox{\axiomType{OrderedVariableList}\ } ([ x , y ]) , \hbox{\axiomType{Expression}\ } (\hbox{\axiomType{Integer}\ }))(2)
Type: Type
fricas
dim:Integer:=retract dimension()$L

\label{eq3}2(3)
Type: Integer
fricas
Dx:=basisOut()$L

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

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

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

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

Tests

fricas
A:L := Σ( Σ( script(a,[[j],[i]]), i,Dx), j,dx)

\label{eq8}{{a_{1}^{1}}\ {|_{x}^{x}}}+{{a_{1}^{2}}\ {|_{y}^{x}}}+{{a_{2}^{1}}\ {|_{x}^{y}}}+{{a_{2}^{2}}\ {|_{y}^{y}}}(8)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
-- scalar
3*A

\label{eq9}{3 \ {a_{1}^{1}}\ {|_{x}^{x}}}+{3 \ {a_{1}^{2}}\ {|_{y}^{x}}}+{3 \ {a_{2}^{1}}\ {|_{x}^{y}}}+{3 \ {a_{2}^{2}}\ {|_{y}^{y}}}(9)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
A/3

\label{eq10}{{{a_{1}^{1}}\over 3}\ {|_{x}^{x}}}+{{{a_{1}^{2}}\over 3}\ {|_{y}^{x}}}+{{{a_{2}^{1}}\over 3}\ {|_{x}^{y}}}+{{{a_{2}^{2}}\over 3}\ {|_{y}^{y}}}(10)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
-- identity
I:L := [1]

\label{eq11}{|_{x}^{x}}+{|_{y}^{y}}(11)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
H:L:=[1,2]

\label{eq12}{|_{x \  x}^{x \  x}}+{|_{x \  y}^{x \  y}}+{|_{y \  x}^{y \  x}}+{|_{y \  y}^{y \  y}}(12)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
test( I*I = H )

\label{eq13} \mbox{\rm true} (13)
Type: Boolean
fricas
-- twist
X:L := [2,1]

\label{eq14}{|_{x \  x}^{x \  x}}+{|_{y \  x}^{x \  y}}+{|_{x \  y}^{y \  x}}+{|_{y \  y}^{y \  y}}(14)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
test(X/X=H)

\label{eq15} \mbox{\rm true} (15)
Type: Boolean
fricas
-- printing
I*X*X*I

\label{eq16}\ {\left({{|_{x}^{x}}+{|_{y}^{y}}}\right)}\ {{\left({{|_{x \  x}^{x \  x}}+{|_{y \  x}^{x \  y}}+{|_{x \  y}^{y \  x}}+{|_{y \  y}^{y \  y}}}\right)}^{2}}\ {\left({{|_{x}^{x}}+{|_{y}^{y}}}\right)}(16)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
-- trace
U:L:=ev(1)

\label{eq17}{|_{\ }^{x \  x}}+{|_{\ }^{y \  y}}(17)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
Ω:L:=co(1)

\label{eq18}{|_{x \  x}}+{|_{y \  y}}(18)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
Ω/U

\label{eq19}2(19)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
test
  ( I Ω  ) /
  (  U I ) = I

\label{eq20} \mbox{\rm true} (20)
Type: Boolean
fricas
test
  (  Ω I ) /
  ( I U  ) = I

\label{eq21} \mbox{\rm true} (21)
Type: Boolean

Various special cases of composition

fricas
-- case 1
test( X/X = [1,2] )

\label{eq22} \mbox{\rm true} (22)
Type: Boolean
fricas
test( (I*X)/(I*X) = [1,2,3] )

\label{eq23} \mbox{\rm true} (23)
Type: Boolean
fricas
test( (I*X*I)/(I*X*I) = [1,2,3,4] )

\label{eq24} \mbox{\rm true} (24)
Type: Boolean
fricas
-- case 2
test( (X*I*I)/(X*X) = [1,2,4,3] )

\label{eq25} \mbox{\rm true} (25)
Type: Boolean
fricas
-- case 3
test( (X*X)/(X*I*I) = [1,2,4,3] )

\label{eq26} \mbox{\rm true} (26)
Type: Boolean
fricas
-- case 4
test ( (I*I*X)/(X*X) = [2,1,3,4] )

\label{eq27} \mbox{\rm true} (27)
Type: Boolean
fricas
-- case 5
test( (I*X*I)/(X*X) = [3,1,4,2] )

\label{eq28} \mbox{\rm true} (28)
Type: Boolean
fricas
-- case 6
test( (I*I*X)/(X*I*I)=[2,1,4,3] )

\label{eq29} \mbox{\rm true} (29)
Type: Boolean
fricas
test( (I*X)/(X*I) = [3,1,2] )

\label{eq30} \mbox{\rm true} (30)
Type: Boolean
fricas
test( (I*X*I)/(X*I*I)=[3,1,2,4] )

\label{eq31} \mbox{\rm true} (31)
Type: Boolean
fricas
-- case 7
test( (X*X)/(I*I*X) = [2,1,3,4] )

\label{eq32} \mbox{\rm true} (32)
Type: Boolean
fricas
-- case 8
test( (X*I)/(I*X) = [2,3,1] )

\label{eq33} \mbox{\rm true} (33)
Type: Boolean
fricas
-- case 9
test( (X*X)/(I*X*I) = [2,4,1,3] )

\label{eq34} \mbox{\rm true} (34)
Type: Boolean

Construction

fricas
A1:L := Σ(superscript(a1,[i]),i,dx)

\label{eq35}{{a 1^{1}}\ {|_{\ }^{x}}}+{{a 1^{2}}\ {|_{\ }^{y}}}(35)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
arity A1

\label{eq36}1 \over 0(36)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))
fricas
A2:L := Σ(superscript(a2,[i]),i,dx)

\label{eq37}{{a 2^{1}}\ {|_{\ }^{x}}}+{{a 2^{2}}\ {|_{\ }^{y}}}(37)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
A:L := A1*I+I*A2

\label{eq38}\begin{array}{@{}l}
\displaystyle
{{\left({a 2^{1}}+{a 1^{1}}\right)}\ {|_{x}^{x \  x}}}+{{a 2^{2}}\ {|_{x}^{x \  y}}}+{{a 1^{1}}\ {|_{y}^{x \  y}}}+{{a 1^{2}}\ {|_{x}^{y \  x}}}+ 
\
\
\displaystyle
{{a 2^{1}}\ {|_{y}^{y \  x}}}+{{\left({a 2^{2}}+{a 1^{2}}\right)}\ {|_{y}^{y \  y}}}
(38)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
arity A

\label{eq39}2 \over 1(39)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))
fricas
B1:L := Σ(subscript(b1,[i]),i,Dx)

\label{eq40}{{b 1_{1}}\ {|_{x}}}+{{b 1_{2}}\ {|_{y}}}(40)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
arity B1

\label{eq41}0 \over 1(41)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))
fricas
B2:L := Σ(subscript(b2,[i]),i,Dx)

\label{eq42}{{b 2_{1}}\ {|_{x}}}+{{b 2_{2}}\ {|_{y}}}(42)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
B:L := B1*I+I*B2

\label{eq43}\begin{array}{@{}l}
\displaystyle
{{\left({b 2_{1}}+{b 1_{1}}\right)}\ {|_{x \  x}^{x}}}+{{b 2_{2}}\ {|_{x \  y}^{x}}}+{{b 1_{2}}\ {|_{y \  x}^{x}}}+{{b 1_{1}}\ {|_{x \  y}^{y}}}+ 
\
\
\displaystyle
{{b 2_{1}}\ {|_{y \  x}^{y}}}+{{\left({b 2_{2}}+{b 1_{2}}\right)}\ {|_{y \  y}^{y}}}
(43)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
arity B

\label{eq44}1 \over 2(44)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))
fricas
BB:L := Σ(Σ(subscript(b,[i,j]),i,Dx),j,Dx)

\label{eq45}{{b_{1, \: 1}}\ {|_{x \  x}}}+{{b_{1, \: 2}}\ {|_{x \  y}}}+{{b_{2, \: 1}}\ {|_{y \  x}}}+{{b_{2, \: 2}}\ {|_{y \  y}}}(45)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
W:L := Σ(Σ(Σ(script(w,[[k],[i,j]]),k,Dx),i,dx),j,dx)

\label{eq46}\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}}}
(46)
Type: LinearOperator(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
 
fricas
AB2 := A2 / B2; AB2::OutputForm = A2::OutputForm / B2::OutputForm

\label{eq47}\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}}}}}
(47)
Type: Equation(OutputForm)
fricas
arity(AB2)::OutputForm = arity(A2)::OutputForm / arity(B2)::OutputForm

\label{eq48}{1 \over 1}={{1 \over 0}\over{0 \over 1}}(48)
Type: Equation(OutputForm)
fricas
BA1 := B1 / A1; BA1::OutputForm = B1::OutputForm / A1::OutputForm

\label{eq49}{{{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}}}}}(49)
Type: Equation(OutputForm)
fricas
arity(BA1)::OutputForm = arity(B1)::OutputForm / arity(A1)::OutputForm

\label{eq50}{0 \over 0}={{0 \over 1}\over{1 \over 0}}(50)
Type: Equation(OutputForm)
fricas
AB1 := A1 / B1; AB1::OutputForm = A1::OutputForm / B1::OutputForm

\label{eq51}\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}}}}}
(51)
Type: Equation(OutputForm)
fricas
arity(AB1)::OutputForm = arity(A1)::OutputForm / arity(B1)::OutputForm

\label{eq52}{1 \over 1}={{1 \over 0}\over{0 \over 1}}(52)
Type: Equation(OutputForm)

Partial Evaluation

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

\label{eq53}\begin{array}{@{}l}
\displaystyle
{{\left({{a 1^{1}}\ {b 2_{1}}}+{{a 1^{2}}\ {b 1_{2}}}+{{a 1^{1}}\ {b 1_{1}}}\right)}\ {|_{x}^{x}}}+{{a 1^{1}}\ {b 2_{2}}\ {|_{y}^{x}}}+ 
\
\
\displaystyle
{{a 1^{2}}\ {b 2_{1}}\ {|_{x}^{y}}}+{{\left({{a 1^{2}}\ {b 2_{2}}}+{{a 1^{2}}\ {b 1_{2}}}+{{a 1^{1}}\ {b 1_{1}}}\right)}\ {|_{y}^{y}}}
(53)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
BBA2 := B/B1
1 - 2 arity warning: ------ 0 1 2 - (-) 1 1

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

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

\label{eq56}\begin{array}{@{}l}
\displaystyle
{{\left({{a 2^{2}}\ {b 1_{2}}}+{{\left({a 2^{1}}+{a 1^{1}}\right)}\ {b 1_{1}}}\right)}\ {|_{x}^{x}}}+{{a 1^{1}}\ {b 1_{2}}\ {|_{y}^{x}}}+{{a 1^{2}}\ {b 1_{1}}\ {|_{x}^{y}}}+ 
\
\
\displaystyle
{{\left({{\left({a 2^{2}}+{a 1^{2}}\right)}\ {b 1_{2}}}+{{a 2^{1}}\ {b 1_{1}}}\right)}\ {|_{y}^{y}}}
(56)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))

Powers

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

\label{eq57}3 \over 3(57)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))
fricas
test(AB3=AB1*(AB1*AB1))

\label{eq58} \mbox{\rm true} (58)
Type: Boolean
fricas
test(AB3=AB1^3)

\label{eq59} \mbox{\rm true} (59)
Type: Boolean
fricas
one? (AB3^0)

\label{eq60} \mbox{\rm true} (60)
Type: Boolean

Sums


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

\label{eq61}\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}}}}
(61)
Type: Equation(OutputForm)
fricas
arity(A12s)::OutputForm = arity(A1)::OutputForm + arity(A2)::OutputForm

\label{eq62}{1 \over 0}={{1 \over 0}+{1 \over 0}}(62)
Type: Equation(OutputForm)
fricas
B12s := B1 + B2; B12s::OutputForm = B1::OutputForm + B2::OutputForm

\label{eq63}\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}}}}
(63)
Type: Equation(OutputForm)
fricas
arity(B12s)::OutputForm = arity(B1)::OutputForm + arity(B2)::OutputForm

\label{eq64}{0 \over 1}={{0 \over 1}+{0 \over 1}}(64)
Type: Equation(OutputForm)
fricas
-B12s

\label{eq65}{{\left(-{b 2_{1}}-{b 1_{1}}\right)}\ {|_{x}}}+{{\left(-{b 2_{2}}-{b 1_{2}}\right)}\ {|_{y}}}(65)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
zero? (A12s - A12s)

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

Multiplication

fricas
A3s:=(A1+A1)+A1

\label{eq67}{3 \ {a 1^{1}}\ {|_{\ }^{x}}}+{3 \ {a 1^{2}}\ {|_{\ }^{y}}}(67)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
arity(A3s)

\label{eq68}1 \over 0(68)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))
fricas
test(A3s=A1+(A1+A1))

\label{eq69} \mbox{\rm true} (69)
Type: Boolean
fricas
test(A3s=A1*3)

\label{eq70} \mbox{\rm true} (70)
Type: Boolean
fricas
zero? (0*A3s)

\label{eq71} \mbox{\rm true} (71)
Type: Boolean

fricas
B3s:=(B1+B1)+B1

\label{eq72}{3 \ {b 1_{1}}\ {|_{x}}}+{3 \ {b 1_{2}}\ {|_{y}}}(72)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
arity(B3s)

\label{eq73}0 \over 1(73)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))
fricas
test(B3s=B1+(B1+B1))

\label{eq74} \mbox{\rm true} (74)
Type: Boolean
fricas
test(B3s=B1*3)

\label{eq75} \mbox{\rm true} (75)
Type: Boolean

Product

fricas
AB11:=A1*B1

\label{eq76}\ {\left({{{a 1^{1}}\ {|_{\ }^{x}}}+{{a 1^{2}}\ {|_{\ }^{y}}}}\right)}\ {\left({{{b 1_{1}}\ {|_{x}}}+{{b 1_{2}}\ {|_{y}}}}\right)}(76)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
arity(AB11)

\label{eq77}1 \over 1(77)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))
fricas
BA11:= B1*A1

\label{eq78}\ {\left({{{b 1_{1}}\ {|_{x}}}+{{b 1_{2}}\ {|_{y}}}}\right)}\ {\left({{{a 1^{1}}\ {|_{\ }^{x}}}+{{a 1^{2}}\ {|_{\ }^{y}}}}\right)}(78)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
arity(BA11)

\label{eq79}1 \over 1(79)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))
fricas
AB := A*B

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

\label{eq81}3 \over 3(81)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))
fricas
BA := B*A

\label{eq82}\begin{array}{@{}l}
\displaystyle
\ {\left({
\begin{array}{@{}l}
\displaystyle
{{\left({b 2_{1}}+{b 1_{1}}\right)}\ {|_{x \  x}^{x}}}+{{b 2_{2}}\ {|_{x \  y}^{x}}}+{{b 1_{2}}\ {|_{y \  x}^{x}}}+ 
\
\
\displaystyle
{{b 1_{1}}\ {|_{x \  y}^{y}}}+{{b 2_{1}}\ {|_{y \  x}^{y}}}+{{\left({b 2_{2}}+{b 1_{2}}\right)}\ {|_{y \  y}^{y}}}
(82)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
arity(BA)

\label{eq83}3 \over 3(83)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))
fricas
WB1:=W*B1

\label{eq84}\begin{array}{@{}l}
\displaystyle
\ {\left({
\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}}}+ 
\
\
\displaystyle
{{w_{2}^{1, \: 2}}\ {|_{y}^{x \  y}}}+{{w_{1}^{2, \: 1}}\ {|_{x}^{y \  x}}}+{{w_{2}^{2, \: 1}}\ {|_{y}^{y \  x}}}+ 
\
\
\displaystyle
{{w_{1}^{2, \: 2}}\ {|_{x}^{y \  y}}}+{{w_{2}^{2, \: 2}}\ {|_{y}^{y \  y}}}
(84)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
arity(WB1)

\label{eq85}2 \over 2(85)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))
fricas
test((A*A)*A=A*(A*A))

\label{eq86} \mbox{\rm true} (86)
Type: Boolean
fricas
test((B*B)*B=B*(B*B))

\label{eq87} \mbox{\rm true} (87)
Type: Boolean
fricas
test((A*B)*A=A*(B*A))

\label{eq88} \mbox{\rm true} (88)
Type: Boolean

Permutations

fricas
-- braid
B3:=(I*X)/(X*I)

\label{eq89}\begin{array}{@{}l}
\displaystyle
{|_{x \  x \  x}^{x \  x \  x}}+{|_{y \  x \  x}^{x \  x \  y}}+{|_{x \  x \  y}^{x \  y \  x}}+{|_{y \  x \  y}^{x \  y \  y}}+ 
\
\
\displaystyle
{|_{x \  y \  x}^{y \  x \  x}}+{|_{y \  y \  x}^{y \  x \  y}}+{|_{x \  y \  y}^{y \  y \  x}}+{|_{y \  y \  y}^{y \  y \  y}}
(89)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
test(B3/B3/B3 = I*I*I)

\label{eq90} \mbox{\rm true} (90)
Type: Boolean
fricas
-- parallel
test((X*X)/(X*X)=H*H)

\label{eq91} \mbox{\rm true} (91)
Type: Boolean

Manipulations

fricas
ravel AB

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

\label{eq93} \mbox{\rm true} (93)
Type: Boolean
fricas
map(x+->x+1,AB)$L

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

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

\label{eq96}\begin{array}{@{}l}
\displaystyle
{{\left({a 2^{1}}+ 1 \right)}\ {|_{x}^{x \  x}}}+{{a 2^{2}}\ {|_{x}^{x \  y}}}+{|_{y}^{x \  y}}+{2 \ {|_{x}^{y \  x}}}+{{a 2^{1}}\ {|_{y}^{y \  x}}}+ 
\
\
\displaystyle
{{\left({a 2^{2}}+ 2 \right)}\ {|_{y}^{y \  y}}}
(96)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))

Examples

Another kind of diagram:

Y = Y U U

Algebra

fricas
Y:=Σ(Σ(Σ(script(y,[[k],[i,j]]),j,dx),i,dx),k,Dx)

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

\label{eq98}2 \over 1(98)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))

Commutator

fricas
Y -   X /
      Y

\label{eq99}\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}}}
(99)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))

Pairing

fricas
U:=Σ(Σ(script(u,[[],[i,j]]),j,dx),i,dx)

\label{eq100}{{u^{1, \: 1}}\ {|_{\ }^{x \  x}}}+{{u^{2, \: 1}}\ {|_{\ }^{x \  y}}}+{{u^{1, \: 2}}\ {|_{\ }^{y \  x}}}+{{u^{2, \: 2}}\ {|_{\ }^{y \  y}}}(100)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
arity U

\label{eq101}2 \over 0(101)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))

3-point function

fricas
YU := Y I
  /    U

\label{eq102}\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^{2, \: 2}}\ {y_{2}^{1, \: 1}}}+{{u^{2, \: 1}}\ {y_{1}^{1, \: 1}}}\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^{2, \: 2}}\ {y_{2}^{2, \: 1}}}+{{u^{2, \: 1}}\ {y_{1}^{2, \: 1}}}\right)}\ {|_{\ }^{x \  y \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{1, \: 2}}\ {y_{2}^{1, \: 2}}}+{{u^{1, \: 1}}\ {y_{1}^{1, \: 2}}}\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^{1, \: 2}}\ {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^{2, \: 1}}\ {y_{1}^{2, \: 2}}}\right)}\ {|_{\ }^{y \  y \  y}}}
(102)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
YU := Y.I
  /    U

\label{eq103}\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^{2, \: 2}}\ {y_{2}^{1, \: 1}}}+{{u^{2, \: 1}}\ {y_{1}^{1, \: 1}}}\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^{2, \: 2}}\ {y_{2}^{2, \: 1}}}+{{u^{2, \: 1}}\ {y_{1}^{2, \: 1}}}\right)}\ {|_{\ }^{x \  y \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{1, \: 2}}\ {y_{2}^{1, \: 2}}}+{{u^{1, \: 1}}\ {y_{1}^{1, \: 2}}}\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^{1, \: 2}}\ {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^{2, \: 1}}\ {y_{1}^{2, \: 2}}}\right)}\ {|_{\ }^{y \  y \  y}}}
(103)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
arity YU

\label{eq104}3 \over 0(104)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))

fricas
YU:L := (Y,I) / U

\label{eq105}\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^{2, \: 2}}\ {y_{2}^{1, \: 1}}}+{{u^{2, \: 1}}\ {y_{1}^{1, \: 1}}}\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^{2, \: 2}}\ {y_{2}^{2, \: 1}}}+{{u^{2, \: 1}}\ {y_{1}^{2, \: 1}}}\right)}\ {|_{\ }^{x \  y \  y}}}+ 
\
\
\displaystyle
{{\left({{u^{1, \: 2}}\ {y_{2}^{1, \: 2}}}+{{u^{1, \: 1}}\ {y_{1}^{1, \: 2}}}\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^{1, \: 2}}\ {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^{2, \: 1}}\ {y_{1}^{2, \: 2}}}\right)}\ {|_{\ }^{y \  y \  y}}}
(105)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
UY:L := (I,Y) / U

\label{eq106}\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, \: 1}}\ {y_{2}^{2, \: 1}}}+{{u^{1, \: 1}}\ {y_{1}^{2, \: 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, \: 1}}\ {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^{1, \: 2}}\ {y_{1}^{1, \: 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, \: 2}}\ {y_{2}^{1, \: 2}}}+{{u^{1, \: 2}}\ {y_{1}^{1, \: 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}}}
(106)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))

Oddities (should work on the right)

fricas
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

fricas
UY := [1].Y
  /      U

\label{eq107}\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, \: 1}}\ {y_{2}^{2, \: 1}}}+{{u^{1, \: 1}}\ {y_{1}^{2, \: 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, \: 1}}\ {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^{1, \: 2}}\ {y_{1}^{1, \: 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, \: 2}}\ {y_{2}^{1, \: 2}}}+{{u^{1, \: 2}}\ {y_{1}^{1, \: 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}}}
(107)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
UY := [1] Y
  /      U

\label{eq108}\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, \: 1}}\ {y_{2}^{2, \: 1}}}+{{u^{1, \: 1}}\ {y_{1}^{2, \: 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, \: 1}}\ {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^{1, \: 2}}\ {y_{1}^{1, \: 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, \: 2}}\ {y_{2}^{1, \: 2}}}+{{u^{1, \: 2}}\ {y_{1}^{1, \: 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}}}
(108)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
arity UY

\label{eq109}3 \over 0(109)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))

Co-algebra

fricas
λ:=Σ(Σ(Σ(script(y,[[i],[j,k]]),i,dx),j,Dx),k,Dx)

\label{eq110}\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}}}
(110)
Type: LinearOperator(OrderedVariableList([x,y]),Expression(Integer))
fricas
arity λ

\label{eq111}1 \over 2(111)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))

Handle

λ
Y

fricas
Φ := λ
  /  Y

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

\label{eq113}1 \over 1(113)
Type: Prop(LinearOperator(OrderedVariableList([x,y]),Expression(Integer)))

Back to the top.

Comments

Please leave comments and suggestions.

Thanks

Bill Page

I am trying to understand this page. It might or might not be relevant to the finding of transforms that I am doing. It looks like it would; if I understood it. I hope you have some patience with ignorance! In the process of walking through the above (I presume some load is missing?):

(2) above on my machine gives " L := LOP(OVAR ['x,'y]?,Q) There are no library operations named LOP Use HyperDoc Browse or issue )what op LOP to learn if there is any operation containing " LOP " in its name.

Cannot find a definition or applicable library operation named LOP with argument type(s) Type Type

Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need. "

Re: LOP ? --Bill page, Tue, 30 Dec 2014 00:31:12 +0000 reply
See the SPAD code following:
  )abbrev domain LOP LinearOperator

above. LOP is an abbreviation for a new domain called LinearOperator.

For a faster reply you might want to email me directly or use one of the FriCAS/Axiom email lists.




  Subject:   Be Bold !!
  ( 12 subscribers )  
Please rate this page: