axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] 20090227.01.lxx.patch (Liu Xiaojun: Document Univariat


From: daly
Subject: [Axiom-developer] 20090227.01.lxx.patch (Liu Xiaojun: Document UnivariateSkewPolynomial)
Date: Sat, 28 Feb 2009 00:18:15 -0600

Liu Xiaojun's documentation for UnivariateSkewPolynomial was added to:

  Book Volume 0:    Jenks book
    add new domain example

  Book Volume 7.1:  Axiom Hyperdoc Pages
    add new hyperdoc page

  Book Volume 10.3: Axiom Domains
    add regression test
    add help pages

==========================================================================
diff --git a/books/bookvol0.pamphlet b/books/bookvol0.pamphlet
index b7f869d..cbe733b 100644
--- a/books/bookvol0.pamphlet
+++ b/books/bookvol0.pamphlet
@@ -48744,6 +48744,481 @@ page~\pageref{MultivariatePolynomialXmpPage}, and
 \ref{DistributedMultivariatePolynomialXmpPage} on 
 page~\pageref{DistributedMultivariatePolynomialXmpPage}.
 
+\section{UnivariateSkewPolynomial}
+\label{UnivariateSkewPolynomial}
+Skew or Ore polynomial rings provide a unified framework to
+compute with differential and difference equations.
+
+In the following, let A be an integral domain, equipped with two
+endomorphisms $\sigma$ and $\delta$ where:
+\begin{itemize}
+\item $\sigma$: A $->$ A is an injective ring endomorphism
+\item $\delta$: A $->$ A, the pseudo-derivation with respect to $\sigma$, 
+is an additive endomorphism with 
+$$
+     \delta(ab) = \sigma(a)\delta(b) + \delta(a)b
+$$    
+for all $a,b$ in A
+\end{itemize}
+
+The skew polynomial ring $[\Delta;\sigma,\delta]$ is the ring of 
+polynomials in $\Delta$ with coefficients in A, with the usual addition,
+while the product is given by
+$$
+ \Delta a = \sigma(a)\Delta + \delta(a)\quad{}{\rm\ for\ a\ in\ A}
+$$
+The two most important examples of skew polynomial rings are:
+\begin{itemize}
+\item $K(x)[D,1,\delta]$, where 1 is the identity on $K$ and $\delta$ is 
+the usual derviative, is the ring of differential polynomials
+\item $K_n [E,n,\mapsto n+1,0]$ is the ring of linear recurrence operators
+with polynomial coefficients
+\end{itemize}
+
+The UnivariateSkewPolynomialCategory (OREPCAT) provides a unified
+framework for polynomial rings in a non-central indeterminate over
+some coefficient ring R. The commutation relations between the
+indeterminate $x$ and the coefficient $t$ is given by 
+$$ 
+x r = \sigma(r) x + \delta(r)
+$$
+where $\sigma$ is a ring endomorphism of R
+and $\delta$ is a $\sigma$-derivation of R
+which is an additive map from R to R such that
+$$  
+\delta(rs) = \sigma(r) \delta(s) + \delta(r) s
+$$
+In case $\sigma$ is the identity map on R, a $\sigma$-derivation of R
+is just called a derivation. Here are some examples
+
+We start with a linear ordinary differential operator. First, we
+define the coefficient ring to be expressions in one variable $x$
+with fractional coefficients:
+
+\spadcommand{F:=EXPR(FRAC(INT))}
+
+Define Dx to be a derivative d/dx:
+
+\spadcommand{Dx:F->F:=f+->D(f,['x])}
+
+Define a skew polynomial ring over F with identity endomorphism as
+$\sigma$ and derivation d/dx as $\delta$:
+
+\spadcommand{D0:=OREUP('d,F,1,Dx)}
+
+\spadcommand{u:D0:=(operator 'u)(x)}
+$$
+u 
+\left(
+{x} 
+\right)
+$$
+
+\spadcommand{d:D0:='d}
+$$
+d 
+$$
+
+\spadcommand{a:D0:=u**3*d**3+u**2*d**2+u*d+1}
+$$
+{{{u 
+\left(
+{x} 
+\right)}^3}
+\  {d^3}}+{{{u 
+\left(
+{x} 
+\right)}^2}
+\  {d^2}}+{{u 
+\left(
+{x} 
+\right)}
+\  d}+1 
+$$
+
+\spadcommand{b:D0:=(u+1)*d**2+2*d}
+$$
+{{\left( {u 
+\left(
+{x} 
+\right)}+1
+\right)}
+\  {d^2}}+{2 \  d} 
+$$
+
+\spadcommand{r:=rightDivide(a,b)}
+$$
+\left[
+\begin{array}{c}
+\displaystyle
+{quotient={{{ \frac{{{u 
+\left(
+{x} 
+\right)}^3}}{{{u
+\left(
+{x} 
+\right)}+1}}}
+\  d}+{ \frac{{-{{{u 
+\left(
+{x} 
+\right)}^3}
+\  {{u \sb {{\ }} \sp {,}} 
+\left(
+{x} 
+\right)}}
+-{{u 
+\left(
+{x} 
+\right)}^3}+{{u
+\left(
+{x} 
+\right)}^2}}}{{{{u
+\left(
+{x} 
+\right)}^2}+{2
+\  {u 
+\left(
+{x} 
+\right)}}+1}}}}},\\
+\displaystyle
+\: {remainder={{{ \frac{{{2 \  {{u 
+\left(
+{x} 
+\right)}^3}
+\  {{u \sb {{\ }} \sp {,}} 
+\left(
+{x} 
+\right)}}+{3
+\  {{u 
+\left(
+{x} 
+\right)}^3}}+{u
+\left(
+{x} 
+\right)}}}{{{{u
+\left(
+{x} 
+\right)}^2}+{2
+\  {u 
+\left(
+{x} 
+\right)}}+1}}}
+\  d}+1}}
+\end{array}
+\right]
+$$
+
+\spadcommand{r.quotient}
+$$
+{{ \frac{{{u 
+\left(
+{x} 
+\right)}^3}}{{{u
+\left(
+{x} 
+\right)}+1}}}
+\  d}+{ \frac{{-{{{u 
+\left(
+{x} 
+\right)}^3}
+\  {{u \sb {{\ }} \sp {,}} 
+\left(
+{x} 
+\right)}}
+-{{u 
+\left(
+{x} 
+\right)}^3}+{{u
+\left(
+{x} 
+\right)}^2}}}{{{{u
+\left(
+{x} 
+\right)}^2}+{2
+\  {u 
+\left(
+{x} 
+\right)}}+1}}}
+$$
+
+\spadcommand{r.remainder}
+$$
+{{ \frac{{{2 \  {{u 
+\left(
+{x} 
+\right)}^3}
+\  {{u \sb {{\ }} \sp {,}} 
+\left(
+{x} 
+\right)}}+{3
+\  {{u 
+\left(
+{x} 
+\right)}^3}}+{u
+\left(
+{x} 
+\right)}}}{{{{u
+\left(
+{x} 
+\right)}^2}+{2
+\  {u 
+\left(
+{x} 
+\right)}}+1}}}
+\  d}+1 
+$$
+
+\subsection{A second example}
+)clear all
+ 
+As a second example, we consider the so-called Weyl algebra.
+
+Define the coefficient ring to be an ordinary polynomial over integers
+in one variable $t$
+\begin{verbatim}
+   R:=UP('t,INT)
+\end{verbatim}
+Define a skew polynomial ring over R with identity map as $\sigma$
+and derivation d/dt as $\delta$. The resulting algebra is then called
+a Weyl algebra. This is a simple ring over a division ring that is
+non-commutative, similar to the ring of matrices.
+
+\spadcommand{R:=UP('t,INT)}
+
+\spadcommand{W:=OREUP('x,R,1,D)}
+
+\spadcommand{t:W:='t}
+$$
+t 
+$$
+
+\spadcommand{x:W:='x}
+$$
+x 
+$$
+
+Let 
+
+\spadcommand{a:W:=(t-1)*x**4+(t**3+3*t+1)*x**2+2*t*x+t**3}
+$$
+{{\left( t -1 
+\right)}
+\  {x^4}}+{{\left( {t^3}+{3 \  t}+1 
+\right)}
+\  {x^2}}+{2 \  t \  x}+{t^3} 
+$$
+
+\spadcommand{b:W:=(6*t**4+2*t**2)*x**3+3*t**2*x**2}
+$$
+{{\left( {6 \  {t^4}}+{2 \  {t^2}} 
+\right)}
+\  {x^3}}+{3 \  {t^2} \  {x^2}} 
+$$
+
+Then
+
+\spadcommand{a*b}
+$$
+\begin{array}{l}
+{{\left( {6 \  {t^5}} -{6 \  {t^4}}+{2 \  {t^3}} -{2 \  {t^2}} 
+\right)}
+\  {x^7}}+{{\left( {{96} \  {t^4}} -{{93} \  {t^3}}+{{13} \  {t^2}} -{{16} \  
+t} 
+\right)}
+\  {x^6}}+\\
+{{\left( {6 \  {t^7}}+{{20} \  {t^5}}+{6 \  {t^4}}+{{438} \  {t^3}} 
+-{{406} \  {t^2}} -{24} 
+\right)}
+\  {x^5}}+\\
+{{\left( {{48} \  {t^6}}+{{15} \  {t^5}}+{{152} \  {t^4}}+{{61} \  
+{t^3}}+{{603} \  {t^2}} -{{532} \  t} -{36} 
+\right)}
+\  {x^4}}+\\
+{{\left( {6 \  {t^7}}+{{74} \  {t^5}}+{{60} \  {t^4}}+{{226} \  
+{t^3}}+{{116} \  {t^2}}+{{168} \  t} -{140} 
+\right)}
+\  {x^3}}+\\
+{{\left( {3 \  {t^5}}+{6 \  {t^3}}+{{12} \  {t^2}}+{{18} \  t}+6 
+\right)}
+\  {x^2}} 
+\end{array}
+$$
+
+\spadcommand{a**3}
+$$
+\begin{array}{l}
+{{\left( {t^3} -{3 \  {t^2}}+{3 \  t} -1 
+\right)}
+\  {x^{12}}}+{{\left( {3 \  {t^5}} -{6 \  {t^4}}+{{12} \  {t^3}} -{{15} \  
+{t^2}}+{3 \  t}+3 
+\right)}
+\  {x^{10}}}+\\
+{{\left( {6 \  {t^3}} -{{12} \  {t^2}}+{6 \  t} 
+\right)}
+\  {x^9}}+{{\left( {3 \  {t^7}} -{3 \  {t^6}}+{{21} \  {t^5}} -{{18} \  
+{t^4}}+{{24} \  {t^3}} -{9 \  {t^2}} -{{15} \  t} -3 
+\right)}
+\  {x^8}}+\\
+{{\left( {{12} \  {t^5}} -{{12} \  {t^4}}+{{36} \  {t^3}} -{{24} \  
+{t^2}} -{{12} \  t} 
+\right)}
+\  {x^7}}+\\
+{{\left( {t^9}+{{15} \  {t^7}} -{3 \  {t^6}}+{{45} \  {t^5}}+{6 \  
+{t^4}}+{{36} \  {t^3}}+{{15} \  {t^2}}+{9 \  t}+1 
+\right)}
+\  {x^6}}+\\
+{{\left( {6 \  {t^7}}+{{48} \  {t^5}}+{{54} \  {t^3}}+{{36} \  
+{t^2}}+{6 \  t} 
+\right)}
+\  {x^5}}+\\
+{{\left( {3 \  {t^9}}+{{21} \  {t^7}}+{3 \  {t^6}}+{{39} \  
+{t^5}}+{{18} \  {t^4}}+{{39} \  {t^3}}+{{12} \  {t^2}} 
+\right)}
+\  {x^4}}+\\
+{{\left( {{12} \  {t^7}}+{{36} \  {t^5}}+{{12} \  {t^4}}+{8 \  
+{t^3}} 
+\right)}
+\  {x^3}}+\\
+{{\left( {3 \  {t^9}}+{9 \  {t^7}}+{3 \  {t^6}}+{{12} \  {t^5}} 
+\right)}
+\  {x^2}}+{6 \  {t^7} \  x}+{t^9} 
+\end{array}
+$$
+
+
+\subsection{A third example}
+)clear all
+
+As a third example, we construct a difference operator algebra over
+the ring of EXPR(INT) by using an automorphism S defined by a
+``shift'' operation S:EXPR(INT) $->$ EXPR(INT)
+$$
+   s(e)(n) = e(n+1)
+$$
+and an S-derivation defined by DF:EXPR(INT) $->$ EXPR(INT) as
+$$
+   DF(e)(n) = e(n+1)-e(n)
+$$
+Define S to be a ``shift'' operator, which acts on expressions with 
+the discrete variable $n$:
+
+\spadcommand{S:EXPR(INT)->EXPR(INT):=e+->eval(e,[n],[n+1])}
+
+Define DF to be a ``difference'' operator, which acts on expressions
+with a discrete variable $n$:
+
+\spadcommand{DF:EXPR(INT)->EXPR(INT):=e+->eval(e,[n],[n+1])-e}
+
+Then define the difference operator algebra D0:
+
+\spadcommand{D0:=OREUP('D,EXPR(INT),morphism S,DF)}
+
+\spadcommand{u:=(operator 'u)[n]}
+$$
+u 
+\left(
+{n} 
+\right)
+$$
+
+\spadcommand{L:D0:='D+u}
+$$
+D+{u 
+\left(
+{n} 
+\right)}
+$$
+
+\spadcommand{L**2}
+$$
+{D^2}+{2 \  {u 
+\left(
+{n} 
+\right)}
+\  D}+{{u 
+\left(
+{n} 
+\right)}^2}
+$$
+
+\subsection{A fourth example}
+)clear all
+
+As a fourth example, we construct a skew polynomial ring by using an
+inner derivation $\delta$ induced by a fixed $y$ in R:
+$$
+   \delta(r) = yr - ry
+$$
+First we should expose the constructor SquareMatrix so it is visible
+in the interpreter:
+\begin{verbatim}
+)set expose add constructor SquareMatrix
+\end{verbatim}
+
+Define R to be the square matrix with integer entries:
+
+\spadcommand{R:=SQMATRIX(2,INT)}
+$$
+SquareMatrix(2,Integer) 
+$$
+
+\spadcommand{y:R:=matrix [ [1,1],[0,1] ]}
+$$
+\left[
+\begin{array}{cc}
+1 & 1 \\ 
+0 & 1 
+\end{array}
+\right]
+$$
+
+Define the inner derivative $\delta$:
+
+\spadcommand{delta:R->R:=r+->y*r-r*y}
+
+Define S to be a skew polynomial determined by $\sigma = 1$
+and $\delta$ as an inner derivative:
+
+\spadcommand{S:=OREUP('x,R,1,delta)}
+
+\spadcommand{x:S:='x}
+$$
+x 
+$$
+
+\spadcommand{a:S:=matrix [[2,3],[1,1]]}
+$$
+\left[
+\begin{array}{cc}
+2 & 3 \\ 
+1 & 1 
+\end{array}
+\right]
+$$
+
+\spadcommand{x**2*a}
+$$
+{{\left[ 
+\begin{array}{cc}
+2 & 3 \\ 
+1 & 1 
+\end{array}
+\right]}
+\  {x^2}}+{{\left[ 
+\begin{array}{cc}
+2 & -2 \\ 
+0 & -2 
+\end{array}
+\right]}
+\  x}+{\left[ 
+\begin{array}{cc}
+0 & -2 \\ 
+0 & 0 
+\end{array}
+\right]}
+$$
+
+
 \section{UniversalSegment}
 \label{UniversalSegmentXmpPage}
 
diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index edfdf79..2972ab5 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -8219,83 +8219,32 @@ Automorphism(R:Ring): Join(Group, Eltable(R, R)) with
 )clear all
 --S 1
 lm := [3,5,7,11]
---R 
---R
---R   (1)  [3,5,7,11]
---R                                                   Type: List 
PositiveInteger
 --E 1
 
---S 2
-modTree(12,lm)
---R 
---R
---R   (2)  [0,2,5,1]
---R                                                           Type: List 
Integer
---E 2
-
 --S 3
 t := balancedBinaryTree(#lm, 0)
---R 
---R
---R   (3)  [[0,0,0],0,[0,0,0]]
---R                                  Type: BalancedBinaryTree 
NonNegativeInteger
 --E 3
 
 --S 4
 setleaves!(t,lm)
---R 
---R
---R   (4)  [[3,0,5],0,[7,0,11]]
---R                                  Type: BalancedBinaryTree 
NonNegativeInteger
 --E 4
 
 --S 5
 mapUp!(t,_*)
---R 
---R
---R   (5)  1155
---R                                                        Type: 
PositiveInteger
 --E 5
 
 --S 6
 t
---R 
---R
---R   (6)  [[3,15,5],1155,[7,77,11]]
---R                                  Type: BalancedBinaryTree 
NonNegativeInteger
 --E 6
 
 --S 7
 mapDown!(t,12,_rem)
---R 
---R
---R   (7)  [[0,12,2],12,[5,12,1]]
---R                                  Type: BalancedBinaryTree 
NonNegativeInteger
 --E 7
 
 --S 8
 leaves %
---R 
---R
---R   (8)  [0,2,5,1]
---R                                                Type: List 
NonNegativeInteger
 --E 8
 
---S 9
-squares := [x**2 rem m for x in % for m in lm]
---R 
---R
---R   (9)  [0,4,4,1]
---R                                                Type: List 
NonNegativeInteger
---E 9
-
---S 10
-chineseRemainder(%,lm)
---R 
---R
---R   (10)  144
---R                                                        Type: 
PositiveInteger
---E 10
 )spool
 )lisp (bye)
 @
@@ -105537,6 +105486,683 @@ 
UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen):_
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{domain OREUP UnivariateSkewPolynomial}
+<<UnivariateSkewPolynomial.input>>=
+)sys rm -f UnivariateSkewPolynomial.output
+)spool UnivariateSkewPolynomial.output
+)set message test on
+)set message auto off
+)set message type off
+)clear all
+
+--S 1 of 33
+F:=EXPR(FRAC(INT))
+--R 
+--R
+--R   (1)  Expression Fraction Integer
+--E 1
+
+--S 2 of 33
+Dx:F->F:=f+->D(f,['x])
+--R 
+--R
+--R   (2)  theMap(Closure)
+--E 2
+
+--S 3 of 33
+D0:=OREUP('d,F,1,Dx)
+--R 
+--R
+--R   (3)
+--I  UnivariateSkewPolynomial(d,Expression Fraction Integer,R -> R,theMap 
LAMBDA-C
+--I  LOSURE(NIL,NIL,NIL,G9057 envArg,SPADCALL(G9057,coerceOrCroak(CONS(QUOTE 
List 
+--I  Variable x,wrap LIST QUOTE x),QUOTE List Symbol,QUOTE 
*1;anonymousFunction;2;
+--I  frame0;internal),ELT(*1;anonymousFunction;2;frame0;internal;MV,0))))
+--E 3
+
+--S 4 of 33
+u:D0:=(operator 'u)(x)
+--R 
+--R
+--R   (4)  u(x)
+--E 4
+
+--S 5 of 33
+d:D0:='d
+--R 
+--R
+--R   (5)  d
+--E 5
+
+--S 6 of 33
+a:D0:=u^3*d^3+u^2*d^2+u*d+1
+--R 
+--R
+--R            3 3       2 2
+--R   (6)  u(x) d  + u(x) d  + u(x)d + 1
+--E 6
+
+--S 7 of 33
+b:D0:=(u+1)*d^2+2*d
+--R 
+--R
+--R                   2
+--R   (7)  (u(x) + 1)d  + 2d
+--E 7
+
+--S 8 of 33
+r:=rightDivide(a,b)
+--R 
+--R
+--R   (8)
+--R                                 3 ,          3       2
+--R                    3      - u(x) u (x) - u(x)  + u(x)
+--R                u(x)
+--R   [quotient= -------- d + ----------------------------,
+--R              u(x) + 1               2
+--R                                 u(x)  + 2u(x) + 1
+--R                    3 ,           3
+--R               2u(x) u (x) + 3u(x)  + u(x)
+--R
+--R    remainder= --------------------------- d + 1]
+--R                        2
+--R                    u(x)  + 2u(x) + 1
+--E 8
+
+--S 9 of 33
+r.quotient
+--R 
+--R
+--R                           3 ,          3       2
+--R              3      - u(x) u (x) - u(x)  + u(x)
+--R          u(x)
+--R   (9)  -------- d + ----------------------------
+--R        u(x) + 1               2
+--R                           u(x)  + 2u(x) + 1
+--E 9
+
+--S 10 of 33
+r.remainder
+--R 
+--R
+--R              3 ,           3
+--R         2u(x) u (x) + 3u(x)  + u(x)
+--R
+--R   (10)  --------------------------- d + 1
+--R                  2
+--R              u(x)  + 2u(x) + 1
+--E 10
+
+)clear all
+ 
+--S 11 of 33
+R:=UP('t,INT)
+--R 
+--R
+--R   (1)  UnivariatePolynomial(t,Integer)
+--E 11
+
+--S 12 of 33
+W:=OREUP('x,R,1,D)
+--R 
+--R
+--R   (2)
+--R  UnivariateSkewPolynomial(x,UnivariatePolynomial(t,Integer),R -> 
R,theMap(DIFR
+--I  ING-;D;2S;1,411))
+--E 12
+
+--S 13 of 33
+t:W:='t
+--R 
+--R
+--R   (3)  t
+--E 13
+
+--S 14 of 33
+x:W:='x
+--R 
+--R
+--R   (4)  x
+--E 14
+
+--S 15 of 33
+a:W:=(t-1)*x^4+(t^3+3*t+1)*x^2+2*t*x+t^3
+--R 
+--R
+--R                4     3           2           3
+--R   (5)  (t - 1)x  + (t  + 3t + 1)x  + 2t x + t
+--E 15
+
+--S 16 of 33
+b:W:=(6*t^4+2*t^2)*x^3+3*t^2*x^2
+--R 
+--R
+--R           4     2  3     2 2
+--R   (6)  (6t  + 2t )x  + 3t x
+--E 16
+
+--S 17 of 33
+a*b
+--R 
+--R
+--R   (7)
+--R        5     4     3     2  7       4      3      2        6
+--R     (6t  - 6t  + 2t  - 2t )x  + (96t  - 93t  + 13t  - 16t)x
+--R   + 
+--R        7      5     4       3       2       5
+--R     (6t  + 20t  + 6t  + 438t  - 406t  - 24)x
+--R   + 
+--R         6      5       4      3       2              4
+--R     (48t  + 15t  + 152t  + 61t  + 603t  - 532t - 36)x
+--R   + 
+--R        7      5      4       3       2               3
+--R     (6t  + 74t  + 60t  + 226t  + 116t  + 168t - 140)x
+--R   + 
+--R        5     3      2            2
+--R     (3t  + 6t  + 12t  + 18t + 6)x
+--E 17
+
+--S 18 of 33
+a^3
+--R 
+--R
+--R   (8)
+--R       3     2           12      5     4      3      2           10
+--R     (t  - 3t  + 3t - 1)x   + (3t  - 6t  + 12t  - 15t  + 3t + 3)x
+--R   + 
+--R        3      2       9      7     6      5      4      3     2            
8
+--R     (6t  - 12t  + 6t)x  + (3t  - 3t  + 21t  - 18t  + 24t  - 9t  - 15t - 3)x
+--R   + 
+--R         5      4      3      2        7
+--R     (12t  - 12t  + 36t  - 24t  - 12t)x
+--R   + 
+--R       9      7     6      5     4      3      2           6
+--R     (t  + 15t  - 3t  + 45t  + 6t  + 36t  + 15t  + 9t + 1)x
+--R   + 
+--R        7      5      3      2       5
+--R     (6t  + 48t  + 54t  + 36t  + 6t)x
+--R   + 
+--R        9      7     6      5      4      3      2  4
+--R     (3t  + 21t  + 3t  + 39t  + 18t  + 39t  + 12t )x
+--R   + 
+--R         7      5      4     3  3      9     7     6      5  2     7     9
+--R     (12t  + 36t  + 12t  + 8t )x  + (3t  + 9t  + 3t  + 12t )x  + 6t x + t
+--E 18
+
+)clear all
+ 
+--S 19 of 33
+S:EXPR(INT)->EXPR(INT):=e+->eval(e,[n],[n+1])
+--R 
+--R
+--R   (1)  theMap(Closure)
+--E 19
+
+--S 20 of 33
+DF:EXPR(INT)->EXPR(INT):=e+->eval(e,[n],[n+1])-e
+--R 
+--R
+--R   (2)  theMap(Closure)
+--E 20
+
+--S 21 of 33
+D0:=OREUP('D,EXPR(INT),morphism S,DF)
+--R 
+--R
+--R   (3)
+--I  UnivariateSkewPolynomial(D,Expression Integer,R -> R,theMap 
LAMBDA-CLOSURE(NI
+--I  L,NIL,NIL,G9384 envArg,SPADCALL(SPADCALL(G9384,coerceOrCroak(CONS(QUOTE 
List 
+--I  Variable n,wrap LIST QUOTE n),QUOTE List Expression Integer,QUOTE 
*1;anonymou
+--I  sFunction;9;frame0;internal),coerceOrCroak(CONS(QUOTE List Polynomial 
Integer
+--I  ,wrap LIST SPADCALL(QUOTE 1(n,1 0),QUOTE 
0,ELT(*1;anonymousFunction;9;frame0;
+--I  internal;MV,0))),QUOTE List Expression Integer,QUOTE 
*1;anonymousFunction;9;f
+--I  
rame0;internal),ELT(*1;anonymousFunction;9;frame0;internal;MV,1)),G9384,ELT(*
+--I  1;anonymousFunction;9;frame0;internal;MV,2))))
+--E 21
+
+--S 22 of 33
+u:=(operator 'u)[n]
+--R 
+--R
+--R   (4)  u(n)
+--E 22
+
+--S 23 of 33
+L:D0:='D+u
+--R 
+--R
+--R   (5)  D + u(n)
+--E 23
+
+--S 24 of 33
+L^2
+--R 
+--R
+--R         2                2
+--R   (6)  D  + 2u(n)D + u(n)
+--E 24
+
+)clear all
+ 
+--S 25 of 33
+)set expose add constructor SquareMatrix
+--R 
+--I   SquareMatrix is now explicitly exposed in frame frame0 
+--E 25
+
+--S 26 of 33
+R:=SQMATRIX(2,INT)
+--R 
+--R
+--R   (1)  SquareMatrix(2,Integer)
+--E 26
+
+--S 27 of 33
+y:R:=matrix [[1,1],[0,1]]
+--R 
+--R
+--R        +1  1+
+--R   (2)  |    |
+--R        +0  1+
+--E 27
+
+--S 28 of 33
+delta:R->R:=r+->y*r-r*y
+--R 
+--R
+--R   (3)  theMap(Closure)
+--E 28
+
+--S 29 of 33
+S:=OREUP('x,R,1,delta)
+--R 
+--R
+--R   (4)
+--I  UnivariateSkewPolynomial(x,SquareMatrix(2,Integer),R -> R,theMap 
LAMBDA-CLOSU
+--I  RE(NIL,NIL,NIL,G9459 
envArg,SPADCALL(SPADCALL(getValueFromEnvironment(QUOTE y
+--I  ,QUOTE 
SquareMatrix(2,Integer)),G9459,ELT(*1;anonymousFunction;13;frame0;inte
+--I  rnal;MV,0)),SPADCALL(G9459,getValueFromEnvironment(QUOTE y,QUOTE 
SquareMatrix
+--I  
(2,Integer)),ELT(*1;anonymousFunction;13;frame0;internal;MV,0)),ELT(*1;anonym
+--I  ousFunction;13;frame0;internal;MV,1))))
+--E 29
+
+--S 30 of 33
+x:S:='x
+--R 
+--R
+--R   (5)  x
+--E 30
+
+--S 31 of 33
+a:S:=matrix [[2,3],[1,1]]
+--R 
+--R
+--R        +2  3+
+--R   (6)  |    |
+--R        +1  1+
+--E 31
+
+--S 32 of 33
+x^2*a
+--R 
+--R
+--R        +2  3+ 2   +2  - 2+    +0  - 2+
+--R   (7)  |    |x  + |      |x + |      |
+--R        +1  1+     +0  - 2+    +0   0 +
+--E 32
+
+--S 33 of 33
+)show UnivariateSkewPolynomial
+--R 
+--R UnivariateSkewPolynomial(x: Symbol,R: Ring,sigma: Automorphism R,delta: (R 
-> R))  is a domain constructor
+--R Abbreviation for UnivariateSkewPolynomial is OREUP 
+--R This constructor is not exposed in this frame.
+--R Issue )edit bookvol10.3.spad.pamphlet to see algebra source code for OREUP 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?=? : (%,%) -> Boolean
+--R 1 : () -> %                           0 : () -> %
+--R ?^? : (%,PositiveInteger) -> %        apply : (%,R,R) -> R
+--R coefficients : % -> List R            coerce : Variable x -> %
+--R coerce : R -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              degree : % -> NonNegativeInteger
+--R hash : % -> SingleInteger             latex : % -> String
+--R leadingCoefficient : % -> R           one? : % -> Boolean
+--R recip : % -> Union(%,"failed")        reductum : % -> %
+--R retract : % -> R                      sample : () -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R ?*? : (NonNegativeInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %
+--R characteristic : () -> NonNegativeInteger
+--R coefficient : (%,NonNegativeInteger) -> R
+--R coerce : Fraction Integer -> % if R has RETRACT FRAC INT
+--R content : % -> R if R has GCDDOM
+--R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
+--R leftDivide : (%,%) -> Record(quotient: %,remainder: %) if R has FIELD
+--R leftExactQuotient : (%,%) -> Union(%,"failed") if R has FIELD
+--R leftExtendedGcd : (%,%) -> Record(coef1: %,coef2: %,generator: %) if R has 
FIELD
+--R leftGcd : (%,%) -> % if R has FIELD
+--R leftLcm : (%,%) -> % if R has FIELD
+--R leftQuotient : (%,%) -> % if R has FIELD
+--R leftRemainder : (%,%) -> % if R has FIELD
+--R minimumDegree : % -> NonNegativeInteger
+--R monicLeftDivide : (%,%) -> Record(quotient: %,remainder: %) if R has INTDOM
+--R monicRightDivide : (%,%) -> Record(quotient: %,remainder: %) if R has 
INTDOM
+--R monomial : (R,NonNegativeInteger) -> %
+--R primitivePart : % -> % if R has GCDDOM
+--R retract : % -> Fraction Integer if R has RETRACT FRAC INT
+--R retract : % -> Integer if R has RETRACT INT
+--R retractIfCan : % -> Union(R,"failed")
+--R retractIfCan : % -> Union(Fraction Integer,"failed") if R has RETRACT FRAC 
INT
+--R retractIfCan : % -> Union(Integer,"failed") if R has RETRACT INT
+--R rightDivide : (%,%) -> Record(quotient: %,remainder: %) if R has FIELD
+--R rightExactQuotient : (%,%) -> Union(%,"failed") if R has FIELD
+--R rightExtendedGcd : (%,%) -> Record(coef1: %,coef2: %,generator: %) if R 
has FIELD
+--R rightGcd : (%,%) -> % if R has FIELD
+--R rightLcm : (%,%) -> % if R has FIELD
+--R rightQuotient : (%,%) -> % if R has FIELD
+--R rightRemainder : (%,%) -> % if R has FIELD
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R
+--E 33
+)set expose drop constructor SquareMatrix
+
+)spool
+)lisp (bye)
+ 
+@
+<<UnivariateSkewPolynomial.help>>=
+====================================================================
+UnivariateSkewPolynomial examples
+====================================================================
+
+Skew or Ore polynomial rings provide a unified framework to
+compute with differential and difference equations.
+
+In the following, let A be an integral domain, equipped with two
+endomorphisms \sigma and \delta where:
+
+ \sigma: A -> A is an injective ring endomorphism
+ \delta: A -> A, the pseudo-derivation with respect to \sigma, 
+         is an additive endomorphism with 
+
+     \delta(ab) = \sigma(a)\delta(b) + \delta(a)b
+    
+         for all a,b in A
+
+Note that in the domains and categories below, these properties are
+not checked.
+
+The skew polynomial ring [\Delta;\sigma,\delta] is the ring of 
+polynomials in \Delta with coefficients in A, with the usual addition,
+while the product is given by
+
+ \Delta a = \sigma(a)\Delta + \delta(a) for a in A
+
+The two most important examples of skew polynomial rings are:
+
+  K(x)[D,1,\delta], where 1 is the identity on K and \delta is 
+                    the usual derviative, is the ring of differential
+                    polynomials
+
+  K [E,n,\mapsto n+1,0] is the ring of linear recurrence operators
+   n                    with polynomial coefficients
+
+
+_____________________________________________________________________
+
+For example, 
+
+The UnivariateSkewPolynomialCategory (OREPCAT) provides a unified
+framework for polynomial rings in a non-central indeterminate over
+some coefficient ring R. The commutation relations between the
+indeterminate x and the coefficient t is given by 
+
+   x r = \sigma(r) x + \delta(r)
+
+where \sigma is a ring endomorphism of R
+and   \delta is a \sigma-derivation of R
+which is an additive map from R to R such that
+  
+   \delta(rs) = \sigma(r) \delta(s) + \delta(r) s
+
+In case \sigma is the identity map on R, a \sigma-derivation of R
+is just called a derivation. Here are some examples
+
+We start with a linear ordinary differential operator. First, we
+define the coefficient ring to be expressions in one variable x
+with fractional coefficients:
+
+   F:=EXPR(FRAC(INT))
+
+Define Dx to be a derivative d/dx:
+
+   Dx:F->F:=f+->D(f,['x])
+
+Define a skew polynomial ring over F with identity endomorphism as
+\sigma and derivation d/dx as \delta:
+
+   D0:=OREUP('d,F,1,Dx)
+
+   u:D0:=(operator 'u)(x)
+
+   d:D0:='d
+
+   a:D0:=u^3*d^3+u^2*d^2+u*d+1
+
+            3 3       2 2
+        u(x) d  + u(x) d  + u(x)d + 1
+
+   b:D0:=(u+1)*d^2+2*d
+
+                   2
+        (u(x) + 1)d  + 2d
+
+   r:=rightDivide(a,b)
+
+                                 3 ,          3       2
+                    3      - u(x) u (x) - u(x)  + u(x)
+                u(x)
+   [quotient= -------- d + ----------------------------,
+              u(x) + 1               2
+                                 u(x)  + 2u(x) + 1
+                    3 ,           3
+               2u(x) u (x) + 3u(x)  + u(x)
+
+    remainder= --------------------------- d + 1]
+                        2
+                    u(x)  + 2u(x) + 1
+
+
+   r.quotient
+
+                           3 ,          3       2
+              3      - u(x) u (x) - u(x)  + u(x)
+          u(x)
+        -------- d + ----------------------------
+        u(x) + 1               2
+                           u(x)  + 2u(x) + 1
+
+
+   r.remainder
+
+              3 ,           3
+         2u(x) u (x) + 3u(x)  + u(x)
+
+         --------------------------- d + 1
+                  2
+              u(x)  + 2u(x) + 1
+
+
+_____________________________________________________________________
+
+   )clear all
+
+As a second example, we consider the so-called Weyl algebra.
+
+Define the coefficient ring to be an ordinary polynomial over integers
+in one variable t
+ 
+   R:=UP('t,INT)
+
+Define a skew polynomial ring over R with identity map as \sigma
+and derivation d/dt as \delta. The resulting algebra is then called
+a Weyl algebra. This is a simple ring over a division ring that is
+non-commutative, similar to the ring of matrices.
+
+   W:=OREUP('x,R,1,D)
+
+   t:W:='t
+
+   x:W:='x
+
+Let 
+
+   a:W:=(t-1)*x^4+(t^3+3*t+1)*x^2+2*t*x+t^3
+
+                4     3           2           3
+        (t - 1)x  + (t  + 3t + 1)x  + 2t x + t
+
+   b:W:=(6*t^4+2*t^2)*x^3+3*t^2*x^2
+
+           4     2  3     2 2
+        (6t  + 2t )x  + 3t x
+
+Then
+
+   a*b
+           5     4     3     2  7       4      3      2        6
+        (6t  - 6t  + 2t  - 2t )x  + (96t  - 93t  + 13t  - 16t)x
+      + 
+           7      5     4       3       2       5
+        (6t  + 20t  + 6t  + 438t  - 406t  - 24)x
+      + 
+            6      5       4      3       2              4
+        (48t  + 15t  + 152t  + 61t  + 603t  - 532t - 36)x
+      + 
+           7      5      4       3       2               3
+        (6t  + 74t  + 60t  + 226t  + 116t  + 168t - 140)x
+      + 
+           5     3      2            2
+        (3t  + 6t  + 12t  + 18t + 6)x
+
+   a^3
+         3     2           12      5     4      3      2           10
+       (t  - 3t  + 3t - 1)x   + (3t  - 6t  + 12t  - 15t  + 3t + 3)x
+     + 
+          3      2       9      7     6      5      4      3     2            8
+       (6t  - 12t  + 6t)x  + (3t  - 3t  + 21t  - 18t  + 24t  - 9t  - 15t - 3)x
+     + 
+           5      4      3      2        7
+       (12t  - 12t  + 36t  - 24t  - 12t)x
+     + 
+         9      7     6      5     4      3      2           6
+       (t  + 15t  - 3t  + 45t  + 6t  + 36t  + 15t  + 9t + 1)x
+     + 
+          7      5      3      2       5
+       (6t  + 48t  + 54t  + 36t  + 6t)x
+     + 
+          9      7     6      5      4      3      2  4
+       (3t  + 21t  + 3t  + 39t  + 18t  + 39t  + 12t )x
+     + 
+           7      5      4     3  3      9     7     6      5  2     7     9
+       (12t  + 36t  + 12t  + 8t )x  + (3t  + 9t  + 3t  + 12t )x  + 6t x + t
+
+
+_____________________________________________________________________
+
+   )clear all 
+
+As a third example, we construct a difference operator algebra over
+the ring of EXPR(INT) by using an automorphism S defined by a
+"shift" operation S:EXPR(INT) -> EXPR(INT)
+
+   s(e)(n) = e(n+1)
+
+and an S-derivation defined by DF:EXPR(INT) -> EXPR(INT) as
+
+   DF(e)(n) = e(n+1)-e(n)
+
+Define S to be a "shift" operator, which acts on expressions with 
+the discrete variable n:
+
+   S:EXPR(INT)->EXPR(INT):=e+->eval(e,[n],[n+1])
+
+Define DF to be a "difference" operator, which acts on expressions
+with a discrete variable n:
+
+   DF:EXPR(INT)->EXPR(INT):=e+->eval(e,[n],[n+1])-e
+
+Then define the difference operator algebra D0:
+
+   D0:=OREUP('D,EXPR(INT),morphism S,DF)
+
+   u:=(operator 'u)[n]
+
+   L:D0:='D+u
+
+        D + u(n)
+
+   L^2
+
+         2                2
+        D  + 2u(n)D + u(n)
+
+_____________________________________________________________________
+
+   )clear all
+
+As a fourth example, we construct a skew polynomial ring by using an
+inner derivation \delta induced by a fixed y in R:
+
+   \delta(r) = yr - ry
+
+First we should expose the constructor SquareMatrix so it is visible
+in the interpreter:
+
+   )set expose add constructor SquareMatrix
+
+Define R to be the square matrix with integer entries:
+
+   R:=SQMATRIX(2,INT)
+
+   y:R:=matrix [[1,1],[0,1]]
+        +1  1+
+        |    |
+        +0  1+
+
+Define the inner derivative \delta:
+
+   delta:R->R:=r+->y*r-r*y
+
+Define S to be a skew polynomial determined by \sigma = 1
+and \delta as an inner derivative:
+
+   S:=OREUP('x,R,1,delta)
+
+   x:S:='x
+
+   a:S:=matrix [[2,3],[1,1]]
+        +2  3+
+        |    |
+        +1  1+
+
+   x^2*a
+        +2  3+ 2   +2  - 2+    +0  - 2+
+        |    |x  + |      |x + |      |
+        +1  1+     +0  - 2+    +0   0 +
+
+
+See Also:
+o )show UnivariateSkewPolynomial
+o )show UnivariateSkewPolynomialCategory
+o )show SquareMatrix
+
+@
 \pagehead{UnivariateSkewPolynomial}{OREUP}
 \pagepic{ps/v103univariateskewpolynomial.ps}{OREUP}{1.00}
 {\bf See}\\
@@ -105604,7 +106230,7 @@ 
UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen):_
 ++   This is the domain of univariate skew polynomials over an Ore
 ++   coefficient field in a named variable.
 ++   The multiplication is given by \spad{x a = \sigma(a) x + \delta a}.
-UnivariateSkewPolynomial(x:Symbol, R:Ring, sigma:Automorphism R, delta: R -> 
R):
+UnivariateSkewPolynomial(x:Symbol,R:Ring,sigma:Automorphism R,delta: R -> R):
  UnivariateSkewPolynomialCategory R with
    coerce: Variable x -> %
      ++ coerce(x) returns x as a skew-polynomial.
diff --git a/books/bookvol7.1.pamphlet b/books/bookvol7.1.pamphlet
index e82869c..997c780 100644
--- a/books/bookvol7.1.pamphlet
+++ b/books/bookvol7.1.pamphlet
@@ -48292,6 +48292,10 @@ Multiple variable polynomials, recursive structure.
 {DistributedMultivariatePolyXmpPage}
 \newline
 Multiple variable polynomials, non-recursive structure.
+\menulink{UnivariateSkewPolynomial}
+{UnivariateSkewPolynomial}
+\newline
+Skew or Ore polynomials
 \endmenu
 \endscroll
 \autobuttons
@@ -60140,6 +60144,315 @@ Type: UnivariatePolynomial(b1,Fraction Polynomial 
Integer)
 \end{paste}\end{patch}
 
 @
+\section{oreup.ht}
+\pagehead{UnivariateSkewPolyXmpPage}{up.ht}{UnivariateSkewPolynomial}
+<<oreup.ht>>=
+\begin{page}{UnivariateSkewPolyXmpPage}{UnivariateSkewPolynomial}
+\beginscroll
+
+Skew or Ore polynomial rings provide a unified framework to
+compute with differential and difference equations.
+\newline
+In the following, let A be an integral domain, equipped with two
+endomorphisms \sigma and \delta where:
+\blankline
+\begin{items}
+\item \sigma: A -> A is an injective ring endomorphism
+\item \delta: A -> A, the pseudo-derivation with respect to 
+\sigma, is an additive endomorphism with 
+\blankline
+\delta(ab) = \sigma(a)\delta(b) + \delta(a)b
+\blankline
+for all a,b in A
+\end{items}
+\blankline
+The skew polynomial ring 
+[\Delta;\sigma,\delta] is the ring of 
+polynomials in \delta with coefficients in A, with the 
+usual addition, while the product is given by
+\blankline
+\delta a = \sigma(a)\delta + \delta(a) for a in A
+\blankline
+The two most important examples of skew polynomial rings are:
+\blankline
+K(x)[D,1,\delta]
+\blankline
+where 1 is the identity on K and \texht{$\delta$}{delta} is 
+the usual derviative, is the ring of differential polynomials
+\blankline
+  \subscriptIt{K}{n} [E,n,n->n+1,0] 
+\blankline
+is the ring of linear recurrence operators with polynomial coefficients
+
+\horizontalline
+The UnivariateSkewPolynomialCategory (OREPCAT) provides a unified
+framework for polynomial rings in a non-central indeterminate over
+some coefficient ring R. The commutation relations between the
+indeterminate x and the coefficient t is given by 
+\blankline
+   x r = \sigma(r) x + \delta(r)
+\blankline
+where \sigma is a ring endomorphism of R
+and   \delta is a \sigma-derivation of R
+which is an additive map from R to R such that
+\blankline
+   \delta(rs) = \sigma(r) \delta(s) + \delta(r) s
+\blankline
+In case \sigma is the identity map on R, a \sigma-derivation of R
+is just called a derivation. 
+\blankline
+We start with a linear ordinary differential operator. First, we
+define the coefficient ring to be expressions in one variable x
+with fractional coefficients:
+\blankline
+   F := EXPR(FRAC(INT))
+\blankline
+Define Dx to be a derivative d/dx:
+\blankline
+   Dx: F->F := f+->D(f,['x])
+\blankline
+Define a skew polynomial ring over F with identity endomorphism as
+\sigma and derivation d/dx as \delta:
+\begin{verbatim}
+   D0 := OREUP('d,F,1,Dx)
+\end{verbatim}
+\begin{verbatim}
+   u:D0 := (operator 'u)(x)
+\end{verbatim}
+\begin{verbatim}
+   d:D0 := 'd
+\end{verbatim}
+\begin{verbatim}
+   a:D0:=u^3*d^3+u^2*d^2+u*d+1
+
+            3 3       2 2
+        u(x) d  + u(x) d  + u(x)d + 1
+\end{verbatim}
+\begin{verbatim}
+   b:D0:=(u+1)*d^2+2*d
+
+                   2
+        (u(x) + 1)d  + 2d
+\end{verbatim}
+\begin{verbatim}
+   r:=rightDivide(a,b)
+
+                                 3 ,          3       2
+                    3      - u(x) u (x) - u(x)  + u(x)
+                u(x)
+   [quotient= -------- d + ----------------------------,
+              u(x) + 1               2
+                                 u(x)  + 2u(x) + 1
+                    3 ,           3
+               2u(x) u (x) + 3u(x)  + u(x)
+
+    remainder= --------------------------- d + 1]
+                        2
+                    u(x)  + 2u(x) + 1
+
+\end{verbatim}
+\begin{verbatim}
+   r.quotient
+
+                           3 ,          3       2
+              3      - u(x) u (x) - u(x)  + u(x)
+          u(x)
+        -------- d + ----------------------------
+        u(x) + 1               2
+                           u(x)  + 2u(x) + 1
+
+\end{verbatim}
+\begin{verbatim}
+   r.remainder
+
+              3 ,           3
+         2u(x) u (x) + 3u(x)  + u(x)
+
+         --------------------------- d + 1
+                  2
+              u(x)  + 2u(x) + 1
+\end{verbatim}
+
+\horizontalline
+
+   )clear all
+\blankline
+As a second example, we consider the so-called Weyl algebra.
+\blankline
+Define the coefficient ring to be an ordinary polynomial over integers
+in one variable t
+\blankline
+\begin{verbatim}
+   R := UP('t,INT)
+\end{verbatim}
+\blankline
+Define a skew polynomial ring over R with identity map as 
+\sigma
+and derivation d/dt as \delta. 
+The resulting algebra is then called a Weyl algebra:
+\blankline
+\begin{verbatim}
+   W := OREUP('x,R,1,D)
+
+   t:W := 't
+
+   x:W := 'x
+\end{verbatim}
+\blankline
+Let 
+\begin{verbatim}
+   a:W:=(t-1)*x^4+(t^3+3*t+1)*x^2+2*t*x+t^3
+
+                4     3           2           3
+        (t - 1)x  + (t  + 3t + 1)x  + 2t x + t
+\end{verbatim}
+\begin{verbatim}
+   b:W:=(6*t^4+2*t^2)*x^3+3*t^2*x^2
+
+           4     2  3     2 2
+        (6t  + 2t )x  + 3t x
+\end{verbatim}
+\blankline
+Then
+\begin{verbatim}
+   a*b
+           5     4     3     2  7       4      3      2        6
+        (6t  - 6t  + 2t  - 2t )x  + (96t  - 93t  + 13t  - 16t)x
+      + 
+           7      5     4       3       2       5
+        (6t  + 20t  + 6t  + 438t  - 406t  - 24)x
+      + 
+            6      5       4      3       2              4
+        (48t  + 15t  + 152t  + 61t  + 603t  - 532t - 36)x
+      + 
+           7      5      4       3       2               3
+        (6t  + 74t  + 60t  + 226t  + 116t  + 168t - 140)x
+      + 
+           5     3      2            2
+        (3t  + 6t  + 12t  + 18t + 6)x
+
+   a^3
+         3     2           12      5     4      3      2           10
+       (t  - 3t  + 3t - 1)x   + (3t  - 6t  + 12t  - 15t  + 3t + 3)x
+     + 
+          3      2       9      7     6      5      4      3     2            8
+       (6t  - 12t  + 6t)x  + (3t  - 3t  + 21t  - 18t  + 24t  - 9t  - 15t - 3)x
+     + 
+           5      4      3      2        7
+       (12t  - 12t  + 36t  - 24t  - 12t)x
+     + 
+         9      7     6      5     4      3      2           6
+       (t  + 15t  - 3t  + 45t  + 6t  + 36t  + 15t  + 9t + 1)x
+     + 
+          7      5      3      2       5
+       (6t  + 48t  + 54t  + 36t  + 6t)x
+     + 
+          9      7     6      5      4      3      2  4
+       (3t  + 21t  + 3t  + 39t  + 18t  + 39t  + 12t )x
+     + 
+           7      5      4     3  3      9     7     6      5  2     7     9
+       (12t  + 36t  + 12t  + 8t )x  + (3t  + 9t  + 3t  + 12t )x  + 6t x + t
+\end{verbatim}
+
+\horizontalline
+   )clear all 
+\blankline
+As a third example, we construct a difference operator algebra over
+the ring of EXPR(INT) by using an automorphism S defined by a
+"shift" operation S:EXPR(INT) -> EXPR(INT)
+\blankline
+\begin{verbatim}
+   s(e)(n) = e(n+1)
+\end{verbatim}
+\blankline
+and an S-derivation defined by DF:EXPR(INT) -> EXPR(INT) as
+\blankline
+\begin{verbatim}
+   DF(e)(n) = e(n+1)-e(n)
+\end{verbatim}
+\blankline
+Define S to be a "shift" operator, which acts on expressions with 
+the discrete variable n:
+\blankline
+\begin{verbatim}
+   S:EXPR(INT)->EXPR(INT):=e+->eval(e,[n],[n+1])
+\end{verbatim}
+\blankline
+Define DF to be a "difference" operator, which acts on expressions
+with a discrete variable n:
+\blankline
+\begin{verbatim}
+   DF:EXPR(INT)->EXPR(INT):=e+->eval(e,[n],[n+1])-e
+\end{verbatim}
+\blankline
+Then define the difference operator algebra D0:
+\blankline
+\begin{verbatim}
+   D0:=OREUP('D,EXPR(INT),morphism S,DF)
+
+   u:=(operator 'u)[n]
+
+   L:D0:='D+u
+
+        D + u(n)
+
+   L^2
+
+         2                2
+        D  + 2u(n)D + u(n)
+\end{verbatim}
+
+\horizontalline
+   )clear all
+\blankline
+As a fourth example, we construct a skew polynomial ring by using an
+inner derivation \delta induced by a fixed y in R:
+\blankline
+   \delta(r) = yr - ry
+\blankline
+First we should expose the constructor SquareMatrix so it is visible
+in the interpreter:
+\blankline
+   )set expose add constructor SquareMatrix
+\blankline
+Define R to be the square matrix with integer entries:
+\blankline
+\begin{verbatim}
+   R:=SQMATRIX(2,INT)
+
+   y:R:=matrix [[1,1],[0,1]]
+        +1  1+
+        |    |
+        +0  1+
+\end{verbatim}
+\blankline
+Define the inner derivative \delta:
+\blankline
+   delta:R->R:=r+->y*r-r*y
+\blankline
+Define S to be a skew polynomial determined by \sigma = 1
+and \delta as an inner derivative:
+\blankline
+\begin{verbatim}
+   S:=OREUP('x,R,1,delta)
+
+   x:S:='x
+
+   a:S:=matrix [[2,3],[1,1]]
+        +2  3+
+        |    |
+        +1  1+
+
+   x^2*a
+        +2  3+ 2   +2  - 2+    +0  - 2+
+        |    |x  + |      |x + |      |
+        +1  1+     +0  - 2+    +0   0 +
+\end{verbatim}
+\endscroll
+\autobuttons
+\end{page}
+
+@
 \section{vector.ht}
 \pagehead{VectorXmpPage}{vector.ht}{Vector}
 \pageto{notitle}{OneDimensionalArrayXmpPage}
@@ -61071,6 +61384,7 @@ Type: List 
WuWenTsunTriangularSet(Integer,IndexedExponents OrderedVariableList [
 \pageto{TextFile}{TextFileXmpPage}
 \pageto{TwoDimensionalArray}{TwoDimensionalArrayXmpPage}
 \pageto{UnivariatePolynomial}{UnivariatePolyXmpPage}
+\pageto{UnivariateSkewPolynomial}{UnivariateSkewPolyXmpPage}
 \pageto{UniversalSegment}{UniversalSegmentXmpPage}
 \pageto{Vector}{VectorXmpPage}
 \pageto{Void}{VoidXmpPage}
@@ -61177,6 +61491,7 @@ Click on any item below to see that section.
 { \downlink{TextFile}{TextFileXmpPage} }
 { \downlink{TwoDimensionalArray}{TwoDimensionalArrayXmpPage} }
 { \downlink{UnivariatePolynomial}{UnivariatePolyXmpPage} }
+{ \downlink{UnivariateSkewPolynomial}{UnivariateSkewPolyXmpPage} }
 { \downlink{UniversalSegment}{UniversalSegmentXmpPage} }
 { \downlink{Vector}{VectorXmpPage} }
 { \downlink{Void}{VoidXmpPage} }
@@ -187623,6 +187938,7 @@ RootPage
         PolynomialXmpPage
         MultivariatePolyXmpPage
         DistributedMultivariatePolyXmpPage
+      UnivariateSkewPolynomialPage
       UniversalSegmentXmpPage
         SegmentXmpPage
         SegmentBindingXmpPage
diff --git a/changelog b/changelog
index eec4e31..cdca04a 100644
--- a/changelog
+++ b/changelog
@@ -1,4 +1,9 @@
-20090226 tpd src/axiom-website/patches.html 20090225.02.mxr.patch
+20090227 tpd src/axiom-website/patches.html 20090227.01.lxx.patch
+20090227 lxx src/algebra/Makefile document UnivariateSkewPolynomial
+20090227 tpd books/bookvol0 add UnivariateSkewPolynomial
+20090227 lxx books/bookvol10.3 document UnivariateSkewPolynomial
+20090227 lxx books/bookvol7.1 document UnivariateSkewPolynomial
+20090226 tpd src/axiom-website/patches.html 20090226.01.mxr.patch
 20090226 tpd src/input/bags.input removed. distributed into bookvol10.3
 20090226 tpd src/input/Makefile remove bags.input
 20090225 tpd src/axiom-website/patches.html 20090225.02.mxr.patch
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index 2c80c0c..bd760c9 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -16488,6 +16488,7 @@ SPADHELP=\
  ${HELP}/StringTable.help            ${HELP}/Symbol.help \
  ${HELP}/Table.help                  ${HELP}/TextFile.help \
  ${HELP}/TwoDimensionalArray.help    ${HELP}/TwoDimensionalViewport.help \
+ ${HELP}/UnivariateSkewPolynomial.help \
  ${HELP}/UnivariatePolynomial.help   ${HELP}/UniversalSegment.help \
  ${HELP}/Vector.help                 ${HELP}/Void.help \
  ${HELP}/WuWenTsunTriangularSet.help ${HELP}/XPBWPolynomial.help \
@@ -16557,7 +16558,7 @@ REGRESS=\
  Stream.regress                 String.regress \
  StringTable.regress            Symbol.regress \
  Table.regress                  TextFile.regress \
- TwoDimensionalArray.regress \
+ TwoDimensionalArray.regress    UnivariateSkewPolynomial.regress \
  UnivariatePolynomial.regress   UniversalSegment.regress \
  Vector.regress                 Void.regress \
  WuWenTsunTriangularSet.regress XPBWPolynomial.regress \
@@ -17569,6 +17570,18 @@ ${HELP}/UnivariatePolynomial.help: 
${BOOKS}/bookvol10.3.pamphlet
             >${INPUT}/UnivariatePolynomial.input
        @echo "UnivariatePolynomial (UP)" >>${HELPFILE}
 
+${HELP}/UnivariateSkewPolynomial.help: ${BOOKS}/bookvol10.3.pamphlet
+       @echo 7095 create UnivariateSkewPolynomial.help from \
+           ${BOOKS}/bookvol10.3.pamphlet
+       @${TANGLE} -R"UnivariateSkewPolynomial.help" \
+          ${BOOKS}/bookvol10.3.pamphlet \
+           >${HELP}/UnivariateSkewPolynomial.help
+       @cp ${HELP}/UnivariateSkewPolynomial.help ${HELP}/OREUP.help
+       @${TANGLE} -R"UnivariateSkewPolynomial.input" \
+           ${BOOKS}/bookvol10.3.pamphlet \
+            >${INPUT}/UnivariateSkewPolynomial.input
+       @echo "UnivariateSkewPolynomial (OREUP)" >>${HELPFILE}
+
 ${HELP}/UniversalSegment.help: ${BOOKS}/bookvol10.3.pamphlet
        @echo 7096 create UniversalSegment.help from \
            ${BOOKS}/bookvol10.3.pamphlet
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 9f1bebb..ef940f5 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -971,5 +971,7 @@ bookvol10.3 add regression, help, examples for Heap<br/>
 bookvol10.3 add regression, help, examples for NottinghamGroup<br/>
 <a href="patches/20090226.01.mxr.patch">20090226.01.mxr.patch</a>
 input/Makefile remove bags.input<br/>
+<a href="patches/20090227.01.lxx.patch">20090227.01.lxx.patch</a>
+bookvol10.3 document UnivariateSkewPolynomial<br/>
  </body>
 </html>
diff --git a/src/input/bags.input.pamphlet b/src/input/bags.input.pamphlet
deleted file mode 100644
index f253093..0000000
--- a/src/input/bags.input.pamphlet
+++ /dev/null
@@ -1,383 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/input bags.input}
-\author{Timothy Daly}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
---Copyright The Numerical Algorithms Group Limited 1991.
-@
-<<*>>=
-)spool bags.output
-)set message test on
-)set message auto off
-)clear all
-
---S 1 of 44
-a:Stack INT:= stack [1,2,3,4,5]
---R 
---R
---R   (1)  [1,2,3,4,5]
---R                                                          Type: Stack 
Integer
---E 1
-
---S 2 of 44
-pop! a
---R 
---R
---R   (2)  1
---R                                                        Type: 
PositiveInteger
---E 2
-
---S 3 of 44
-a
---R 
---R
---R   (3)  [2,3,4,5]
---R                                                          Type: Stack 
Integer
---E 3
-
---S 4 of 44
-push!(9,a)
---R 
---R
---R   (4)  9
---R                                                        Type: 
PositiveInteger
---E 4
-
---S 5 of 44
-a
---R 
---R
---R   (5)  [9,2,3,4,5]
---R                                                          Type: Stack 
Integer
---E 5
-
---S 6 of 44
-empty? a
---R 
---R
---R   (6)  false
---R                                                                Type: 
Boolean
---E 6
-
---S 7 of 44
-b:=empty()$(Stack INT)
---R 
---R
---R   (7)  []
---R                                                          Type: Stack 
Integer
---E 7
-
---S 8 of 44
-empty? b
---R 
---R
---R   (8)  true
---R                                                                Type: 
Boolean
---E 8
-
---S 9 of 44
-c:ArrayStack INT:= arrayStack [1,2,3,4,5]
---R 
---R
---R   (9)  [1,2,3,4,5]
---R                                                     Type: ArrayStack 
Integer
---E 9
-
---S 10 of 44
-pop! c
---R 
---R
---R   (10)  5
---R                                                        Type: 
PositiveInteger
---E 10
-
---S 11 of 44
-c
---R 
---R
---R   (11)  [1,2,3,4]
---R                                                     Type: ArrayStack 
Integer
---E 11
-
---S 12 of 44
-push!(9,c)
---R 
---R
---R   (12)  9
---R                                                        Type: 
PositiveInteger
---E 12
-
---S 13 of 44
-c
---R 
---R
---R   (13)  [9,1,2,3,4]
---R                                                     Type: ArrayStack 
Integer
---E 13
-
---S 14 of 44
-empty? c
---R 
---R
---R   (14)  false
---R                                                                Type: 
Boolean
---E 14
-
---S 15 of 44
-d:=empty()$(ArrayStack INT)
---R 
---R
---R   (15)  []
---R                                                     Type: ArrayStack 
Integer
---E 15
-
---S 16 of 44
-empty? d
---R 
---R
---R   (16)  true
---R                                                                Type: 
Boolean
---E 16
-
---S 17 of 44
-e:Queue INT:= queue [1,2,3,4,5]
---R 
---R
---R   (17)  [1,2,3,4,5]
---R                                                          Type: Queue 
Integer
---E 17
-
---S 18 of 44
-dequeue! e
---R 
---R
---R   (18)  1
---R                                                        Type: 
PositiveInteger
---E 18
-
---S 19 of 44
-e
---R 
---R
---R   (19)  [2,3,4,5]
---R                                                          Type: Queue 
Integer
---E 19
-
---S 20 of 44
-enqueue!(9,e)
---R 
---R
---R   (20)  9
---R                                                        Type: 
PositiveInteger
---E 20
-
---S 21 of 44
-e
---R 
---R
---R   (21)  [2,3,4,5,9]
---R                                                          Type: Queue 
Integer
---E 21
-
---S 22 of 44
-empty? e
---R 
---R
---R   (22)  false
---R                                                                Type: 
Boolean
---E 22
-
---S 23 of 44
-f:=empty()$(Queue INT)
---R 
---R
---R   (23)  []
---R                                                          Type: Queue 
Integer
---E 23
-
---S 24 of 44
-empty? f
---R 
---R
---R   (24)  true
---R                                                                Type: 
Boolean
---E 24
-
---S 25 of 44
-g:Dequeue INT:= dequeue [1,2,3,4,5]
---R 
---R
---R   (25)  [1,2,3,4,5]
---R                                                        Type: Dequeue 
Integer
---E 25
-
---S 26 of 44
-extractBottom! g
---R 
---R
---R   (26)  5
---R                                                        Type: 
PositiveInteger
---E 26
-
---S 27 of 44
-g
---R 
---R
---R   (27)  [1,2,3,4]
---R                                                        Type: Dequeue 
Integer
---E 27
-
---S 28 of 44
-insertBottom!(9,g)
---R 
---R
---R   (28)  9
---R                                                        Type: 
PositiveInteger
---E 28
-
---S 29 of 44
-g
---R 
---R
---R   (29)  [1,2,3,4,9]
---R                                                        Type: Dequeue 
Integer
---E 29
-
---S 30 of 44
-extractTop! g
---R 
---R
---R   (30)  1
---R                                                        Type: 
PositiveInteger
---E 30
-
---S 31 of 44
-g
---R 
---R
---R   (31)  [2,3,4,9]
---R                                                        Type: Dequeue 
Integer
---E 31
-
---S 32 of 44
-insertTop!(9,g)
---R 
---R
---R   (32)  9
---R                                                        Type: 
PositiveInteger
---E 32
-
---S 33 of 44
-g
---R 
---R
---R   (33)  [9,2,3,4,9]
---R                                                        Type: Dequeue 
Integer
---E 33
-
---S 34 of 44
-empty? g
---R 
---R
---R   (34)  false
---R                                                                Type: 
Boolean
---E 34
-
---S 35 of 44
-h:=empty()$(Dequeue INT)
---R 
---R
---R   (35)  []
---R                                                        Type: Dequeue 
Integer
---E 35
-
---S 36 of 44
-empty? h
---R 
---R
---R   (36)  true
---R                                                                Type: 
Boolean
---E 36
-
---S 37 of 44
-i:Heap INT := bag [1,6,3,7,5,2,4]
---R 
---R
---R   (37)  [7,6,4,1,5,2,3]
---R                                                           Type: Heap 
Integer
---E 37
-
---S 38 of 44
-insert!(10,i)
---R 
---R
---R   (38)  [10,7,4,6,5,2,3,1]
---R                                                           Type: Heap 
Integer
---E 38
-
---S 39 of 44
-i
---R 
---R
---R   (39)  [10,7,4,6,5,2,3,1]
---R                                                           Type: Heap 
Integer
---E 39
-
---S 40 of 44
-max i
---R 
---R
---R   (40)  10
---R                                                        Type: 
PositiveInteger
---E 40
-
---S 41 of 44
-extract! i
---R 
---R
---R   (41)  10
---R                                                        Type: 
PositiveInteger
---E 41
-
---S 42 of 44
-i
---R 
---R
---R   (42)  [7,6,4,1,5,2,3]
---R                                                           Type: Heap 
Integer
---E 42
-
---S 43 of 44
-heapsort x ==
-       empty? x => []
-       cons(extract! x,heapsort x)
---R 
---R                                                                   Type: 
Void
---E 43
-
---S 44 of 44
-heapsort i
---R 
---R   Compiling function heapsort with type Heap Integer -> List Integer 
---R
---R   (44)  [7,6,5,4,3,2,1]
---R                                                           Type: List 
Integer
---E 44
-)spool
-)lisp (bye)
- 
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
- 






reply via email to

[Prev in Thread] Current Thread [Next in Thread]