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

Edit detail for LinearOperator revision 4 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/03/08 12:12:56 GMT-8
Note: product and co-product

changed:
-    (x:% * y:%):% == per [rep(x).n+rep(y).n,rep(x).m+rep(y).m,product(rep(x).t, rep(y).t)]
    (x:% * y:%):% ==
      rep(x).n ~= rep(y).n => error "arity"
      r:=product(rep(x).t, rep(y).t)
      u:=1$DirectProduct(dim,K)::T
      ud:=product(u,kroneckerDelta()$T)
      for i in 1..rep(x).n repeat
        --output("rank",rank(r)::OutputForm)$OutputPackage
        --output("n",rep(x).n::OutputForm)$OutputPackage
        r:=contract(contract(ud,1,r,rep(x).n+1),1,rep(x).n+1)
        --output("rank",rank(r)::OutputForm)$OutputPackage
      per [rep(x).n,rep(x).m+rep(y).m,r]
    (x:% + y:%):% ==
      rep(x).m ~= rep(y).m  => error "arity"
      r:=product(rep(x).t, rep(y).t)
      u:=1$DirectProduct(dim,K)::T
      du:=product(kroneckerDelta()$T,u)
      for i in 1..rep(y).m repeat
        --output("rank",rank(r)::OutputForm)$OutputPackage
        --output("m",rep(y).m::OutputForm)$OutputPackage
        r:=contract(contract(du,1,r,rep(y).m+1),1,rep(y).m+1)
        --output("rank",rank(r)::OutputForm)$OutputPackage
      per [rep(x).n+rep(y).m,rep(y).m,r]

changed:
-        --print(yn::OutputForm)$PrintPackage
-        --print(xm::OutputForm)$PrintPackage
        output("yn",yn::OutputForm)$OutputPackage
        output("xm",xm::OutputForm)$OutputPackage
        output("rank",rank(r)::OutputForm)$OutputPackage

added:
\end{axiom}

\begin{axiom}
XX1:=X1*X1
arity(XX1)
\end{axiom}
\begin{axiom}
YY1:=Y1*Y1
arity(YY1)
\end{axiom}
\begin{axiom}

added:
\end{axiom}

\begin{axiom}

spad
)abbrev domain LIN LinearOperator
LinearOperator(dim:NonNegativeInteger,K:CommutativeRing): Join(Ring,BiModule(K,K)) with
    arity: % -> DirectProduct(2,NonNegativeInteger)
    elt: (%,%) -> %
    id: ()->%
    inp: List K -> %
    inp: List % -> %
    out: List K -> %
    out: List % -> %
    coerce: SquareMatrix(dim,K) -> %
  == add
    import List NonNegativeInteger
    T == CartesianTensor(1,dim,K)
    Rep == Record(n:NonNegativeInteger, m:NonNegativeInteger, t:T)
    rep(x:%):Rep == x pretend Rep
    per(x:Rep):% == x pretend %
