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

Edit detail for LinearOperator revision 2 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 01:07:28 GMT-8
Note: examples

added:
    arity: % -> DirectProduct(2,NonNegativeInteger)

changed:
-    coerce: DirectProduct(dim,K) -> %
    coerce: Vector K -> %
    coerce: Vector % -> %

added:
    coerce: SquareMatrix(dim,K) -> %

added:
    arity(x:%):DirectProduct(2,NonNegativeInteger) == directProduct [rep(x).n,rep(x).m]

changed:
-      yn:=rep(y).n
-      xm:=rep(x).m
      yn:=rep(y).n  -- outputs of y
      xm:=rep(x).m  -- inputs of x

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

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

added:
    coerce(x:SquareMatrix(dim,K)):% == per [2,0,x::T]
    coerce(x:%):OutputForm == (rep(x).t)::OutputForm

added:

\begin{axiom}
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)
\end{axiom}

fricas
(1) -> <spad>
fricas
)abbrev domain LIN LinearOperator
LinearOperator(dim:NonNegativeInteger,K:CommutativeRing): Join(Ring,BiModule(K,K)) with
    arity: % -> DirectProduct(2,NonNegativeInteger)
    elt: (%,%) -> %
    id: %
    coerce: Vector K -> %
    coerce: Vector % -> %
    coerce: List K -> %
    coerce: 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(x).n+xm,yn+rep(x).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] coerce(x:Vector K):% == per [0,1,entries(x)::T] coerce(x:List K):% == per [1,0,entries(x)::T] coerce(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 coerce(x:SquareMatrix(dim,K)):% == per [2,0,x::T] coerce(x:%):OutputForm == (rep(x).t)::OutputForm</spad>
fricas
Compiling FriCAS source code from file 
      /var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/2311065628842128602-25px001.spad
      using old system compiler.
   LIN abbreviates domain LinearOperator 
------------------------------------------------------------------------
   initializing NRLIB LIN for LinearOperator 
   compiling into NRLIB LIN 
   importing List NonNegativeInteger
************* USER ERROR **********
available signatures for T$: 
    NONE
NEED T$: () -> ?
****** comp fails at level 1 with expression: ******
((DEF (T$) (NIL) (|CartesianTensor| 1 |dim| K)))
****** level 1  ******
x:= (DEF (T$) (NIL) (CartesianTensor (One) dim K))
m:= $EmptyMode
f:=
((((|#| #) (< #) (<= #) (= #) ...)))
>> Apparent user error: unspecified error

fricas
Y:LIN(2,FRAC POLY INT):=[y1,y2]::List FRAC POLY INT
LinearOperator is an unknown constructor and so is unavailable. Did you mean to use -> but type something different instead?