[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>


More information about the Om mailing list