\section{ DIP Common Polynomial System  } 
\proc{LPERM} (L,P: LIST): LIST; \eproc
\bcom List permute. L is a list (a sub 1, ..., a sub n). P is a list
(p sub 1, ..., p sub n) of integers in the range 1, ...,n. 
LP is the list (a sub p sub 1, ..., a sub p sub n) .  \ecom 
\proc{BACKUB} (); \eproc
\bcom Backspace until blank.  \ecom 
\proc{CLIN} (): LIST; \eproc
\bcom Character list in. If a character list is next in the input
stream then it is read, else L is empty.  \ecom 
\proc{DILBSO} (A: LIST); \eproc
\bcom Distributive polynomial list bubble sort. A is a list of
lists of base coefficients and exponent vectors.
Each element of A is sorted with respect to the termordering
defined in EVORD by the bubble-sort method,
two monomials with equal exponents will lead to an error.
The lists in A but not there location, are modified. \ecom 
\proc{DILFPL} (RL,A: LIST): LIST; \eproc
\bcom Distributive polynomial list from polynom list. A is a list
of polynomials in r variables, r ge 0. Every polynomial in A
is converted to distributive representation and returned in B.  \ecom 
\proc{DIPADM} (A: LIST; VAR EL,FL,BL,B: LIST); \eproc
\bcom Distributive polynomial advance main variable. A is a
distributive polynomial in one or more variables. e is the
degree of A, b is the leading coefficient of A,
B is the reductum of A, f is the degree of B. \ecom 
\proc{DIPADS} (A,IL,SL: LIST; VAR EL,FL,BL,B: LIST); \eproc
\bcom Distributive polynomial advance and substitute. A is a
distributive polynomial, i is the specified variable,
1 le i le r=DIPNOV(A), s is the new exponent of b
in the i-th variable. e is the exponent of the leading
monomial of A in the i-th variable, let bs be part of the
coefficient of xi**e then b = bs * xi**s,
B = A - bs*xi**e, f is the exponent of the leading monomial
of B in the i-th variable. \ecom 
\proc{DIPADV} (A,IL: LIST; VAR EL,FL,BL,B: LIST); \eproc
\bcom Distributive polynomial advance. A is a distributive polynomial,
i is the specified variable, 1 le i le r=DIPNOV(A). e is
the exponent of the leading monomial of A in the i-th variable,
b is part of the coefficient of xi**e of A,
B = A - b*xi**e, f is the exponent of the leading monomial
of B in the i-th variable. \ecom 
\proc{DIPBSO} (A: LIST); \eproc
\bcom Distributive polynomial bubble sort. A is a list of
base coefficients and exponent vectors, A is sorted
with respect to the termordering defined in EVORD
by the bubble-sort method, two monomials with equal
exponents will lead to an error. The
list A but not its location, is modified. \ecom 
\proc{DIPCMP} (EL,A: LIST): LIST; \eproc
\bcom Distributive polynomial composition. A is a distributive
polynomial in r variables. e is an exponent. Let t=r+1, then
B(x1, ...,xr,xt)=A(x1, ...,xr)*xt**e. \ecom 
\proc{DIPDEG} (A: LIST): LIST; \eproc
\bcom Distributive polynomial degree. A is a distributive polynomial.
n is the degree of A in its main variable. \ecom 
\proc{DIPDPV} (A,SL,QL: LIST): LIST; \eproc
\bcom Distributive polynomial division by power of variable. A is
a distributive polynomial in r variables. s is the desired
variable to be divided, s le r. q is a beta-integer.
Q = A / ( xs**q).  \ecom 
\proc{DIPERM} (A,P: LIST): LIST; \eproc
\bcom Distributive polynomial permutation of variables. A is a
distributive polynomial, in r variables, r ge 0. P is a
list (p sub 1, ...,p sub r) whose elements are the
beta-digits 1 through r.  B(x sub (p sub 1), ...,x sub (p sub r))
=A(x sub 1, ...,x sub r).  \ecom 
\proc{DIPEVL} (A: LIST): LIST; \eproc
\bcom Distributive polynomial exponent vector leading monomial.
A is a distributive polynomial. u is the exponent vector of
the leading monomial of A.  \ecom 
\proc{DIPEVP} (A,EL: LIST): LIST; \eproc
\bcom Distributive polynomial exponent vector product. A is a
distributive polynomial, e is an exponent vector C=A*(x**e).  \ecom 
\proc{DIPEXC} (A,ILP,JLP: LIST): LIST; \eproc
\bcom Distributive polynomial exchange variables. A is a
distributive polynomial, the variables ip and jp are exchanged,
B=(x1, ...,xip, ...,xjp, ...,xr)=A(x1, ...,xjp, ...,xip, ...,xr), 
0 le ip, jp le DIPNOV(A). \ecom 
\proc{DIPFMO} (AL,EL: LIST): LIST; \eproc
\bcom Distributive polynomial from monomial. A is a non zero
distributive polynomial with a as its leading base coefficient
and e as is its exponent vector of the leading monomial.  \ecom 
\proc{DIPFP} (RL,A: LIST): LIST; \eproc
\bcom Distributive polynomial from polynomial. A is a polynomial
in r variables, r ge 0. B is the result of converting A from
recursive to distributive representation. Modified version
original version by G. E. Collins.  \ecom 
\proc{DIPINV} (A,JL,KL: LIST): LIST; \eproc
\bcom Distributive polynomial introduction of new variables.
A is a distributive polynomial in r variables. k ge 0,
0 le j le r. B(x1, ...,xj,y1, ...,yk,xj+1, ...,xr)=A(x1, ...,xr). \ecom 
\proc{DIPLBC} (A: LIST): LIST; \eproc
\bcom Distributive polynomial leading base coefficient. A is a
distributive polynomial. a is the leading base coefficient of A. \ecom 
\proc{DIPLDC} (A: LIST): LIST; \eproc
\bcom Distributive polynomial leading coefficient. A is a distributive
polynomial in one or more variables. a is the leading
coefficient of A. \ecom 
\proc{DIPLM} (L1,L2: LIST): LIST; \eproc
\bcom Distributive polynomial list merge. L1 and L2 are lists
of non zero distributive polynomials in non decreasing
order.  L is the merge of L1 and L2. L1 and L2 are
modified to produce L.  \ecom 
\proc{DIPLPM} (A: LIST): LIST; \eproc
\bcom Distributive polynomial list pair-merge sort. A is
a list of non zero distributive polynomials. B is the
result of sorting A into non-decreasing order. Pairs of
polynomials are merged. The list A is modified to produce B.  \ecom 
\proc{DIPLRS} (A: LIST); \eproc
\bcom Distributive polynomial list re-sort. A is a list of
distributive  polynomials in r variables, r ge 0.
The polynomials in A are re-sorted.  \ecom 
\proc{DIPMAD} (A: LIST; VAR AL,EL,AP: LIST); \eproc
\bcom Distributive polynomial monomial advance. A is a non zero
distributive polynomial. a is its leading base coefficient,
e is the exponent vector of the leading monomial of A.
AP is the distributive polynomial a without its leading
monomial, or the empty list.  \ecom 
\proc{DIPMCP} (AL,EL,A: LIST): LIST; \eproc
\bcom Distributive polynomial monomial composition. A is an emty
list or a non zero distributive polynomial. AP is a non zero
distributive polynomial with a as its leading base coefficient,
e as is its exponent vector of the leading monomial and A as
its monomial reductum.  \ecom 
\proc{DIPMPM} (A,PL: LIST): LIST; \eproc
\bcom Distributive polynomial multiplication by power of main variable.
A is a distributive polynomial in r variables. p is a beta-
integer. B = A * ( xr**p ).  \ecom 
\proc{DIPMPV} (A,SL,PL: LIST): LIST; \eproc
\bcom Distributive polynomial multiplication by power of variable.
A is a distributive polynomial in r variables. s is the specified
variable to be multiplicated, 1 le s le r. p is a beta-integer.
B = A * ( xs**p ).  \ecom 
\proc{DIPMRD} (A: LIST): LIST; \eproc
\bcom Distributive polynomial monomial reductum. A is a distributive
polynomial. B is the distributive polynomial a without the
leading monomial of A.  \ecom 
\proc{DIPMST} (A,AL,EL: LIST); \eproc
\bcom Distributive polynomial monomial set. A is a non zero
distributive polynomial. Its leading base coefficient is set
to a and its exponent vector of the leading monomial is
set to e.  \ecom 
\proc{DIPNBC} (A: LIST): LIST; \eproc
\bcom Distributive polynomial number of base coefficients. A is a
distributive polynomial. l is the number of base coefficients. \ecom 
\proc{DIPNOV} (A: LIST): LIST; \eproc
\bcom Distributive polynomial number of variables. A is a distributive
polynomial. r is the number of variables, r ge 0. If A=0 then
r is set to zero.  \ecom 
\proc{DIPRED} (A: LIST): LIST; \eproc
\bcom Distributive polynomial reductum. A is a distributive polynomial,
in one or more variables. B is the reductum of A. \ecom 
\proc{DIPTBC} (A: LIST): LIST; \eproc
\bcom Distributive polynomial trailing base coefficient. A is a
distributive polynomial. a is the trailing base coefficient. \ecom 
\proc{DIPTCF} (A: LIST): LIST; \eproc
\bcom Distributive polynomial trailing coefficient. A is a
distributive polynomial. a is the trailing coefficient of A. \ecom 
\proc{DIPTCS} (A,IL: LIST): LIST; \eproc
\bcom Distributive polynomial trailing coefficient specified variable.
A is a distributive polynomial in r variables. a is the
trailing coefficient of A with respect to the i-th variable,
1 le i le r.  \ecom 
\proc{DIPTDG} (A: LIST): LIST; \eproc
\bcom Distributive polynomial total degree. A is a distributive
polynomial. n is the total degree of A. \ecom 
\proc{DIPUNT} (A: LIST): LIST; \eproc
\bcom Distributive polynomial univariate test. A is a distributive
polynomial. If a is univariate then t=1, otherwise t=0. \ecom 
\proc{DIPUV} (A: LIST): LIST; \eproc
\bcom Distributive polynomial univariate variable output.
A is a distributive polynomial. If A is univariate then t=i, 
otherwise t=0. were i is the index of the variable in which A 
is univariate. If A is constant then t= -1.  \ecom 
\proc{EPREAD} (): LIST; \eproc
\bcom Exponent read. If ** is found in the input stream
then e=AREAD, else e=1.  \ecom 
\proc{EVCADD} (U,IL,EL: LIST; VAR V,FL: LIST); \eproc
\bcom Exponent vector component add. U=(u1, ...,ur) is an
exponent vector of length r, e is added to the i-th component,
1 le i le r, f=ui+e, V=(u1, ...,ui+e, ...,ur).  \ecom 
\proc{EVCOMP} (U,V: LIST): LIST; \eproc
\bcom Exponent vector compare. U=(u1, ...,ur), V=(v1, ...vr)
are exponent vectors. r is the length of U and V.
t=0 if U eq V. t=1 if U gt V. t=-1 if U lt V. eq, gt, lt
with respect to the ordering of the exponent vectors specified
in the global variable EVORD. Lexicographical, inverse
lexicographical, graded lexicograhpical, inverse graded
lexicographical orderings are possible.  \ecom 
\proc{EVCSUB} (U,IL,EL: LIST; VAR V,FL: LIST); \eproc
\bcom Exponent vector component subtract. U=(u1, ...,ur) is an
exponent vector of length r, e is subtracted from the i-th
component, 1 le i le r, V=(u1, ...,ui-e, ...,ur), f=ui.  \ecom 
\proc{EVDEL} (U,IL: LIST; VAR V,EL: LIST); \eproc
\bcom Exponent vector delete. U=(u1, ...,ur) is an exponent vector
of length r. i is the component to be deleted, 1 le i le r.
V=(u1, ...,ui-1,ui+1, ...,ur), e=ui. \ecom 
\proc{EVDER} (U,IL,EL: LIST; VAR V,FL: LIST); \eproc
\bcom Exponent vector derivation. U=(u1, ...,ur) is an exponent
vector of length r, from the i-th component e-times one is
subtracted and f is multiplied with the result.
V=(u1, ...,ui-e, ...,ur). If f=0 then V is undefined.  \ecom 
\proc{EVDFSI} (U,V: LIST; VAR W,SL: LIST); \eproc
\bcom Exponent vector difference and sign. U=(u1, ...,ur),
V=(v1, ...,vr) are exponent vectors of length r.
W=(w1, ...,wr) is the componentwise difference of U and V.
s is the EVSIGN of W. If s=-1 then W is undefined. \ecom 
\proc{EVDIF} (U,V: LIST): LIST; \eproc
\bcom Exponent vector difference. U=(u1, ...,ur), V=(v1, ...,vr)
are exponent vectors of length r. W=(w1, ...,wr) is the
componentwise difference of U and V. \ecom 
\proc{EVDOV} (U: LIST): LIST; \eproc
\bcom Exponent vector dependency on variables. U is an exponent
vector. V is the list (j1, ...,jn) where each
j is the index of a variable with non zero exponent in U.  \ecom 
\proc{EVEXC} (U,IL,JL: LIST): LIST; \eproc
\bcom Exponent vector exchange. U=(u1, ...,ui, ...,uj, ...,ur)
is an exponent vector of length r. The components ui and uj are 
exchanged, 1 le i lt j le r. V=(u1, ...,uj, ...,ui, ...,ur). \ecom 
\proc{EVIGLC} (U,V: LIST): LIST; \eproc
\bcom Exponent vector inverse graded lexicographical compare.
U=(u1, ...,ur), V=(v1, ...vr) are exponent vectors.
t=0 if U eq V. t=1 if U gt V. t=-1 if U lt V. eq, gt, lt
with respect to the inverse graded lexicographical ordering
of the exponent vectors. r is the length of U and V. \ecom 
\proc{EVILCI} (U,V: LIST): LIST; \eproc
\bcom Exponent vector inverse lexicographical compare inverse exponent vector.
U=(u1, ...,ur), V=(v1, ...vr) are exponent vectors.
t=0 if U eq V. t=1 if U gt V. t=-1 if U lt V. eq, gt,
lt with respect to the inverse lexicographical ordering
of the exponent vectors. r is the length of U and V. \ecom 
\proc{EVILCP} (U,V: LIST): LIST; \eproc
\bcom Exponent vector inverse lexicographical compare.
U=(u1, ...,ur), V=(v1, ...vr) are exponent vectors.
t=0 if U eq V. t=1 if U gt V. t=-1 if U lt V. eq, gt,
lt with respect to the inverse lexicographical ordering
of the exponent vectors. r is the length of U and V. \ecom 
\proc{EVITDC} (U,V: LIST): LIST; \eproc
\bcom Exponent vector inverse total degree compare.
U=(u1, ...,ur), V=(v1, ...vr) are exponent vectors.
t=0 if U eq V. t=1 if U gt V. t=-1 if U lt V. eq, gt, lt
with respect to buchbergers total degree ordering
of the exponent vectors. r is the length of U and V. \ecom 
\proc{EVLFCP} (L,U,V: LIST): LIST; \eproc
\bcom Exponent vector linear form compare. U=(u1, ...,ur),
V=(v1, ...,vr) are exponent vectors of length r.
L is an univariate integral polynomial vector.
t=0 if U eq V. t=1 if U gt V. t=-1 if U lt V. eq, gt, lt
with respect to the ordering of the exponent vectors 
determined by the linear form. \ecom 
\proc{EVLCM} (U,V: LIST): LIST; \eproc
\bcom Exponent vector least common multiple. U=(u1, ...,ur),
V=(v1, ...,vr) are exponent vectors of length r.
W=(w1, ...,wr) is the least common multiple of U and V.  \ecom 
\proc{EVMT} (U,V: LIST): LIST; \eproc
\bcom Exponent vector multiple test. U=(u1, ...,ur),
V=(v1, ...,vr) are exponent vectors of length r.
t=1 if U is a multiple of V, t=0 else.  \ecom 
\proc{EVNNZE} (U: LIST): LIST; \eproc
\bcom Exponent vector number of non zero exponents. U is an
exponent vector. n is the number of non zero exponents of U.  \ecom 
\proc{EVRAND} (RL,KL: LIST): LIST; \eproc
\bcom Exponent vector random. r is the length of U. k is a
positive beta-digit such that every component of U will be
less than k and k lt beta. U is a random exponent vector. \ecom 
\proc{EVRASP} (RL,KL,QL: LIST): LIST; \eproc
\bcom Exponent vector random. r is the length of U. k is a
positive beta-digit such that every component of U will be
less than k and k lt beta. U is a random exponent vector. \ecom 
\proc{EVSIGN} (U: LIST): LIST; \eproc
\bcom Exponent vector signum. U=(u1, ...,ur) is an exponent vector
of length r. t=0 if all components are eq 0, t=1 if all
components are ge 0, else t=-1. \ecom 
\proc{EVSU} (U,IL,FL: LIST; VAR V,EL: LIST); \eproc
\bcom Exponent vector substitution. U=(u1, ...,ui, ...,ur)
is an exponent vector of length r. The i-th component is
changed into f. 1 le i le r. e=ui. 
V=(u1, ...,ui-1,f,ui+1, ...,ur).  \ecom 
\proc{EVSUM} (U,V: LIST): LIST; \eproc
\bcom Exponent vector sum. U=(u1, ...,ur), V=(v1, ...,vr) are
exponent vectors of length r. W=(u1+v1, ...,ur+vr) is the
componentwise sum of U and V.  \ecom 
\proc{EVTDEG} (U: LIST): LIST; \eproc
\bcom Exponent vector total degree. U is an exponent vector.
n is the sum of the components of U. \ecom 
\proc{PBCLI} (RL,A: LIST): LIST; \eproc
\bcom Polynomial base coefficients list. A is a polynomial in
r variables. B is the list of the base coefficients of A.  \ecom 
\proc{PFDIP} (A: LIST; VAR RL,B: LIST); \eproc
\bcom Polynomial from distributive polynomial. A is a distributive
polynomial. B is the result of converting A to recursive
representation, r is the number of variables of B, r ge 0.
Modified version, original version by G. E. Collins.  \ecom 
\proc{PLFDIL} (A: LIST; VAR RL,B: LIST); \eproc
\bcom Polynomial list from distributive polynom list. A is a list
of distributive polynomials in r variables, r ge 0. Every
polynomial in A is converted to recursive representation and
stored in B.  \ecom 
\proc{PMPV} (RL,A,IL,NL: LIST): LIST; \eproc
\bcom Polynomial multiplication by power of variable. A is
a polynomial in r variables. 1 le i le r
and n is a beta-integer. B=A*(x sub i)**n.  \ecom 
\proc{PPERMV} (RL,A,P: LIST): LIST; \eproc
\bcom Polynomial permutation of variables. A is a polynomial in
r variables, r ge 0. P is a list (p sub 1, ...,p sub r)
whose elements are the beta-digits 1 through r.
B(x sub (p sub 1), ...,x sub (p sub r))=A(x sub 1, ...,
x sub r). \ecom 
\proc{STVL} (RL: LIST): LIST; \eproc
\bcom Standard variable list. r is the number of variables.
V is the variable list for the variables x1, ...,xr.  \ecom 
\section{ DIP Integral  } 
\proc{DIIFRP} (A: LIST): LIST; \eproc
\bcom Distributive integral polynomial from rational polynomial.
A is a distributive rational polynomial, B is the primitive
positive associate integral polynomial of A.  \ecom 
\proc{DIILFR} (A: LIST): LIST; \eproc
\bcom Distributive integral polynomial list from rational polynomial list.
A is a list of distributive rational polynomial, B is a list of primitive
positive associate integral polynomials of the polynomials of A.  \ecom 
\proc{DIILRD} (V: LIST): LIST; \eproc
\bcom Distributive integral polynomial list read. V is a
variable list. A list of distributive integral polynomials
in r variables, where r=length(V), r ge 0, is read from
the input stream. any blanks preceding A are skipped.  \ecom 
\proc{DIILWR} (A,V: LIST); \eproc
\bcom Distributive integral polynomial list write. V is a
variable list. A list of distributive integral polynomials
in r variables, where r=length(V), r ge 0, is written to
the output stream.  \ecom 
\proc{DIIPAB} (A: LIST): LIST; \eproc
\bcom Distributive integral polynomial absolute value. A is a
distributive integral polynomial. B is the absolute value of A. \ecom 
\proc{DIIPCP} (A: LIST; VAR CL,AP: LIST); \eproc
\bcom Distributive integral polynomial content and primitive part.
A is an distributive integral polynomial, c is the integer
content and AP is the positive primitive part of A.  \ecom 
\proc{DIIPDF} (A,B: LIST): LIST; \eproc
\bcom Distributive integral polynomial difference. A and B are
distributive integral polynomials. C=A-B. \ecom 
\proc{DIIPDM} (A: LIST): LIST; \eproc
\bcom Distributive integral polynomial derivation main variable.
A is a distributive polynomial. B is the derivation of A
with respect to its main variable. \ecom 
\proc{DIIPDR} (A,IL: LIST): LIST; \eproc
\bcom Distributive integral polynomial derivation. A is a distributive
polynomial. B is the derivation of A with respect to its i-th
variable, 0 le i le DIPNOV(A). \ecom 
\proc{DIIPEM} (A,AL: LIST): LIST; \eproc
\bcom Distributive integral polynomial evaluation of main variable.
A is a distributive integral polynomial. a is an integer.
B(x1, ...,x(r-1))=A(x1, ...,x(r-1),a).  \ecom 
\proc{DIIPEV} (A,IL,AL: LIST): LIST; \eproc
\bcom Distributive integral polynomial evaluation of the i-th variable.
A is a distributive integral polynomial, 1 le i le DIPNOV(A),
a is an integer. B(x1, ...,x(i-1),x(i+1), ...,xr)=
A(x1, ...,x(i-1),a,x(i+1), ...,xr).  \ecom 
\proc{DIIPEX} (A,NL: LIST): LIST; \eproc
\bcom Distributive integral polynomial exponentiation. A is a
distributive integral polynomial, n is a non-negative beta-
integer. B=A**n. 0**0 is by definition a polynomial in
zero variables.  \ecom 
\proc{DIIPHD} (A,IL,NL: LIST): LIST; \eproc
\bcom Distributive integral polynomial higher derivation. A is a
distributive integral polynomial. B is the n-th derivation
of A with respect to its i-th variable, 0 le i le DIPNOV(A).  \ecom 
\proc{DIIPIP} (A,BL: LIST): LIST; \eproc
\bcom Distributive integral polynomial integer product. A is a
distributive integral polynomial, b is an integer. C=A*b. \ecom 
\proc{DIIPIQ} (A,BL: LIST): LIST; \eproc
\bcom Distributive integral polynomial integer quotient. A is a
distributive integral polynomial, b is a nonzero integer,
and b divides any coefficient of A. C=A/b. \ecom 
\proc{DIIPLS} (A: LIST): LIST; \eproc
\bcom Distributive integral polynomial list sum. A is a circular
list of distributive integral polynomials. B is the sum of all
polynomials in A.  \ecom 
\proc{DIIPMN} (A: LIST): LIST; \eproc
\bcom Distributive integral polynomial maximum norm. A is a
distributive integral polynomial. b is the maximum norm of A. \ecom 
\proc{DIIPNG} (A: LIST): LIST; \eproc
\bcom Distributive integral polynomial negative. B= -A. \ecom 
\proc{DIIPON} (A: LIST): LIST; \eproc
\bcom Distributive integral polynomial one. A is a distributive
integral polynomial. If A=1 then t=1, otherwise t=0. \ecom 
\proc{DIIPPR} (A,B: LIST): LIST; \eproc
\bcom Distributive integral polynomial product. A and B are
distributive integral polynomials. C=A*B. \ecom 
\proc{DIIPPS} (A,B: LIST): LIST; \eproc
\bcom Distributive integral polynomial pseudo-remainder. A and B are
distributive integral polynomials, B ne 0. C is the
pseudo-remainder of A and B.  \ecom 
\proc{DIIPQ} (A,B: LIST): LIST; \eproc
\bcom Distributive integral polynomial quotient. A and B are
distributive integral polynomials. B is a non zero divisor
of A. C=B/A. \ecom 
\proc{DIIPQR} (A,B: LIST; VAR Q,R: LIST); \eproc
\bcom Distributive integral polynomial quotient and remainder.
A and B are distributive integral polynomials with B ne 0.
Q and R are unique distributive integral polynomials such
that either B divides A, so Q=A/B and R=0  or B does not
divide A, so A=B*Q+R with DEG(R) minimal. \ecom 
\proc{DIIPRA} (RL,KL,LL,EL: LIST): LIST; \eproc
\bcom Distributive integral polynomial random.
k, l and e are positive beta-digits. e is the
maximal permitted exponent of A in any variable. A is a
random distributive integral polynomial in r variables
max norm of a lt 2**k and maximal l base coefficients.  \ecom 
\proc{DIIPRD} (V: LIST): LIST; \eproc
\bcom Distributive integral polynomial read. V is a variable list.
A distributive integral polynomial A in r variables, where
r=length(V), r ge 0, is read from the input stream. Any
blanks preceding A are skipped. Modified version, orginal
version by G. E. Collins.  \ecom 
\proc{DIIPSG} (A: LIST): LIST; \eproc
\bcom Distributive integral polynomial sign. A is a distributive
integral polynomial. s is the sign of the leading base
coefficient of A. \ecom 
\proc{DIIPSM} (A,B: LIST): LIST; \eproc
\bcom Distributive integral polynomial sum. A and B are
distributive integral polynomials. C=A+B.  \ecom 
\proc{DIIPSN} (A: LIST): LIST; \eproc
\bcom Distributive integral polynomial sum norm. A is a distributive
integral polynomial. b is the sum norm of A. \ecom 
\proc{DIIPSO} (A: LIST): LIST; \eproc
\bcom Distributive integral polynomial sort. A is a
list of integer base coefficients and exponent vectors,
A is sorted with respect to the actual term order,
two terms with equal exponent vectors are added.  \ecom 
\proc{DIIPSU} (A,IL,B: LIST): LIST; \eproc
\bcom Distributive integral polynomial substitution. A and B are
distributive integral polynomials, 1 le i le r=DIPNOV(A).
E(x1, ...,x(i-1),x(i+1), ...,xr)=A(x1, ...,x(i-1),
B(x1, ...,x(i-1),x(i+1), ...,xr),x(i+1), ...,xr).  \ecom 
\proc{DIIPSV} (A,B: LIST): LIST; \eproc
\bcom Distributive integral polynomial substitution for main variable.
A and B are distributive integral polynomials. t=DIPNOV(A)-1.
C(x1, ...,xt)=A(x1, ...,xt,B(x1, ...,xt)).  \ecom 
\proc{DIIPTM} (A,HL: LIST): LIST; \eproc
\bcom Distributive integral polynomial translation main variable.
A is a distributive integral polynomial, h is an integer.
B(x1, ...xr)=A(x1, ...,x(r-1),xr+h). r=DIPNOV(A).  \ecom 
\proc{DIIPTR} (A,HL,IL: LIST): LIST; \eproc
\bcom Distributive integral polynomial translation. A is a
distributive integral polynomial, h is an integer,
the i-th variable is translated. 1 le i le r=DIPNOV(A).
B(x1, ...,xr)=A(x1, ...,xi+h, ...,xr). \ecom 
\proc{DIIPWR} (A,V: LIST); \eproc
\bcom Distributive integral polynomial write. A is a distributive
integral poynomial in r variables, r ge 0. V is a variable list
for A. A is written in the output stream. Modified version,
original version by G. E. Collins.  \ecom 
\proc{DIIPWV} (A: LIST); \eproc
\bcom Distributive integral polynomial write with standard variable list.
A is a distributive integral poynomial. The standard
variable list is used. A is written in the output stream. \ecom 
\proc{DIIRAS} (RL,KL,LL,EL,QL: LIST): LIST; \eproc
\bcom Distributive integral polynomial random sparse exponent vector.
k, l and e are positive beta-digits. e is the
maximal permitted exponent of A in any variable. A is a
random distributive integral polynomial in r variables
max norm of a lt 2**k and maximal l base coefficients.  \ecom 
\section{ DIP Integer Polynomial  } 
\proc{VIPIIP} (RL,A,B: LIST): LIST; \eproc
\bcom Vector of integral polynomials with vector of integers inner product.
A is a vector of integral polynomials in r variables, r non-negative.
B is a vector of integers. C is the inner product of A and B. \ecom 
\proc{HIPRAN} (RL,KL,QL,NL: LIST): LIST; \eproc
\bcom Homogeneous integral polynomial random. k is a positive
beta-digit. q is a rational number q1/q2 with
0 lt q1 le q2 lt beta. n is a non-negative beta-digit
r ge 0.  A is a random homogeneous integral polynomial
in r variables with homogeneous degree n. max norm of
A lt 2**k and q is the probability that any
particular term of A has a non-zero coefficient. \ecom 
\proc{IPRAN} (RL,KL,QL,N: LIST): LIST; \eproc
\bcom Integral polynomial random. k is a positive beta-digit.
q is a rational number q1/q2 with 0 lt q1 le q2 lt beta.
N is a list (n sub r, ...,n sub 1) of non-negative beta-digits
r ge 0.  A is a random integral polynomial in r variables
with deg sub i of a le n sub i + 1 for 1 le i le r.
Max norm of A lt 2**k and q is the probability that any
particular term of A has a non-zero coefficient. Modified
version, original version by G. E. Collins.  \ecom 
\section{ DIP Rational  } 
\proc{DIRFIP} (A: LIST): LIST; \eproc
\bcom Distributive rational polynomial from integral polynomial.
A is a distributive integral polynomial, B is the monic associate
rational polynomial of A.  \ecom 
\proc{DIRLRD} (V: LIST): LIST; \eproc
\bcom Distributive rational polynomial list read. V is a
variable list. A list of distributive rational polynomials
in r variables, where r=length(V), r ge 0, is read from
the input stream. Any blanks preceding A are skipped.  \ecom 
\proc{DIRLWR} (A,V,S: LIST); \eproc
\bcom Distributive rational polynomial list write. V is a
variable list. A list of distributive rational polynomials
in r variables, where r=length(V), r ge 0, is written to
the output stream.  \ecom 
\proc{DIRPAB} (A: LIST): LIST; \eproc
\bcom Distributive rational polynomial absolute value. A is a
distributive rational polynomial. B is the absolute value of A. \ecom 
\proc{DIRPDF} (A,B: LIST): LIST; \eproc
\bcom Distributive rational polynomial difference. A and B are
distributive rational polynomials. C=A-B. \ecom 
\proc{DIRPDM} (A: LIST): LIST; \eproc
\bcom Distributive rational polynomial derivation main variable.
A is a distributive polynomial. B is the derivation of A
with respect to its main variable. \ecom 
\proc{DIRPDR} (A,IL: LIST): LIST; \eproc
\bcom Distributive rational polynomial derivation. A is a distributive
polynomial. B is the derivation of A with respect to its i-th
variable, 0 le i le DIPNOV(A). \ecom 
\proc{DIRPEM} (A,AL: LIST): LIST; \eproc
\bcom Distributive rational polynomial evaluation of main variable.
A is a distributive rational polynomial. a is a rational number.
B(x1, ...,x(r-1))=A(x1, ...,x(r-1),a).  \ecom 
\proc{DIRPEV} (A,IL,AL: LIST): LIST; \eproc
\bcom Distributive rational polynomial evaluation of the i-th variable.
A is a distributive rational polynomial, 1 le i le DIPNOV(A),
a is a rational number. B(x1, ...,x(i-1),x(i+1), ...,xr)=
A(x1, ...,x(i-1),a,x(i+1), ...,xr).  \ecom 
\proc{DIRPEX} (A,NL: LIST): LIST; \eproc
\bcom Distributive rational polynomial exponentiation. A is a
distributive rational polynomial, n is a non-negative beta-
integer. B=A**n. 0**0 is by definition a polynomial in
zero variables.  \ecom 
\proc{DIRPHD} (A,IL,NL: LIST): LIST; \eproc
\bcom Distributive rational polynomial higher derivation. A is a
distributive rational polynomial. B is the n-th derivation
of A with respect to its i-th variable, 0 le i le DIPNOV(A).  \ecom 
\proc{DIRPLS} (A: LIST): LIST; \eproc
\bcom Distributive rational polynomial list sum. A is a circular
list of distributive rational polynomials. B is the sum of all
polynomials in A.  \ecom 
\proc{DIRPMC} (A: LIST): LIST; \eproc
\bcom Distributive rational polynomial monic. A and C are
distributive rational polynomials, C=A/LBC(A) if A ne 0
C=0 if A eq 0.  \ecom 
\proc{DIRPMN} (A: LIST): LIST; \eproc
\bcom Distributive rational polynomial maximum norm. A is a
distributive rational polynomial. b is the maximum norm of A. \ecom 
\proc{DIRPNG} (A: LIST): LIST; \eproc
\bcom Distributive rational polynomial negative. B= -A. \ecom 
\proc{DIRPON} (A: LIST): LIST; \eproc
\bcom Distributive rational polynomial one. A is a distributive
rational polynomial. If A=1 then t=1, otherwise t=0. \ecom 
\proc{DIRPPR} (A,B: LIST): LIST; \eproc
\bcom Distributive rational polynomial product. A and B are
distributive rational polynomials. C=A*B. \ecom 
\proc{DIRPQ} (A,B: LIST): LIST; \eproc
\bcom Distributive rational polynomial quotient. A and B are
distributive rational polynomials. B is a non zero divisor
of A. C=B/A. \ecom 
\proc{DIRPQR} (A,B: LIST; VAR Q,R: LIST); \eproc
\bcom Distributive rational polynomial quotient and remainder.
A and B are distributive rational polynomials with B ne 0.
Q and R are unique distributive rational polynomials such
that either B divides A, so Q=A/B and R=0  or B does not
divide A, so A=B*Q+R with deg(R) lt deg(B).  \ecom 
\proc{DIRPRA} (RL,KL,LL,EL: LIST): LIST; \eproc
\bcom Distributive rational polynomial random.
k, l and e are positive beta-digits. e is the
maximal permitted exponent of A in any variable. A is a
random distributive rational polynomial in r variables
max norm of A lt 2**k and maximal l base coefficients.  \ecom 
\proc{DIRPRD} (V: LIST): LIST; \eproc
\bcom Distributive rational polynomial read. V is a variable list.
A distributive rational polynomial A in r variables, where
r=length(V), r ge 0, is read from the input stream. Any
blanks preceding A are skipped. modified version, orginal
version by G. E. Collins.  \ecom 
\proc{DIRPRP} (A,BL: LIST): LIST; \eproc
\bcom Distributive rational polynomial rational number product.
Is a distributive rational polynomial, b is a rational number.
C=A*b. \ecom 
\proc{DIRPRQ} (A,BL: LIST): LIST; \eproc
\bcom Distributive rational polynomial rational number quotient. A
is a distributive rational polynomial, b is a nonzero rational
number. C=A/b. \ecom 
\proc{DIRPSG} (A: LIST): LIST; \eproc
\bcom Distributive rational polynomial sign. A is a distributive
rational polynomial. s is the sign of the leading base
coefficient of A. \ecom 
\proc{DIRPSM} (A,B: LIST): LIST; \eproc
\bcom Distributive rational polynomial sum. A and B are
distributive rational polynomials. C=A+B.  \ecom 
\proc{DIRPSN} (A: LIST): LIST; \eproc
\bcom Distributive rational polynomial sum norm. A is a distributive
rational polynomial. b is the sum norm of A. \ecom 
\proc{DIRPSO} (A: LIST): LIST; \eproc
\bcom Distributive rational polynomial sort. A is a
list of rational coefficients and exponent vectors,
A is sorted into inverse lexicographical order,
two terms with equal exponent vectors are added.  \ecom 
\proc{DIRPSU} (A,IL,B: LIST): LIST; \eproc
\bcom Distributive rational polynomial substitution. A and B are
distributive rational polynomials, 1 le i le r=DIPNOV(A).
E(x1, ...,x(i-1),x(i+1), ...,xr)=A(x1, ...,x(i-1),
B(x1, ...,x(i-1),x(i+1), ...,xr),x(i+1), ...,xr).  \ecom 
\proc{DIRPSV} (A,B: LIST): LIST; \eproc
\bcom Distributive rational polynomial substitution for main variable.
A and B are distributive rational polynomials. t=DIPNOV(A)-1.
C(x1, ...,xt)=A(x1, ...,xt,B(x1, ...,xt)).  \ecom 
\proc{DIRPTM} (A,HL: LIST): LIST; \eproc
\bcom Distributive rational polynomial translation main variable.
A is a distributive rational polynomial, h is a rational number.
B(x1, ...xr)=A(x1, ...,x(r-1),x(r)+h). r=DIPNOV(A).  \ecom 
\proc{DIRPTR} (A,HL,IL: LIST): LIST; \eproc
\bcom Distributive rational polynomial translation. A is a
distributive rational polynomial, h is a rational number,
the i-th variable is translated. 1 le i le r=DIPNOV(A).
B(x1, ...,xr)=A(x1, ...,x(i)+h, ...,xr). \ecom 
\proc{DIRPWR} (A,V,S: LIST); \eproc
\bcom Distributive rational polynomial write. A is a distributive
rational poynomial in r variables, r ge 0. V is a variable list
for A. If S ge 0 then the coefficients are written by RNDWR
else by RNWRIT. A is written in the output stream.
Modified version, original version by G. E. Collins.  \ecom 
\proc{DIRPWV} (A: LIST); \eproc
\bcom Distributive rational polynomial write with standard variable
list. A is a distributive rational poynomial. The standard
variable list is used. A is written in the output stream. \ecom 
\proc{DIRRAS} (RL,KL,LL,EL,QL: LIST): LIST; \eproc
\bcom Distributive rational polynomial, random sparse exponent vector.
k, l and e are positive beta-digits. e is the
maximal permitted exponent of A in any variable. A is a
random distributive rational polynomial in r variables
max norm of A lt 2**k and maximal l base coefficients.  \ecom 
\section{ DIP Rational Number Polynomial  } 
\proc{RPLWRS} (RL,A,V,S: LIST); \eproc
\bcom Rational polynomial list write. A is a list of rational
polynomial in r variables, r ge 0.  V is a variable list for
the polynomials in A. S is a decimal flag. A is written in the
output stream in external canonical form. \ecom 
\proc{RPWRTS} (RL,A,V,S: LIST); \eproc
\bcom Rational polynomial write. A is a rational polynomial in r
variables, r ge 0.  V is a variable list for A. S is a decimal
flag. A is written in the output stream in external canonical form. \ecom 
\proc{RPONE} (RL,A: LIST): LIST; \eproc
\bcom Rational polynomial one. A is a rational polynomial in r
variables. If A=1 then t=1, otherwise t=0.  \ecom 
\section{ DIP Termorder Optimization  } 
\proc{DIPDEM} (A: LIST): LIST; \eproc
\bcom Distributive polynomial degree matrix. A is a distributive
polynomial. B is the degree matrix of A.  \ecom 
\proc{DIPDEV} (A: LIST): LIST; \eproc
\bcom Distributive polynomial degree vector. A is a distributive
polynomial. N is the degree vector of A. \ecom 
\proc{DIPLDM} (A: LIST): LIST; \eproc
\bcom Distributive polynomial list degree matrix. A is a list of
distributive polynomials. B is the sum of all degree matrices
of each element of A.  \ecom 
\proc{DIPTRM} (A: LIST): LIST; \eproc
\bcom Distributive polynomial terms. A is a distributive polynomial
in r variables. T is a list of beta-integers each counting
the terms in the respective variable. \ecom 
\proc{DIPTYP} (A: LIST): LIST; \eproc
\bcom Distributive polynomial typ. A is a distributive polynomial
in r variables. t is a rational number, t is the typ of A,
0 lt t le 1.  \ecom 
\proc{DIPVOP} (P,V: LIST; VAR PP,VP: LIST); \eproc
\bcom Distributive polynomial variable ordering optimisation.
P and PP are lists of distributive polynomials.
V and VP are variable lists. The optimal variable ordering
for the polynomials in P is determined. The variables
of the polynomials in P are permuted to produce PP.
VP is the new variable list. \ecom 
\proc{DMEVAD} (A,E: LIST): LIST; \eproc
\bcom Degree matrix exponent vector add. A is a degree matrix.
E is an exponent vector. B=A + E.  \ecom 
\proc{HDIFDI} (A: LIST; VAR B,FL: LIST); \eproc
\bcom Homogeneous distributive polynomial from distributive polynomial.
A is a distributive polynomial in r variables. s=r+1.
If A is allready homogeneous then f=0 else f=1.
B(xs,x1, ...,xr)=(xs)**(tdeg(A)) * A(x1/xs, ...,xr/xs).  \ecom 
\proc{LBLXCO} (U,V: LIST): LIST; \eproc
\bcom List of beta integers lexicographical compare.
U=(u1, ...,ur), V=(v1, ...vs) are lists of beta integers.
t=0 if U eq V. t=1 if U gt V. t=-1 if U lt V. eq, gt,
lt with respect to the lexicographical ordering of the
beta integers.  \ecom 
\proc{PTERM} (RL,A: LIST): LIST; \eproc
\bcom Polynomial terms. A is a recursive polynomial in r
variables. T is a list of beta-integers each counting the
terms in the respective variable. \ecom 
\proc{PTYP} (RL,A: LIST): LIST; \eproc
\bcom Polynomial typ. A is a recursive polynomial in r variables.
t is a rational number, t is the PTYP of A, 0 lt t lt 1.  \ecom 
\proc{PVDEMA} (A: LIST): LIST; \eproc
\bcom Permutation vector for degree matrix. A is a degree matrix.
P is a permutation vector.  \ecom 
\section{ SAC Dense Polynomial  } 
\proc{DMPPRD} (RL,ML,A,B: LIST): LIST; \eproc
\bcom Dense modular polynomial product. A and B are polynomials in r
variables over Z sub m, m a beta-integer, r ge 0. C=A*B. \ecom 
\proc{DMPSUM} (RL,ML,A,B: LIST): LIST; \eproc
\bcom Dense modular polynomial sum. A and B are dense polynomials in r
variables over Z sub m, m a beta-integer. C=A+B. \ecom 
\proc{DMUPNR} (PL,A,B: LIST): LIST; \eproc
\bcom Dense modular univariate polynomial natural remainder. A and B are
non-zero dense univariate polynomials over Z sub p, p a prime
beta-integer, with deg(A) ge deg(B).  C is the natural remainder of B.
The list for A is modified. \ecom 
\proc{DPFP} (RL,A: LIST): LIST; \eproc
\bcom Dense polynomial from polynomial. A is a polynomial in r
variables, r ge 0.  B is the result of converting A to dense
polynomial representation. \ecom 
\section{ SAC Integer Polynomial System  } 
\proc{IPABS} (RL,A: LIST): LIST; \eproc
\bcom Integral polynomial absolute value. A is an integral polynomial in
r variables. B is the absolute value of A. \ecom 
\proc{IPCRA} (M,ML,MLP,RL,A,AL: LIST): LIST; \eproc
\bcom Integral polynomial chinese remainder algorithm. M is a positive
integer.  m is a positive beta-integer.  gcd(M,m)=1.  mp is the
inverse of H sub m of M.  A is an integral polynomial in r variables
whose coefficients belong to Z prime sub M, r non-negative.  a is a
polynomial in r variables over Z sub m.  AS is the unique integral
polynomial in r variables with coefficients in Z prime sub MS, where
MS=M*m, which is congruent to A modulo M and to a modulo m. \ecom 
\proc{IPDER} (RL,A,IL: LIST): LIST; \eproc
\bcom Integral polynomial derivative. A is an integral polynomial in r
variables.  1 le i le r.  B is the derivative of A with respect to
its i-th variable. \ecom 
\proc{IPDIF} (RL,A,B: LIST): LIST; \eproc
\bcom Integral polynomial difference. A and B are integral polynomials in
r variables, r ge 0. C=A-B. \ecom 
\proc{IPDMV} (RL,A: LIST): LIST; \eproc
\bcom Integral polynomial derivative, main variable. A is an integral
polynomial in r variables.  B is the derivative of A with respect to
its main variable. \ecom 
\proc{IPEMV} (RL,A,AL: LIST): LIST; \eproc
\bcom Integral polynomial evaluation of main variable. A is an integral
polynomial in r variables.  a is an integer.
B(x(1), ...,x(r-1))=A(x(1), ...,x(r-1),a). \ecom 
\proc{IPEVAL} (RL,A,IL,AL: LIST): LIST; \eproc
\bcom Integral polynomial evaluation. A is an integral polynomial
in r variables.  1 le i le r.  a is an integer.  B(x(1), ...,
x(i-1),x(i+1), ...,x(r))=A(x(1), ...,x(i-1),a,x(i+1), ...,x(r)). \ecom 
\proc{IPEXP} (RL,A,NL: LIST): LIST; \eproc
\bcom Integral polynomial exponentiation. A is an integral polynomial in
r variables, r ge 0. n is a non-negative integer. B=A**n. \ecom 
\proc{IPFCB} (V: LIST): LIST; \eproc
\bcom Integral polynomial factor coefficient bound. V is the degree vector
of a non-zero integral polynomial A.  b is a non-negative integer such
that if b(1)* ...*b(k) divides A then the product of the infinity norms
of the b(i) is less than or equal to 2**b times the infinity norm of A.
Gelfonds bound is used. \ecom 
\proc{IPFRP} (RL,A: LIST): LIST; \eproc
\bcom Integral polynomial from rational polynomial. A is a rational
polynomial in r variables, r ge 0, each of whose base coefficients is
an integer. B is a converted to integral polynomial representation. \ecom 
\proc{IPGSUB} (RL,A,SL,L: LIST): LIST; \eproc
\bcom Integral polynomial general substitution. A is an integral
polynomial in r variables, r ge 1.  L is a list (b(1), ...,b(r)) of
integral polynomials in s variables, s ge 1.  C(y(1), ...,y(s))=
A(b(1)(y(1), ...,y(s)), ...,b(r)(y(1), ...,y(s))). \ecom 
\proc{IPHDMV} (RL,A,KL: LIST): LIST; \eproc
\bcom Integral polynomial higher derivative, main variable. A is an
integral polynomial in r variables.  k is a non-negative
gamma-integer B is the k-th derivative of A with respect to its main
variable. \ecom 
\proc{IPIHOM} (RL,D,A: LIST): LIST; \eproc
\bcom Integral polynomial mod ideal homomorphism. D is a list (d sub 1, ...,
d sub r-1) of non-negative beta-integers, r ge 0.  A is an r-variate 
integral polynomial.  B=A mod (x sub 1 ** d sub 1, ...,x sub
r-1 ** d sub r-1). \ecom 
\proc{IPIP} (RL,AL,B: LIST): LIST; \eproc
\bcom Integral polynomial integer product. a is an integer. B is an
integral polynomial in r variables. C=a*B. \ecom 
\proc{IPIPR} (RL,D,A,B: LIST): LIST; \eproc
\bcom Integral polynomial mod ideal product. D is a list (d sub 1, ...,
d sub r-1) of non-negative beta-integers, r ge 1.  A and B belong to
Z(x sub 1, ...,x sub r-1,y)/(x sub 1 **d sub 1, ...,x sub r-1 ** d
sub r-1). C=A*B. \ecom 
\proc{IPIQ} (RL,A,BL: LIST): LIST; \eproc
\bcom Integral polynomial integer quotient. A is an integral polynomial
in r variables. b is a non-zero integer which divides A. C=A/b. \ecom 
\proc{IPMAXN} (RL,A: LIST): LIST; \eproc
\bcom Integral polynomial maximum norm. A is an integral polynomial
in r variables. b is the maximum norm of A. \ecom 
\proc{IPNEG} (RL,A: LIST): LIST; \eproc
\bcom Integral polynomial negative. A is an integral polynomial in r
variables, r ge 0. B=-A. \ecom 
\proc{IPONE} (RL,A: LIST): LIST; \eproc
\bcom Integral polynomial one. A is an integral polynomial in r
variables. If A=1 then t=1, otherwise t=0. \ecom 
\proc{IPPROD} (RL,A,B: LIST): LIST; \eproc
\bcom Integral polynomial product. A and B are integral polynomials in r
variables, r ge 0. C=A*B. \ecom 
\proc{IPPSR} (RL,A,B: LIST): LIST; \eproc
\bcom Integral polynomial pseudo-remainder. A and B are integral
polynomials in r variables, B non-zero.  C is the pseudo-remainder
of A and B. \ecom 
\proc{IPQ} (RL,A,B: LIST): LIST; \eproc
\bcom Integral polynomial quotient. A and B are integral polynomials in
r variables, r ge 0. B is a non-zero divisor of A. C=A/B. \ecom 
\proc{IPQR} (RL,A,B: LIST; VAR Q,R: LIST); \eproc
\bcom Integral polynomial quotient and remainder. A and B are integral
polynomials in r variables with B non-zero.  Q and R are the unique
integral polynomials such that either B divides A, Q=A/B and R=0 or
else B does not divide A and A=BQ+R with deg(R) minimal. \ecom 
\proc{IPRAN} (RL,KL,QL,N: LIST): LIST; \eproc
\bcom Integral polynomial, random. k is a positive beta-digit. q is a
rational number q1/q2 with 0 lt q1 le q2 lt beta.  N is a list
(n sub r, ...,n sub 1) of non-negative beta-digits, r ge 0.  A is a
random integral polynonial in r variables with deg sub i of a le n
sub i for 1 le i le r.  Max norm of A lt 2**k and q is the
probability that any particular term of a has a non-zero coefficient. \ecom 
\proc{IPREAD} ( VAR RL,A,V: LIST); \eproc
\bcom Integral polynomial read. The integral polynomial A is read from the
input stream.  r, non-negative, is the number of variables of A and V
is the variable list of A. Any number of preceding blanks are skipped. \ecom 
\proc{IPSIGN} (RL,A: LIST): LIST; \eproc
\bcom Integral polynomial sign. A is an integral polynomial in r
variables. s is the sign of A. \ecom 
\proc{IPSMV} (RL,A,B: LIST): LIST; \eproc
\bcom Integral polynomial substitution for main variable. A is an
integral polynomial in r variables, x(1), ...,x(r).  B is an
integral polynomial in x(1), ...,x(r-1).  C(x(1), ...,x(r-1))=
A(x(1), ...,x(r-1),B(x(1), ...,x(r-1))). \ecom 
\proc{IPSUB} (RL,A,IL,B: LIST): LIST; \eproc
\bcom Integral polynomial substitution. A is an integral polynomial in
r variables, x(1), ...,x(r).  1 le i le r.  B is an integral
polynomial in x(1), ...,x(i-1).  C(x(1), ...,x(i-1),x(i+1), ...,
x(r))=A(x(1), ...,x(i-1),B(x(1), ...,x(i-1)),x(i+1), ..., x(r)). \ecom 
\proc{IPSUM} (RL,A,B: LIST): LIST; \eproc
\bcom Integral polynomial sum. A and B are integral polynomials in r
variables, r ge 0. C=A+B. \ecom 
\proc{IPSUMN} (RL,A: LIST): LIST; \eproc
\bcom Integral polynomial sum norm. A is an integral polynomial in r
variables, r non-negative. b is the sum norm of A. \ecom 
\proc{IPTPR} (RL,D,A,B: LIST): LIST; \eproc
\bcom Integral polynomial truncated product. D is a list (d sub 1, ...,d sub r)
of non-negative beta-integers, r ge 1.  A and B belong to
Z(x sub 1, ...,x sub r)/(x sub 1 **d sub 1, ...,x sub r ** d sub r).
C=A*B. \ecom 
\proc{IPTRAN} (RL,A,T: LIST): LIST; \eproc
\bcom Integral polynomial translation. A is an integral polynomial in r
variables, r ge 1.  T is a list (tr, ...,t1) of integers.
B(x1, ...,xr)=A(x1+t1, ...,xr+tr). \ecom 
\proc{IPTRMV} (RL,A,HL: LIST): LIST; \eproc
\bcom Integral polynomial translation, main variable. A is an integral
polynomial in r variables, r ge 1.  h is an integer.
B(x1, ...,xr)=A(x1, ...,x(r-1),xr+h). \ecom 
\proc{IPTRUN} (RL,D,A: LIST): LIST; \eproc
\bcom Integral polynomial truncation. D is a list (d sub 1, ...,d sub r)
of non-negative beta-integers, r ge 0.  A is an r-variate integral
polynomial. B=A mod (x sub 1 ** d sub 1, ..., x sub r ** d sub r). \ecom 
\proc{IPWRIT} (RL,A,V: LIST); \eproc
\bcom Integral polynomial write. A is an integral polynomial in r
variables, r ge 0.  V is a variable list for A.  A is written
in the output stream in external canonical form. \ecom 
\proc{IUPBEI} (A,CL,ML: LIST): LIST; \eproc
\bcom Integral univariate polynomial binary rational evaluation, integer output.
A is a univariate integral polynomial.  c is an integer.  m is a 
non-negative beta-integer.  b=2**(n*m)*A(c/2**m) where n=deg(A).
b is an integer. \ecom 
\proc{IUPBES} (A,AL: LIST): LIST; \eproc
\bcom Integral univariate polynomial binary rational evaluation of sign.
A is a univariate polynomial.  a is a binary rational number.  
s=sign(A(a)). \ecom 
\proc{IUPBHT} (A,KL: LIST): LIST; \eproc
\bcom Integral univariate polynomial binary homothetic transformation. A
is a non-zero univariate integral polynomial.  k is a gamma-integer.
B(x)=2**(-h)*A(2**k*x) where h is uniquely determined so that B is
an integral polynomial not divisible by 2. \ecom 
\proc{IUPBRE} (A,AL: LIST): LIST; \eproc
\bcom Integral univariate polynomial binary rational evaluation. A is a
univariate integral polynomial.  a is a binary rational number.  
B=A(a), a binary rational number. \ecom 
\proc{IUPCHT} (A: LIST): LIST; \eproc
\bcom Integral univariate polynomial circle to half-plane transformation.
A is a non-zero univariate integral polynomial.  Let n=deg(A).  Then
B(x)=(x+1)**n*A(1/(x+1)), a univariate integral polynomial. \ecom 
\proc{IUPNT} (A: LIST): LIST; \eproc
\bcom Integral univariate polynomial negative transformation. A is a
univariate integral polynomial. B(x)=A(-x). \ecom 
\proc{IUPTPR} (NL,A,B: LIST): LIST; \eproc
\bcom Integral univariate polynomial truncated product. n is a non-
negative integer.  A and B are integral univariate polynomials.  
C(x)=A(x)*B(x) (modulo x**n) and C=0 or deg(C) lt n. \ecom 
\proc{IUPTR} (A,HL: LIST): LIST; \eproc
\bcom Integral univariate polynomial translation. A is a univariate
integral polynomial. h is an integer. B(x)=A(x+h). \ecom 
\proc{IUPTR1} (A: LIST): LIST; \eproc
\bcom Integral univariate polynomial translation by 1. A is a univariate
integral polynomial. B(x)=A(x+1). \ecom 
\section{ SAC Modular Polynomial  } 
\proc{MIPDIF} (RL,M,A,B: LIST): LIST; \eproc
\bcom Modular integral polynomial difference. M is a positive integer.
A and B are polynomials in r variables over Z sub M, r ge 0. C=A-B. \ecom 
\proc{MIPFSM} (RL,M,A: LIST): LIST; \eproc
\bcom Modular integral polynomial from symmetric modular. M is a positive
integer.  A is a polynomial in r variables over Z prime sub M, r ge 0.
B belongs to Z sub M (x, ...,x sub r) with B=A (modulo M). \ecom 
\proc{MIPHOM} (RL,M,A: LIST): LIST; \eproc
\bcom Modular integral polynomial homomorphism. A is an integral
polynomial in r variables, r ge 0.  M is a positive integer.
B=H sub M (A), a polynomial in r variables over Z sub M. \ecom 
\proc{MIPIPR} (RL,M,D,A,B: LIST): LIST; \eproc
\bcom Modular integral polynomial mod ideal product. D is a list (d sub
1, ...,d sub r-1) of non-negative beta-integers, r ge 1.  M is a
positive integer.  A and B belong to Z sub M (x sub 1, ...,x sub
r-1,y)/(x sub 1 ** d sub 1, ...,x sub r-1 ** d sub r-1). C=A*B. \ecom 
\proc{MIPNEG} (RL,M,A: LIST): LIST; \eproc
\bcom Modular integral polynomial negation. M is a positive integer. A is
a polynomial in r variables over Z sub M, r ge 0. B=-A. \ecom 
\proc{MIPPR} (RL,M,A,B: LIST): LIST; \eproc
\bcom Modular integral polynomial product. M is a positive integer. A and
B are polynomials in r variables over Z sub M, r ge 0. C=A*B. \ecom 
\proc{MIPRAN} (RL,M,QL,N: LIST): LIST; \eproc
\bcom Modular integral polynomial, random. M is a positive integer. q is
a rational number q1/q2 with 0 lt q1 le q2 lt beta.  N is a list
(n sub r, ...,n sub 1) of non-negative beta-digits, r ge 0.  A is a
random polynomial in r variables over Z sub M with deg sub i of A le
n sub i for 1 le i le r.  q is the probability that any particular
term of A has a non-zero coefficient. \ecom 
\proc{MIPSUM} (RL,M,A,B: LIST): LIST; \eproc
\bcom Modular integral polynomial sum. M is a positive integer. A and B
are polynomials in r variables over Z sub M, r ge 0. C=A+B. \ecom 
\proc{MIUPQR} (M,A,B: LIST; VAR Q,R: LIST); \eproc
\bcom Modular integral univariate polynomial quotient and remainder. M is
a positive integer.  A and B belong to Z sub M (x) with LDCF(B) a unit.
Q and R are the unique elements of Z sub M (x) such that A=B*Q+R with
either R=0 or DEG(R) lt DEG(B). \ecom 
\proc{MMPIQR} (RL,M,D,A,B: LIST; VAR Q,R: LIST); \eproc
\bcom Modular monic polynomial mod ideal quotient and remainder. M is a
positive integer.  D is a list (d sub 1, ...,d sub r-1) of non-nega-
tive beta-integers, r ge 1.  A and B belong to Z sub M(x sub 1, ...,x
sub r-1,y)/(x sub 1 ** d sub 1, ...,x sub r-1 ** d sub r-1), with B
monic.  A=B*Q+R, deg sub y of R lt deg sub y of B unless B divides A,
in which case R=0, with Q,R belonging to Z sub M (x sub 1, ...,x sub
r-1,y)/(x sub 1 ** d sub 1, ...,x sub r-1 ** d sub r-1). \ecom 
\proc{MPDIF} (RL,ML,A,B: LIST): LIST; \eproc
\bcom Modular polynomial difference. A and B are polynomials in r
variables over Z sub m, m a beta-integer. C=A-B. \ecom 
\proc{MPEMV} (RL,ML,A,AL: LIST): LIST; \eproc
\bcom Modular polynomial evaluation of main variable. A is a polynomial in
r variables over Z sub m, m a beta-integer.  a is an element of
Z sub m. B(x(1), ...,x(r-1))=A(x(1), ...,x(r-1),a). \ecom 
\proc{MPEVAL} (RL,ML,A,IL,AL: LIST): LIST; \eproc
\bcom Modular polynomial evaluation. A is a polynomial in r variables
over Z sub m, m a beta-integer.  1 le i le r.  a is an element of
Z sub m.  B(x(1), ...,x(i-1),x(i+1), ...,x(r))=
A(x(1), ...,x(i-1),a,x(i+1), ...,x(r)). \ecom 
\proc{MPEXP} (RL,ML,A,NL: LIST): LIST; \eproc
\bcom Modular polynomial exponentiation. A is a polynomial in r variables
over Z sub m, m a beta-integer.  n is a non-negative integer.
B=A**n. \ecom 
\proc{MPHOM} (RL,ML,A: LIST): LIST; \eproc
\bcom Modular polynomial homomorphism. A is an integral polynomial in r
variables, r ge 0.  m is a positive beta-integer.  B is the image of
A under the homomorphism H sub m, a polynomial in r variables over
Z sub m. \ecom 
\proc{MPINT} (PL,B,BL,BLP,RL,A,A1: LIST): LIST; \eproc
\bcom Modular polynomial interpolation. p is a prime beta-integer. B is
a univariate polynomial over Z sub p.  b is an element of Z sub p
such that B(b) ne 0 and bp=B(b)**-1.  A is a polynomial over Z sub
p in r variables, r ge 1, with A=0 or the degree of A in x(1) less
than the degree of B.  A1 is a polynomial over Z sub p in r-1
variables.  AS(x(1), ...,x(r)) is the unique polynomial over Z sub
p such that AS(x(1), ...,x(r)) is congruent to A(x(1), ...,x(r))
modulo B(x(1)), AS(b,x(2), ...,x(r))=A1(x(2), ...,x(r)) and
the degree of AS in x(1) is less than or equal to the degree of B. \ecom 
\proc{MPMDP} (RL,PL,AL,B: LIST): LIST; \eproc
\bcom Modular polynomial modular digit product. a is an element of
Z sub p, p a prime beta-integer.  B is a polynomial in r variables
over Z sub p. C=a*B. \ecom 
\proc{MPMON} (RL,PL,A: LIST): LIST; \eproc
\bcom Modular polynomial monic. A is a polynomial in r variables over
Z sub p, p a prime beta-integer.  If A is non-zero then AP is
the polynomial similar to A with LBCF(AP)=1. If A=0 then AP=0. \ecom 
\proc{MPNEG} (RL,ML,A: LIST): LIST; \eproc
\bcom Modular polynomial negative. A is a polynomial in r variables over
Z sub m, m a beta-integer. B=-A. \ecom 
\proc{MPPROD} (RL,ML,A,B: LIST): LIST; \eproc
\bcom Modular polynomial product. A and B are polynomials in r variables
over Z sub m, m a beta-integer, r ge 0. C=A*B. \ecom 
\proc{MPPSR} (RL,PL,A,B: LIST): LIST; \eproc
\bcom Modular polynomial pseudo-remainder. A and B are polynomials
in r variables over Z sub p, p a prime beta-integer,
with B non-zero. C is the pseudo-remainder of A and B. \ecom 
\proc{MPQ} (RL,PL,A,B: LIST): LIST; \eproc
\bcom Modular polynomial quotient. A and B are polynomials in r
variables over Z sub p, p a prime beta-integer, r ge 0.  B is a
non-zero divisor of A. C=A/B. \ecom 
\proc{MPQR} (RL,PL,A,B: LIST; VAR Q,R: LIST); \eproc
\bcom Modular polynomial quotient and remainder. A and B are polynomials
un r variables over Z sub p, p a prime beta-integer, with B non-zero.
Q and R are the unique polynomials such that either B divides A, Q=A/B
and R=0 or else B does not divide A and A=BQ+R with DEG(R) minimal. \ecom 
\proc{MPRAN} (RL,ML,QL,N: LIST): LIST; \eproc
\bcom Modular polynomial, random. m is a positive beta-integer. q is a
rational number q1/q2 with 0 lt q1 le q2 lt beta.  N is a list (n
sub r, ...,n sub 1) of non-negative beta-digits, r ge 0.  A is a
random polynomial in r variables over Z sub m with deg sub i of A le
n sub i for 1 le i le r.  q is the probability that any particular
term of A has a non-zero coefficient. \ecom 
\proc{MPSUM} (RL,ML,A,B: LIST): LIST; \eproc
\bcom Modular polynomial sum. A and B are polynomials in r variables over
Z sub m, m a beta-integer. C=A+B. \ecom 
\proc{MPUP} (RL,ML,CL,A: LIST): LIST; \eproc
\bcom Modular polynomial univariate product. A is a polynomial in r
variables, r ge 1, over Z sub m, m a positive beta-integer.  c is a
univariate polynomial over Z sub m.  B(x(1), ...,x(r)) =
c(x(1))*A(x(1), ...,x(r)). \ecom 
\proc{MPUQ} (RL,PL,A,BL: LIST): LIST; \eproc
\bcom Modular polynomial univariate quotient. A is a polynomial in r
variables, r ge 2, over Z sub p, p a prime beta-integer.  b is a
non-zero univariate polynomial over Z sub p which divides A.
C(x(1), ...,x(r))=A(x(1), ...,x(r))/b(x(1)). \ecom 
\proc{MUPDER} (ML,A: LIST): LIST; \eproc
\bcom Modular univariate polynomial derivative. m is a beta-integer. A
is a univariate polynomial over Z sub m.  B is the derivative of A, a
univariate polynomial over Z sub m. \ecom 
\proc{MUPRAN} (PL,NL: LIST): LIST; \eproc
\bcom Modular univariate polynomial, random. A is a random univariate
polynomial of degree n over Z(p). \ecom 
\proc{SMFMIP} (RL,M,A: LIST): LIST; \eproc
\bcom Symmetric modular from modular integral polynomial. M is a positive
integer.  A is a polynomial in r variables over Z sub M, r ge 0.  B
belongs to Z prime sub M (x1, ...,x sub r) with B=A (modulo M). \ecom 
\proc{VMPIP} (RL,ML,A,B: LIST): LIST; \eproc
\bcom Vector of modular polynomial inner product. A and B are vectors of
modular polynomials in r variables over Z sub m, r non-negative, m
a beta-integer. C is the inner product of A and B. \ecom 
\section{ SAC Polynomial System  } 
\proc{PBIN} (AL1,EL1,AL2,EL2: LIST): LIST; \eproc
\bcom Polynomial binomial. a1 and a2 are elements of a coefficient ring
R.  e1 and e2 are non-negative beta-integers e1 gt e2.  A is the
polynomial A(x)=a1*x**e1+a2*x**e2, a univariate polynomial
over R. \ecom 
\proc{PCL} (A: LIST): LIST; \eproc
\bcom Polynomial coefficient list. A is a non-zero polynomial. L is the
list (a(n),a(n-1), ...,a(0)) where n=DEG(A) and A(x)=a(n)*x**n+
a(n-1)*x**(n-1)+ ...+a(0). \ecom 
\proc{PDBORD} (A: LIST): LIST; \eproc
\bcom Polynomial divided by order. A is a non-zero polynomial. B(x)=
A(x)/x**k where k is the order of A. \ecom 
\proc{PDEG} (A: LIST): LIST; \eproc
\bcom Polynomial degree. A is a polynomial. n is the degree of A. \ecom 
\proc{PDEGSV} (RL,A,IL: LIST): LIST; \eproc
\bcom Polynomial degree, specified variable. A is a polynomial in r
variables, r ge 1.  1 le i le r.  n is the degree of A in the i-th
variable. \ecom 
\proc{PDEGV} (RL,A: LIST): LIST; \eproc
\bcom Polynomial degree vector. A is a polynomial A(x(1), ...,x(r)) in
r variables.  V is the list (v(r), ...,v(1)) where v(i) is the
degree of a in x(i). \ecom 
\proc{PDPV} (RL,A,IL,NL: LIST): LIST; \eproc
\bcom Polynomial division by power of variable. A is a polynomial in
r variables.  1 le i le r and n is a beta-integer such that
x sub i sup n divides A. B eq A/x sub i sup n. \ecom 
\proc{PFDP} (RL,A: LIST): LIST; \eproc
\bcom Polynomial from dense polynomial. A is a dense polynomial in
r variables, r ge 0.  B is the result of converting A to recursive
polynomial representation. \ecom 
\proc{PINV} (RL,A,KL: LIST): LIST; \eproc
\bcom Polynomial introduction of new variables. A is a polynomial in r
variables, r ge 0.  k ge 0.  B(y(1), ...,y(k),x(1), ...,x(r))
=A(x(1), ...,x(r)). \ecom 
\proc{PLBCF} (RL,A: LIST): LIST; \eproc
\bcom Polynomial leading base coefficient. A is a polynomial in r
variables. a is the leading base coefficient of A. \ecom 
\proc{PLDCF} (A: LIST): LIST; \eproc
\bcom Polynomial leading coefficient. A is a polynomial. a is the
leading coefficient of A. \ecom 
\proc{PMDEG} (A: LIST): LIST; \eproc
\bcom Polynomial modified degree. A is a polynomial. If A=0 then n=-1
and otherwise n=DEG(A). \ecom 
\proc{PMON} (AL,EL: LIST): LIST; \eproc
\bcom Polynomial monomial. a is an element of a coefficient ring R.
e is a non-negative beta-integer.  A is the polynomial
A(x)=a*x**e, a univariate polynomial over R. \ecom 
\proc{PMPMV} (A,KL: LIST): LIST; \eproc
\bcom Polynomial multiplication by power of main variable. A is a
polynomial in r variables, r ge 1.  k is a non-negative integer.
B(x sub 1 , ..., x sub r ) eq A(x sub 1 , ..., x sub r ) *
x sub r sup k . \ecom 
\proc{PORD} (A: LIST): LIST; \eproc
\bcom Polynomial order. A is a non-zero polynomial. k is the order of A.
that is, if A(x)=a(n)*x**n+ ...+a(0), then k is the smallest
integer such that a(k) ne 0. \ecom 
\proc{PRED} (A: LIST): LIST; \eproc
\bcom Polynomial reductum. A is a polynomial. B is the reductum of A. \ecom 
\proc{PRT} (A: LIST): LIST; \eproc
\bcom Polynomial reciprocal transformation. A is a non-zero polynomial.
let n=DEG(A).  Then B(x)=x**n*A(1/x), where x is the main
variable of A. \ecom 
\proc{PTBCF} (RL,A: LIST): LIST; \eproc
\bcom Polynomial trailing base coefficient. A is an r-variate polynomial,
r ge 0. a=trailing base coefficient of A. \ecom 
\proc{PUFP} (RL,A: LIST): LIST; \eproc
\bcom Polynomial, univariate, from polynomial. A is an r-variate
polynomial, r ge 0. B, a univariate polynomial, equals A(0, ...,0,x). \ecom 
\proc{VCOMP} (U,V: LIST): LIST; \eproc
\bcom Vector comparison. U=(u(1), ...,u(r)) and V=(v(1), ...,v(r))
are lists of beta-integers with common length r ge 1.  If U=V
then t=0.  If U is not equal to V then t=1 if u(i) le v(i) for
all i and t=2 if v(i) le u(i) for all i. Otherwise t=3. \ecom 
\proc{VLREAD} (): LIST; \eproc
\bcom Variable list read. V, a list of variables, is read from the input
stream. Any preceding blanks are skipped. \ecom 
\proc{VLSRCH} (VL,V: LIST): LIST; \eproc
\bcom Variable list search. v is a variable. V is a list of variables
(v(1), ...,v(n)), n non-negative.  If v=v(j) for some j then
i=j. Otherwise i=0. \ecom 
\proc{VLWRIT} (V: LIST); \eproc
\bcom Variable list write. V, a list of variables, is written in the
output stream. \ecom 
\proc{VMAX} (U,V: LIST): LIST; \eproc
\bcom Vector maximum. U=(u(1), ...,u(r)) and V=(v(1), ...,v(r)) are
lists of beta-integers with common length r ge 1.  W=(w(1), ...,
w(r)) where w(i)=MAX(u(i),v(i)). \ecom 
\proc{VMIN} (U,V: LIST): LIST; \eproc
\bcom Vector maximum. U=(u(1), ...,u(r)) and V=(v(1), ...,v(r)) are
lists of beta-integers with common length r ge 1.  W=(w(1), ...,
w(r)) where w(i)=MIN(u(i),v(i)). \ecom 
\proc{VREAD} (): LIST; \eproc
\bcom Variable read. The variable v is read from the input stream. Any
number of preceding blanks are skipped. \ecom 
\section{ SAC Rational Polynomial  } 
\proc{RPDIF} (RL,A,B: LIST): LIST; \eproc
\bcom Rational polynomial difference. A and B are rational polynomials in
r variables, r ge 0. C=A-B. \ecom 
\proc{RPEMV} (RL,A,BL: LIST): LIST; \eproc
\bcom Rational polynomial evaluation, main variable. A is a rational
polynomial in r variables, r gt 0.  b is a rational number.
C(x(1), ...,x(r-1))=A(x(1), ...,x(r-1),b). \ecom 
\proc{RPFIP} (RL,A: LIST): LIST; \eproc
\bcom Rational polynomial from integral polynomial. A is an integral
polynomial in r variables, r ge 0. \ecom 
\proc{RPIMV} (RL,A: LIST): LIST; \eproc
\bcom Rational polynomial integration, main variable. A is a rational
polynomial in r variables, r gt 0.  B is the integral of A with
respect to its main variable. The constant of integration is 0. \ecom 
\proc{RPNEG} (RL,A: LIST): LIST; \eproc
\bcom Rational polynomial negative. A is an rational polynomial in r
variables, r ge 0. B=-A. \ecom 
\proc{RPPROD} (RL,A,B: LIST): LIST; \eproc
\bcom Rational polynomial product. A and B are rational polynomials in r
variables, r ge 0. C=A*B. \ecom 
\proc{RPQR} (RL,A,B: LIST; VAR Q,R: LIST); \eproc
\bcom Rational polynomial quotient and remainder. A and B are rational
polynomials in r variables with B non-zero.  Q and R are the unique
rational polynomials such that either B divides A, Q=A/B and R=0 or
else B does not divide A and A=BQ+R with DEG(R) minimal. \ecom 
\proc{RPREAD} ( VAR RL,A,V: LIST); \eproc
\bcom Rational polynomial read. The rational polynomial A is read from the
input stream.  r ge 0 is the number of variables of A and V is the
variable list of A. Any number of preceding blanks are skipped. \ecom 
\proc{RPRNP} (RL,AL,B: LIST): LIST; \eproc
\bcom Rational polynomial rational number product. B is a rational
polynomial in r variables, r ge 0. a is a rational number. C=a*B. \ecom 
\proc{RPSUM} (RL,A,B: LIST): LIST; \eproc
\bcom Rational polynomial sum. A and B are rational polynomials in r
variables, r ge 0. C=A+B. \ecom 
\proc{RPWRIT} (RL,A,V: LIST); \eproc
\bcom Rational polynomial write. A is a rational polynomial in r
variables, r ge 0.  V is a variable list for A.  A is written
in the output stream in external canonical form. \ecom 
