## `Cat::Polynomial` -- the category of multivariate polynomials

#### Introduction

``Cat::Polynomial`(R)` represents the category of multivariate polynomials over `R`.

#### Generating the category

`Cat::Polynomial(R)`

#### Parameters

`R` | - | A domain which must be from the category `Cat::CommutativeRing`.

#### Categories

if `R` is a `Cat::FactorialDomain` then
`Cat::FactorialDomain`
if `R` is a `Cat::GcdDomain` then
`Cat::GcdDomain`
if `R` is a `Cat::IntegralDomain` then
`Cat::IntegralDomain`
`Cat::PartialDifferentialRing`

, `Cat::Algebra(R)`

#### Axioms

if `R` has `Ax::canonicalUnitNormal` then
`Ax::canonicalUnitNormal`
if `R` has `Ax::closedUnitNormals` then
`Ax::closedUnitNormals`

#### Details

- A ``Cat::Polynomial`(R)` is a multivariate polynomial over a commutative coefficient ring `R`.

#### Entries

coeffRing

  The coefficient ring `R`.

characteristic

  The characteristic of this domain, which is is the same as that of the ring `R`.

#### Method coeff: returns coefficients

- `coeff(dom p)`
- - Must return an expression sequence with the coefficients of `p`.

- `coeff(dom p, indeterminate x, Type::NonNegInt n)`
- - Must return the coefficient of `x^n` of `p`, which is a polynomial in the remaining indeterminates.

- `coeff(dom p, Type::NonNegInt n)`
- - Must return the coefficient of `x^n` of `p`, where `x` is the main variable of `p`.

#### Method degree: returns total degree

- `degree(dom p)`
- - Must return the total degree of `p`.

- `degree(dom p, indeterminate x)`
- - Must return the degree of `p` with respect to the indeterminate `x`.

#### Method degreevec: returns degree vector

- `degreevec(dom p)`
- - Must return a list with the exponents of the leading term of `p`. The order of the exponents corresponds to the order of the indeterminates as given by the method `"indets"`.

#### Method evalp: evaluates at a point

- `evalp(dom p, indeterminate x = R v...)`
- - Must evaluate `p` at the point `x` = `v` where `x` is an indeterminate and `v` an element of `R`.
  - More than one evaluation point may be given. The result must be a polynomial in the remaining indeterminates or an element of `R`.

#### Method indets: returns indeterminates

- `indets(dom p)`
- - Must return a list with the indeterminates of `p`.

#### Method lcoeff: returns leading coefficient

- `lcoeff(dom p)`
- - Must return the leading coefficient of `p`.

#### Method lmonomial: returns leading monomial

- `lmonomial(dom p)`
- - Must return the leading monomial of `p`.

#### Method lterm: returns leading term

- `lterm(dom p)`
- - Must return the leading term of `p`.

#### Method mainvar: returns main variable

- `mainvar(dom p)`
- - Must return the main variable of `p`, which is the first of the indeterminates as given by the method `"indets"`.

#### Method mapcoeffs: map coefficients

- `mapcoeffs(dom p, function f <, a...>)`
- - Must replace the coefficients `c_i` of `p` by the results of the function calls `f(c_i, a...)`.

#### Method multcoeffs: multiply coefficients

- `multcoeffs(dom p, R c)`
- - Must multiply all coefficients of `p` by `c`.

#### Method nterms: return number of terms

- `nterms(dom p)`
- - Must return the number of non-zero terms of `p`.

#### Method nthcoeff: return n-th coefficient

- `nthcoeff(dom p, Type::PosInt n)`
- - Must return the `n`-th coefficient of `p`.

#### Method nthmonomial: return n-th monomial

- `nthmonomial(dom p, Type::PosInt n)`
- - Must return the `n`-th monomial of `p`.

#### Method nthterm: return n-th term

- `nthterm(dom p, Type::PosInt n)`
- - Must return the `n`-th term of `p`.

#### Method tcoeff: return trailing coefficient

- `tcoeff(dom p)`
- - Must return the trailing (i.e. last) coefficient of `p`.

#### Method unitNormal: returns unit normal

- `unitNormal(dom p)`
- - Must return the unit normal representation of `p`.
  - An implementation is provided if `R` has the axiom `Ax::canonicalUnitNormal`: In this case `p` is multiplied by an unit of `R` such that the leading coefficient has unit normal representation in `R`.

#### Method unitNormalRep: returns unit normal representation

- `unitNormalRep(dom p)`
- - Must return the unit normal representation of `p` and the factors needed to bring `p` into unit normal form (see `Cat::IntegralDomain` for the return value expected).
  - An implementation is provided if `R` has the axiom `Ax::canonicalUnitNormal`.

#### Method content: return content

- `content(dom p)`
- - Returns the content of `p` if `R` is a `Cat::GcdDomain`.

#### Method isUnit: tests if element is a unit

- `isUnit(dom p)`
- - Returns `TRUE` iff `p` is a unit.

#### Method primpart: returns primitive part

- `primpart(dom p)`
- - Returns the primitive part of `p` if `R` is a `Cat::GcdDomain`: The content of `p` is removed and the unit normal of the result is returned.

#### Method solve: solves polynomial equation

- `solve(dom p, indeterminate x <, opt...>)`
- - Solves the polynomial equation `p = 0` with respect to `x` over the domain `R`. See the function `solve` for details about the optional arguments `opt`....

- `solve(dom p, indeterminate x = DOM_DOMAIN T <, opt...>)`
- - Solves the polynomial equation `p = 0` with respect to `x` over the domain `T`. See the function `solve` for details about the optional arguments `opt`....

- `solve(dom p)`
- - The polynomial `p` must be univariate. Solves the polynomial equation `p = 0` with respect to the indeterminate of `p` over the domain `R`.

#### Changes

- Has been renamed. Used to be `Cat::PolynomialCat`.

Do you have questions or comments?
Copyright © SciFace Software GmbH & Co. KG 2000