arity(x:%):DirectProduct(2,NonNegativeInteger) == directProduct [rep(x).n,rep(x).m] 0 == per [0,0,0] (x:% + y:%):% == rep(x).t=0 => per [rep(y).n,rep(y).m,rep(y).t] rep(y).t=0 => per [rep(x).n,rep(x).m,rep(x).t] rep(x).n ~= rep(y).n or rep(x).m ~= rep(y).m => error "arity" per [rep(x).n,rep(x).m,rep(x).t+rep(y).t] (x:% - y:%):% == rep(x).t=0 => per [rep(y).n,rep(y).m,-rep(y).t] rep(y).t=0 => per [rep(x).n,rep(x).m,rep(x).t] rep(x).n ~= rep(y).n or rep(x).m ~= rep(y).m => error "arity" per [rep(x).n,rep(x).m,rep(x).t-rep(y).t] 1 == per [0,0,1] (x:% * y:%):% == rep(x).n ~= rep(y).n => error "arity" r:=product(rep(x).t, rep(y).t) u:=1$DirectProduct(dim,K)::T ud:=product(u,kroneckerDelta()$T) for i in 1..rep(x).n repeat --output("rank",rank(r)::OutputForm)$OutputPackage --output("n",rep(x).n::OutputForm)$OutputPackage r:=contract(contract(ud,1,r,rep(x).n+1),1,rep(x).n+1) --output("rank",rank(r)::OutputForm)$OutputPackage per [rep(x).n,rep(x).m+rep(y).m,r] (x:% + y:%):% == rep(x).m ~= rep(y).m => error "arity" r:=product(rep(x).t, rep(y).t) u:=1$DirectProduct(dim,K)::T du:=product(kroneckerDelta()$T,u) for i in 1..rep(y).m repeat --output("rank",rank(r)::OutputForm)$OutputPackage --output("m",rep(y).m::OutputForm)$OutputPackage r:=contract(contract(du,1,r,rep(y).m+1),1,rep(y).m+1) --output("rank",rank(r)::OutputForm)$OutputPackage per [rep(x).n+rep(y).m,rep(y).m,r] (x:% = y:%):Boolean == rep(x).n ~= rep(y).n or rep(x).m ~= rep(y).m => error "arity" rep(x).t = rep(y).t (x:K * y:%):% == per [rep(y).n,rep(y).m,x*rep(y).t] (x:% * y:K):% == per [rep(x).n,rep(x).m,rep(x).t*y] elt(x:%,y:%):% == r:=product(rep(x).t,rep(y).t) yn:=rep(y).n -- outputs of y xm:=rep(x).m -- inputs of x while yn>0 and xm>0 repeat output("yn",yn::OutputForm)$OutputPackage output("xm",xm::OutputForm)$OutputPackage output("rank",rank(r)::OutputForm)$OutputPackage r:=contract(r,rep(y).n+xm,yn+rep(y).m) yn:=subtractIfCan(yn,1)::NonNegativeInteger xm:=subtractIfCan(xm,1)::NonNegativeInteger per [rep(x).n+xm,yn+rep(y).m,r] id():% == per [1,1,1] inp(x:List K):% == per [1,0,entries(x)::T] inp(x:List %):% == #removeDuplicates([rep(y).n for y in x])~=1 or #removeDuplicates([rep(y).m for y in x])~=1 => error "arity" per [rep(first x).n+1,rep(first x).m,[rep(y).t for y in x]::T]$Rep out(x:List K):% == per [0,1,entries(x)::T] out(x:List %):% == #removeDuplicates([rep(y).n for y in x])~=1 or #removeDuplicates([rep(y).m for y in x])~=1 => error "arity" per [rep(first x).n,rep(first x).m+1,[rep(y).t for y in x]::T]$Rep coerce(x:%):OutputForm == (rep(x).t)::OutputForm
spad
   Compiling FriCAS source code from file 
      /var/zope2/var/LatexWiki/3626382297542132014-25px001.spad using 
      old system compiler.
   LIN abbreviates domain LinearOperator 
------------------------------------------------------------------------
   initializing NRLIB LIN for LinearOperator 
   compiling into NRLIB LIN 
   importing List NonNegativeInteger
   compiling local rep : $ -> Record(n: NonNegativeInteger,m: NonNegativeInteger,t: CartesianTensor(One,dim,K))
      LIN;rep is replaced by x 
