# [om] Univariate Polynomials

Professor James Davenport jhd at cs.bath.ac.uk
Sat Aug 9 18:56:44 CEST 2003

```I attach a CD and STS for this, prompted by discussions with John Abbott
and Hans Schonemann at ISSAC 2003. I would be grateful if these two would
review it, and if David C. could mount it as an extra.
James
-------------- next part --------------
<CD>
<CDName> polyu </CDName>
<CDURL> http://www.openmath.org/cd/polyu.ocd </CDURL>
<CDReviewDate> 2003-04-01 </CDReviewDate>
<CDDate> 2003-08-06 </CDDate>
<CDStatus> experimental </CDStatus>
<CDVersion> 1 </CDVersion>
<CDRevision> 0 </CDRevision>
<CDUses>
<CDName>setname1</CDName>
</CDUses>
<Description>
This CD contains operators to deal with polynomials and more precisely
Univariate Polynomials.
Note that recursive polynomials are regarded as univariates in their most
significant variable (as defined by the order in PolynomialRingR:
the first variable to appear is the most significant),
with monomials in decreasing order of exponent, and coefficients
being polynomials in the rest of the variables, and therefore univariates
are a special case. This is provided as a separate CD to allow for
univariate-only operations (e.g. composition) and for systems that only
understand univariates, e.g. NTL.
</Description>

<CDComment>
Based on recursive polynomials 2003-08-06 JHD
</CDComment>

<CDComment>
Definition of data-structure constructors
</CDComment>

<CDComment>
The polynomial x^6 + 3*x^5 +2 can be conceptually encoded as
poly_u_rep(x,
term(6,1),
term(5,3),
term(0,2))
It lies in polynomial_ring_u(Z,x)
</CDComment>

<CDDefinition>
<Name> term </Name>
<Description>
A constructor for monomials, that is products of powers and
elements of the base ring.
First argument is from N (the exponent of the variable
implied by an outer poly_u_rep)
second argument is a coefficient (from the ground field)
</Description>
</CDDefinition>

<CDDefinition>
<Name> poly_u_rep </Name>
<Description>
A constructor for the representation of polynomials.
The first argument is the polynomial variable, the rest are
monomials (in decreasing order of exponent).
</Description>
<Example>

The polynomial x^6 + 3*x^5 + 2 may be encoded as:

<OMOBJ>
<OMA>
<OMS name="poly_u_rep" cd="polyu"/>
<OMV name="x"/>
<OMA>
<OMS name="term" cd="polyu"/>
<OMI> 6 </OMI>
<OMI> 1 </OMI>
</OMA>
<OMA>
<OMS name="term" cd="polyu"/>
<OMI> 5 </OMI>
<OMI> 3 </OMI>
</OMA>
<OMA>
<OMS name="term" cd="polyu"/>
<OMI> 0 </OMI>
<OMI> 2 </OMI>
</OMA>
</OMA>
</OMOBJ>
</Example>
</CDDefinition>

<CDDefinition>
<Name> polynomial_u </Name>
<Description>
The constructor of Recursive Polynomials. The first argument
is the polynomial ring containing the polynomial and the second
is a "poly_u_rep".
</Description>

<Example>
The polynomial x^6 + 3*x^5 + 2 in the
polynomial ring with the integers as the coefficient ring and
variable x may be encoded as:

<OMOBJ>
<OMA>
<OMS name="polynomial_u" cd="polyu"/>
<OMA>
<OMS name="polynomial_ring_u" cd="polyu"/>
<OMS name="Z" cd="setname1"/>
<OMV name="x"/>
</OMA>
<OMA>
<OMS name="poly_u_rep" cd="polyu"/>
<OMV name="x"/>
<OMA>
<OMS name="term" cd="polyu"/>
<OMI> 6 </OMI>
<OMI> 1 </OMI>
</OMA>
<OMA>
<OMS name="term" cd="polyu"/>
<OMI> 5 </OMI>
<OMI> 3 </OMI>
</OMA>
<OMA>
<OMS name="term" cd="polyu"/>
<OMI> 0 </OMI>
<OMI> 2 </OMI>
</OMA>
</OMA>
</OMA>
</OMOBJ>
</Example>
</CDDefinition>

<CDComment>
Polynomial ring constructor
</CDComment>

<CDDefinition>
<Name> polynomial_ring_u </Name>
<Description>
The constructor of a univariate polynomial ring. The first argument
is a ring (the ring of the coefficients), the second is the variable.
</Description>
<CMP>
Univariates are just recursive polynomials in one variable (though
constructed using isomorphic, but different, constructors).
</CMP>
<FMP>
<OMOBJ>
<OMA>
<OMS name="eq" cd="relation1"/>
<OMA>
<OMS name="polynomial_ring_u" cd="polyr"/>
<OMV name="R"/>
<OMV name="x"/>
</OMA>
<OMA>
<OMS name="polynomial_ring_r" cd="polyr"/>
<OMV name="R"/>
<OMV name="x"/>
</OMA>
</OMA>
</OMOBJ>
</FMP>
<Example>
<OMOBJ>
<OMA>
<OMS name="polynomial_ring_u" cd="polyr"/>
<OMS name="Z" cd="setname1"/>
<OMV name="x"/>
</OMA>
</OMOBJ>
</Example>
</CDDefinition>

</CD>
-------------- next part --------------
<CDSignatures type="sts" cd="polyu">

<CDSComment>
Date:  2003-08-06
Author: James Davenport
</CDSComment>

<Signature name="term" >
<OMOBJ>
<OMA>
<OMS name="mapsto" cd="sts"/>
<OMS name="N" cd="setname1"/>
<OMV name="Ring"/>
<OMV name="MonomialU"/>
</OMA>
</OMOBJ>
</Signature>

<Signature name="PolyUrep" >
<OMOBJ>
<OMA>
<OMS name="mapsto" cd="sts" />
<OMV name="PolynomialVariable" />
<OMA>
<OMS name="nary" cd="sts"/>
<OMV name="MonomialU"/>
</OMA>
<OMV name="poly_u_rep" />
</OMA>
</OMOBJ>
</Signature>

<Signature name="polynomial_u" >
<OMOBJ>
<OMA>
<OMS name="mapsto" cd="sts" />
<OMA>
<OMS name="structure" cd="sts" />
<OMV name="Ring"/>
</OMA>
<OMV name="poly_u_rep"/>
<OMS name="polynomial_ring" cd="polysts" />
</OMA>
</OMOBJ>
</Signature>

<Signature name="polynomial_ring_u" >
<OMOBJ>
<OMA>
<OMS name="mapsto" cd="sts" />
<OMA>
<OMS name="structure" cd="sts"/>
<OMV name="Ring"/>
</OMA>
<OMV name="PolynomialVariable"/>
<OMA>
<OMS name="structure" cd="sts"/>
<OMS name="PolynomialRing" cd="polysts"/>
</OMA>
</OMA>
</OMOBJ>
</Signature>

</CDSignatures>
```