OpenMath Content Dictionary: poly

Canonical URL:
http://www.openmath.org/cd/poly.ocd
CD Base:
http://www.openmath.org/cd
CD File:
poly.ocd
CD as XML Encoded OpenMath:
poly.omcd
Defines:
coefficient, coefficient_ring, convert, degree, degree_wrt, discriminant, evaluate, expand, factor, factored, gcd, lcm, leading_coefficient, partially_factored, power, resultant, squarefree, squarefreed
Date:
2004-03-30
Version:
5 (Revision 1)
Review Date:
2017-12-31
Status:
experimental


     This document is distributed in the hope that it will be useful, 
     but WITHOUT ANY WARRANTY; without even the implied warranty of 
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

     The copyright holder grants you permission to redistribute this 
     document freely as a verbatim copy. Furthermore, the copyright
     holder permits you to develop any derived work from this document
     provided that the following conditions are met.
       a) The derived work acknowledges the fact that it is derived from
          this document, and maintains a prominent reference in the 
          work to the original source.
       b) The fact that the derived work is not the original OpenMath 
          document is stated prominently in the derived work.  Moreover if
          both this document and the derived work are Content Dictionaries
          then the derived work must include a different CDName element,
          chosen so that it cannot be confused with any works adopted by
          the OpenMath Society.  In particular, if there is a Content 
          Dictionary Group whose name is, for example, `math' containing
          Content Dictionaries named `math1', `math2' etc., then you should 
          not name a derived Content Dictionary `mathN' where N is an integer.
          However you are free to name it `private_mathN' or some such.  This
          is because the names `mathN' may be used by the OpenMath Society
          for future extensions.
       c) The derived work is distributed under terms that allow the
          compilation of derived works, but keep paragraphs a) and b)
          intact.  The simplest way to do this is to distribute the derived
          work under the OpenMath license, but this is not a requirement.
     If you have questions about this license please contact the OpenMath
     society at http://www.openmath.org.
  Author: OpenMath Consortium
  SourceURL: https://github.com/OpenMath/CDs
            

This CD contains generic operators to deal with various forms of polynomials. The arithmetic operators from arith1 etc. are valid on these polynomials: there is also the operator "power" from this CD, which creates formal powers. More specific operations for Distributed Multivariate Polynomials can be found in polyd.ocd, and for Recursive polynomials in polyr.ocd.

Original OpenMath v1.1 Poly 1997
Update to Current Format 1999-07-07 DPC
Move the names of rings to setname.ocd 1999-11-09 JHD
Split into poly{,d,r} 1999-11-14 JHD
Updated following Abbott/Strotmann/Davenport at Dagstuhl October 2001 JHD
     Definition of some constructors

power

Role:
application
Description:

Takes a polynomial and a (non-negative) integer and produces a formal power. Although OpenMath does not specify operational semantics, the idea here is that these powers are not evaluated. We note that the power from arith1 would suggest the expanded form.

Example:
power ( x , 2 )
Signatures:
sts


[Next: factored] [Last: convert] [Top]

factored

Role:
application
Description:

The constructor for a factorization. Its arguments are formal powers (see previous operator), where the polynomials are supposed to be irreducible (except possibly for a content from the ground ring). Note that "factored" is not a call to factorise something, rather a statement that we know a factorisation.

Example:
factored ( power ( x , 2 ) , power ( x + 2 , 1 ) , power ( x - 2 , 1 ) )
Signatures:
sts


[Next: squarefreed] [Previous: power] [Top]

squarefreed

Role:
application
Description:

The constructor for a square-free factorization. Its arguments should have the structure of the above "factored", where the polynomials should be square-free. Note that this is not necessarily a minimal square-free decomposition: some exponents can occur more than once. Again, this is a statement that we have a square-free factorisation, rather than a request to compute one.

Example:
squarefreed ( power ( x , 2 ) , power ( x 2 - 4 , 1 ) )
Signatures:
sts


[Next: partially_factored] [Previous: factored] [Top]

partially_factored

Role:
application
Description:

The constructor for a factorization. Its arguments are formal powers (see operator above), where nothing in particular is assumed about the polynomials (they may or may not be irreducible, or relatively prime).

Example:
partially_factored ( power ( x 3 + x 2 , 1 ) , power ( x - 2 , 1 ) )
Signatures:
sts


[Next: expand] [Previous: squarefreed] [Top]
     Definition of operations

expand

Role:
application
Description:

Converts a factored or squarefreed form into the expanded polynomial over the same ring, so that factored(recursive) -> recursive, etc.

Example:
expand ( factored ( power ( x , 2 ) , power ( x + 2 , 1 ) , power ( x - 2 , 1 ) ) ) = x 4 - 4 x 2
Signatures:
sts


[Next: degree] [Previous: partially_factored] [Top]

degree

Role:
application
Description:

The total degree of its argument. The value returned is a non-negative integer. We note that the degree of 0 is undefined. Note that this operation takes no account of any weights that have been defined: see weighted_degree in polyd.

Commented Mathematical property (CMP):
degree(x^n)=n
Formal Mathematical property (FMP):
degree ( x n ) = n
Signatures:
sts


[Next: degree_wrt] [Previous: expand] [Top]

degree_wrt

Role:
application
Description:

The degree with respect to a variable (the second argument). We note that the degree of 0 is undefined.

Commented Mathematical property (CMP):
degreeWrt(x^ny^m,x)=n
Formal Mathematical property (FMP):
degree_wrt ( x n y m , x ) = n
Signatures:
sts


[Next: leading_coefficient] [Previous: degree] [Top]

leading_coefficient

Role:
application
Description:

The leading coefficient with respect to a variable (the second argument). We note that the leading coefficient of 0 is undefined.

Signatures:
sts


[Next: coefficient] [Previous: degree_wrt] [Top]

coefficient

Role:
application
Description:

The coefficient with respect to a list of variables (the second argument) raised to a list of powers (the third argument). Zero if no such term is present. Not all variables need be specified.

Signatures:
sts


[Next: coefficient_ring] [Previous: leading_coefficient] [Top]

coefficient_ring

Role:
application
Description:

The coefficient ring.

Signatures:
sts


[Next: evaluate] [Previous: coefficient] [Top]

evaluate

Role:
application
Description:

Evaluation of a polynomial at a value or vector of values.

Signatures:
sts


[Next: factor] [Previous: coefficient_ring] [Top]

factor

Role:
application
Description:

The decomposition of its argument into irreducible factors. A program that can compute the factorization is required to return a "factored" object - see above. It is currently an open question whether powers of 1 can be omitted.

Example:
factor ( x 4 - 4 x 2 ) = factored ( power ( x , 2 ) , power ( x + 2 , 1 ) , power ( x - 2 , 1 ) )
Signatures:
sts


[Next: squarefree] [Previous: evaluate] [Top]

squarefree

Role:
application
Description:

The square-free decomposition of its argument. A program that can compute the factorization is required to return a "squarefreed" object.

Example:
squarefree ( x 4 - 4 x 2 ) = squarefreed ( power ( x , 2 ) , power ( x 2 - 4 , 1 ) )
Signatures:
sts


[Next: gcd] [Previous: factor] [Top]

gcd

Role:
application
Description:

The n-ary greatest common divisor of its polynomial arguments. This is unique up to units.

Signatures:
sts


[Next: lcm] [Previous: squarefree] [Top]

lcm

Role:
application
Description:

The least common multiple of its polynomial arguments. This is unique up to units, but the choice must be compatible with that made for gcd: see the CMP/FMP.

Commented Mathematical property (CMP):
for all x,y lcm(x,y) = (x*y)/gcd(x,y)
Formal Mathematical property (FMP):
x , y . lcm ( x , y ) = x y gcd ( x , y )
Signatures:
sts


[Next: discriminant] [Previous: gcd] [Top]

discriminant

Role:
application
Description:

Function taking two arguments, it represents the discriminant of a polynomial, which is the first argument, with respect to the given variable which is the second argument.

Commented Mathematical property (CMP):
discriminant(p,x)=resultant(p,diff(p,x),x)/leading_coefficient(p,x)
Formal Mathematical property (FMP):
discriminant ( p , x ) = resultant ( p , d d x ( p ) , x ) leading_coefficient ( p , x )
Signatures:
sts


[Next: resultant] [Previous: lcm] [Top]

resultant

Role:
application
Description:

Function taking three arguments, it represents the resultant of two polynomials, which are the first two arguments, with respect to the given variable which is the third argument.

Commented Mathematical property (CMP):
if for all f,g in R[x] | if there exists an a in R s.t. f(a) = g(a) = 0 then resultant(f,g,x) = 0
       We note that the polynomials utilised in the following FMP are
       recursive in nature, however the resultant symbol may be used
       also on dense polynomials.
     
Formal Mathematical property (FMP):
f , g . f polynomial_ring_r ( R , x ) g polynomial_ring_r ( R , x ) a . a R f ( a ) = 0 g ( a ) = 0 resultant ( f , g , x ) = 0
Signatures:
sts


[Next: convert] [Previous: discriminant] [Top]

convert

Role:
application
Description:

Conversion between polynomial rings. The first argument is a polynomial and the second is a polynomial ring. This represents the conversion of the given polynomial as an element of the given ring. A program that can compute the conversion is required to return a polynomial in the given ring.

Signatures:
sts


[First: power] [Previous: resultant] [Top]