[Top][All Lists]
[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}
-
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Axiom-developer] 20090227.01.lxx.patch (Liu Xiaojun: Document UnivariateSkewPolynomial),
daly <=