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

Edit detail for LinearOperator revision 3 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 04:48:52 GMT-8
Note: examples

changed:
-    id: %
-    coerce: Vector K -> %
-    coerce: Vector % -> %
-    coerce: List K -> %
-    coerce: List % -> %
    id: ()->%
    inp: List K -> %
    inp: List % -> %
    out: List K -> %
    out: List % -> %

changed:
-        print(yn::OutputForm)$PrintPackage
-        print(xm::OutputForm)$PrintPackage
-        r:=contract(r,rep(x).n+xm,yn+rep(x).m)
        --print(yn::OutputForm)$PrintPackage
        --print(xm::OutputForm)$PrintPackage
        r:=contract(r,rep(y).n+xm,yn+rep(y).m)

changed:
-    id:% == per [1,1,1]
-    coerce(x:Vector K):% == per [0,1,entries(x)::T]
-    coerce(x:List K):% == per [1,0,entries(x)::T]
-    coerce(x:List %):% ==
    id():% == per [1,1,1]
    inp(x:List K):% == per [1,0,entries(x)::T]
    inp(x:List %):% ==

changed:
-    coerce(x:SquareMatrix(dim,K)):% == per [2,0,x::T]
    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

changed:
-Y:LIN(2,FRAC POLY INT):=[y1,y2]::List FRAC POLY INT
-arity Y
-A:LIN(2,FRAC POLY INT):=[a1,a2]::Vector FRAC POLY INT
-arity A
-X:LIN(2, FRAC POLY INT):=[[x11,x12],[x21,x22]]::SquareMatrix(2,FRAC POLY INT)
-arity(X)
-T:=A*Y
-arity(T)
-C:=A Y
-arity(C)
-D:= Y A
-arity(D)
-XA:=X A
-arity(XA)
-Z:LIN(2, FRAC POLY INT):=[A,A]
-arity(Z)
L:=LIN(2,FRAC POLY INT)
X1:L:=inp[script(x,[[i]]) for i in 1..2]
arity X1
Y1:L:=out[script(y,[[],[i]]) for i in 1..2]
arity Y1
Y11:L:=inp[Y1,Y1]
arity(Y11)
Y1X1:=Y1*X1
arity(Y1X1)
XY11:=X1 Y1
arity(XY11)
YX11:= Y1 X1
arity(YX11)
X2:L:=inp[inp([script(x,[[i,j]]) for j in 1..2])$L for i in 1..2]
arity(X2)
XX21:=X2 X1
arity(XX21)
Y2:L:=out[out([script(y,[[],[i,j]]) for j in 1..2])$L for i in 1..2]
arity(Y2)
XY22:=X2 Y2
arity(XY22)
YX22:=Y2 X2
arity(XY22)
W:L:=out[inp[inp([script(w,[[i,j],[k]]) for j in 1..2])$L for i in 1..2] for k in 1..2]
WX1:=W X1
arity(WX1)

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:%):% == per [rep(x).n+rep(y).n,rep(x).m+rep(y).m,product(rep(x).t, rep(y).t)] (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 --print(yn::OutputForm)$PrintPackage --print(xm::OutputForm)$PrintPackage 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/9201705897152006478-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.09 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 SEC.
compiling exported + : ($,$) -> $ Time: 0.23 SEC.
compiling exported - : ($,$) -> $ Time: 0.02 SEC.
compiling exported One : () -> $ Time: 0 SEC.
compiling exported * : ($,$) -> $ Time: 0.01 SEC.
compiling exported = : ($,$) -> Boolean Time: 0.01 SEC.
compiling exported * : (K,$) -> $ Time: 0.01 SEC.
compiling exported * : ($,K) -> $ Time: 0 SEC.
compiling exported elt : ($,$) -> $ Time: 0.01 SEC.
compiling exported id : () -> $ Time: 0 SEC.
compiling exported inp : List K -> $ Time: 0.07 SEC.
compiling exported inp : List $ -> $ Time: 0.10 SEC.
compiling exported out : List K -> $ Time: 0 SEC.
compiling exported out : List $ -> $ Time: 0.01 SEC.
compiling exported coerce : $ -> OutputForm Time: 0.01 SEC.
(time taken in buildFunctor: 0)
;;; *** |LinearOperator| REDEFINED
;;; *** |LinearOperator| REDEFINED Time: 0.02 SEC.
Cumulative Statistics for Constructor LinearOperator Time: 0.61 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 04:48:32 AM): ; 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;=;2$B;9| ...) ; compiling (DEFUN |LIN;*;K2$;10| ...) ; compiling (DEFUN |LIN;*;$K$;11| ...) ; compiling (DEFUN |LIN;elt;3$;12| ...) ; compiling (DEFUN |LIN;id;$;13| ...) ; compiling (DEFUN |LIN;inp;L$;14| ...) ; compiling (DEFUN |LIN;inp;L$;15| ...) ; compiling (DEFUN |LIN;out;L$;16| ...) ; compiling (DEFUN |LIN;out;L$;17| ...) ; compiling (DEFUN |LIN;coerce;$Of;18| ...) ; compiling (DEFUN |LinearOperator| ...) ; compiling (DEFUN |LinearOperator;| ...) ; compiling (MAKEPROP (QUOTE |LinearOperator|) ...)
; /var/zope2/var/LatexWiki/LIN.NRLIB/LIN.fasl written ; compilation finished in 0:00:01.152 ------------------------------------------------------------------------ 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
Y1X1:=Y1*X1

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

\label{eq9}\left[ 1, \: 1 \right](9)
Type: DirectProduct?(2,NonNegativeInteger?)
axiom
XY11:=X1 Y1

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

\label{eq11}\left[ 1, \: 1 \right](11)
Type: DirectProduct?(2,NonNegativeInteger?)
axiom
YX11:= Y1 X1

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

\label{eq13}\left[ 0, \: 0 \right](13)
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{eq14}\left[ 
\begin{array}{cc}
{x_{1, \: 1}}&{x_{1, \: 2}}
\
{x_{2, \: 1}}&{x_{2, \: 2}}
(14)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity(X2)

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

\label{eq16}\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}}}
(16)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity(XX21)

\label{eq17}\left[ 2, \: 1 \right](17)
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{eq18}\left[ 
\begin{array}{cc}
{y^{1, \: 1}}&{y^{1, \: 2}}
\
{y^{2, \: 1}}&{y^{2, \: 2}}
(18)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity(Y2)

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

\label{eq20}\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}}}
(20)
Type: LinearOperator?(2,Fraction(Polynomial(Integer)))
axiom
arity(XY22)

\label{eq21}\left[ 2, \: 2 \right](21)
Type: DirectProduct?(2,NonNegativeInteger?)
axiom
YX22:=Y2 X2
>> Error detected within library code: Improper index for contraction