Time: 0.12 SEC.
compiling local per : Record(n: NonNegativeInteger,m: NonNegativeInteger,t: CartesianTensor(One,dim,K)) -> $ LIN;per is replaced by x Time: 0 SEC.
compiling exported arity : $ -> DirectProduct(2,NonNegativeInteger) Time: 0.02 SEC.
compiling exported Zero : () -> $ Time: 0.24 SEC.
compiling exported + : ($,$) -> $ Time: 0.03 SEC.
compiling exported - : ($,$) -> $ Time: 0.01 SEC.
compiling exported One : () -> $ Time: 0.01 SEC.
compiling exported * : ($,$) -> $ Time: 0.03 SEC.
compiling exported + : ($,$) -> $ Time: 0.02 SEC.
compiling exported = : ($,$) -> Boolean Time: 0.02 SEC.
compiling exported * : (K,$) -> $ Time: 0.01 SEC.
compiling exported * : ($,K) -> $ Time: 0.01 SEC.
compiling exported elt : ($,$) -> $ Time: 0.02 SEC.
compiling exported id : () -> $ Time: 0.01 SEC.
compiling exported inp : List K -> $ Time: 0.08 SEC.
compiling exported inp : List $ -> $ Time: 0.13 SEC.
compiling exported out : List K -> $ Time: 0 SEC.
compiling exported out : List $ -> $ Time: 0.08 SEC.
compiling exported coerce : $ -> OutputForm Time: 0.02 SEC.
(time taken in buildFunctor: 10)
;;; *** |LinearOperator| REDEFINED
;;; *** |LinearOperator| REDEFINED Time: 0.02 SEC.
Cumulative Statistics for Constructor LinearOperator Time: 0.88 seconds
finalizing NRLIB LIN Processing LinearOperator for Browser database: --->-->LinearOperator((arity ((DirectProduct 2 (NonNegativeInteger)) %))): Not documented!!!! --->-->LinearOperator((elt (% % %))): Not documented!!!! --->-->LinearOperator((id (%))): Not documented!!!! --->-->LinearOperator((inp (% (List K)))): Not documented!!!! --->-->LinearOperator((inp (% (List %)))): Not documented!!!! --->-->LinearOperator((out (% (List K)))): Not documented!!!! --->-->LinearOperator((out (% (List %)))): Not documented!!!! --->-->LinearOperator((coerce (% (SquareMatrix dim K)))): Not documented!!!! --->-->LinearOperator(constructor): Not documented!!!! --->-->LinearOperator(): Missing Description ; compiling file "/var/zope2/var/LatexWiki/LIN.NRLIB/LIN.lsp" (written 08 MAR 2011 12:12:38 PM): ; compiling (/VERSIONCHECK 2) ; compiling (PUT (QUOTE |LIN;rep|) ...) ; compiling (DEFUN |LIN;rep| ...) ; compiling (PUT (QUOTE |LIN;per|) ...) ; compiling (DEFUN |LIN;per| ...) ; compiling (DEFUN |LIN;arity;$Dp;3| ...) ; compiling (DEFUN |LIN;Zero;$;4| ...) ; compiling (DEFUN |LIN;+;3$;5| ...) ; compiling (DEFUN |LIN;-;3$;6| ...) ; compiling (DEFUN |LIN;One;$;7| ...) ; compiling (DEFUN |LIN;*;3$;8| ...) ; compiling (DEFUN |LIN;+;3$;9| ...) ; compiling (DEFUN |LIN;=;2$B;10| ...) ; compiling (DEFUN |LIN;*;K2$;11| ...) ; compiling (DEFUN |LIN;*;$K$;12| ...) ; compiling (DEFUN |LIN;elt;3$;13| ...) ; compiling (DEFUN |LIN;id;$;14| ...) ; compiling (DEFUN |LIN;inp;L$;15| ...) ; compiling (DEFUN |LIN;inp;L$;16| ...) ; compiling (DEFUN |LIN;out;L$;17| ...) ; compiling (DEFUN |LIN;out;L$;18| ...) ; compiling (DEFUN |LIN;coerce;$Of;19| ...) ; compiling (DEFUN |LinearOperator| ...) ; compiling (DEFUN |LinearOperator;| ...) ; compiling (MAKEPROP (QUOTE |LinearOperator|) ...)
; /var/zope2/var/LatexWiki/LIN.NRLIB/LIN.fasl written ; compilation finished in 0:00:00.744 ------------------------------------------------------------------------ LinearOperator is now explicitly exposed in frame initial LinearOperator will be automatically loaded when needed from /var/zope2/var/LatexWiki/LIN.NRLIB/LIN

axiom
L:=LIN(2,FRAC POLY INT)

\label{eq1}\hbox{\axiomType{LinearOperator}\ } (2, \hbox{\axiomType{Fraction}\ } (\hbox{\axiomType{Polynomial}\ } (\hbox{\axiomType{Integer}\ })))(1)
Type: Domain
axiom
X1:L:=inp[script(x,[[i]]) for i in 1..2]

\label{eq2}\left[{x_{1}}, \:{x_{2}}\right](2)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity X1

\label{eq3}\left[ 1, \: 0 \right](3)
Type: DirectProduct?(2,NonNegativeInteger?)
axiom
Y1:L:=out[script(y,[[],[i]]) for i in 1..2]

\label{eq4}\left[{y^{1}}, \:{y^{2}}\right](4)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity Y1

\label{eq5}\left[ 0, \: 1 \right](5)
Type: DirectProduct?(2,NonNegativeInteger?)
axiom
Y11:L:=inp[Y1,Y1]

\label{eq6}\left[ 
\begin{array}{cc}
{y^{1}}&{y^{2}}
\
{y^{1}}&{y^{2}}
(6)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity(Y11)

\label{eq7}\left[ 1, \: 1 \right](7)
Type: DirectProduct?(2,NonNegativeInteger?)

axiom
XX1:=X1*X1

\label{eq8}\left[{{2 \ {x_{1}}\ {x_{2}}}+{2 \ {{x_{1}}^2}}}, \:{{2 \ {{x_{2}}^2}}+{2 \ {x_{1}}\ {x_{2}}}}\right](8)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity(XX1)

\label{eq9}\left[ 1, \: 0 \right](9)
Type: DirectProduct?(2,NonNegativeInteger?)

axiom
YY1:=Y1*Y1

\label{eq10}\left[ 
\begin{array}{cc}
{{y^{1}}^2}&{{y^{1}}\ {y^{2}}}
\
{{y^{1}}\ {y^{2}}}&{{y^{2}}^2}
(10)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity(YY1)

\label{eq11}\left[ 0, \: 2 \right](11)
Type: DirectProduct?(2,NonNegativeInteger?)

axiom
Y1X1:=Y1*X1
>> Error detected within library code: arity

axiom
XY11:=X1 Y1

\label{eq12}\left[ 
\begin{array}{cc}
{{y^{1}}\ {x_{1}}}&{{y^{2}}\ {x_{1}}}
\
{{y^{1}}\ {x_{2}}}&{{y^{2}}\ {x_{2}}}
(12)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity(XY11)

\label{eq13}\left[ 1, \: 1 \right](13)
Type: DirectProduct?(2,NonNegativeInteger?)
axiom
YX11:= Y1 X1
yn 1 xm 1 rank 2

\label{eq14}{{y^{2}}\ {x_{2}}}+{{y^{1}}\ {x_{1}}}(14)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity(YX11)

\label{eq15}\left[ 0, \: 0 \right](15)
Type: DirectProduct?(2,NonNegativeInteger?)
axiom
X2:L:=inp[inp([script(x,[[i,j]]) for j in 1..2])$L for i in 1..2]

\label{eq16}\left[ 
\begin{array}{cc}
{x_{1, \: 1}}&{x_{1, \: 2}}
\
{x_{2, \: 1}}&{x_{2, \: 2}}
(16)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity(X2)

\label{eq17}\left[ 2, \: 0 \right](17)
Type: DirectProduct?(2,NonNegativeInteger?)
axiom
XX21:=X2 X1

\label{eq18}\begin{array}{@{}l}
\displaystyle
\left[{\left[ 
\begin{array}{cc}
{{x_{1}}\ {x_{1, \: 1}}}&{{x_{2}}\ {x_{1, \: 1}}}
\
{{x_{1}}\ {x_{1, \: 2}}}&{{x_{2}}\ {x_{1, \: 2}}}
(18)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity(XX21)

\label{eq19}\left[ 2, \: 1 \right](19)
Type: DirectProduct?(2,NonNegativeInteger?)
axiom
Y2:L:=out[out([script(y,[[],[i,j]]) for j in 1..2])$L for i in 1..2]

\label{eq20}\left[ 
\begin{array}{cc}
{y^{1, \: 1}}&{y^{1, \: 2}}
\
{y^{2, \: 1}}&{y^{2, \: 2}}
(20)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity(Y2)

\label{eq21}\left[ 0, \: 2 \right](21)
Type: DirectProduct?(2,NonNegativeInteger?)
axiom
XY22:=X2 Y2

\label{eq22}\left[ 
\begin{array}{cc}
{\left[ 
\begin{array}{cc}
{{y^{1, \: 1}}\ {x_{1, \: 1}}}&{{y^{1, \: 2}}\ {x_{1, \: 1}}}
\
{{y^{2, \: 1}}\ {x_{1, \: 1}}}&{{y^{2, \: 2}}\ {x_{1, \: 1}}}
(22)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity(XY22)

\label{eq23}\left[ 2, \: 2 \right](23)
Type: DirectProduct?(2,NonNegativeInteger?)
axiom
YX22:=Y2 X2
yn 2 xm 2 rank 4 yn 1 xm 1 rank 2
>> Error detected within library code: Improper index for contraction