## `Dom::Polynomial` -- the domains of polynomials in arbitrarily many indeterminates

#### Introduction

`Dom::Polynomial``(R, ..)` creates the domain of polynomials in arbitrarily many indeterminates over the commutative ring `R` in distributed representation.

#### Domain

`Dom::Polynomial( <R <, Order>>)`

#### Parameters

`R` | - | a commutative ring, i.e., a domain of category `Cat::CommutativeRing`. Default: `Dom::ExpressionField(normal)`.
`Order` | - | a monomial ordering, i.e., one of the predefined orderings `LexOrder`, `DegreeOrder`, or `DegInvLexOrder` or an element of the domain `Dom::MonomOrdering`. Default: `LexOrder`.

#### Details

- `Dom::Polynomial` represents polynomials in arbitrarily many indeterminates over arbitrary commutative rings.

  It is simply a frontend to the domain `Dom::DistributedPolynomial([],R,Order)` and thus all usual algebraic and arithmetical polynomial operations are implemented. Please see the documentation for `Dom::DistributedPolynomial` for a list of methods.

- `Dom::Polynomial``(R, Order)` creates a domain of polynomials in arbitrarily many indeterminates over a domain of category `Cat::CommutativeRing` in sparse distributed representation with respect to the monomial ordering `Order`.
- If `Dom::Polynomial` is called without any argument, a polynomial domain over the domain `Dom::ExpressionField(normal)` with respect to the lexicographic monomial ordering is created.

- Only commutative coefficient rings of type `DOM_DOMAIN` which inherit from `Dom::BaseDomain` are allowed. If `R` is of type `DOM_DOMAIN` but does not inherit from `Dom::BaseDomain`, the domain `Dom::ExpressionField``(normal)` will be used instead.

- Only identifiers should be used as polynomial indeterminates, since when creating a new element from a polynomial or a polynomial expression the function `indets` is first called to get the identifiers and then the polynomial is created with respect to these identifiers.

- It is highly recommend to use only coefficient rings with unique zero representation. Otherwise it may happen that, e.g., a polynomial division will not terminate or a wrong degree will be returned.

- Please note that for reasons of efficiency not all methods check their arguments, not even at the interactive level. In particular, this is true for many access methods, converting methods and technical methods. Thus, improper use of these methods may result in confusing error messages.

#### Creating Elements

``Dom::Polynomial`(R <, Order>)(p)`
``Dom::Polynomial`(R <, Order>)(lm,v)`

#### Parameters

`p` | - | a polynomial or a polynomial expression.
`lm` | - | list of monomials, which are represented as lists containing the coefficients together with the exponents or exponent vectors.
`v` | - | list of indeterminates.

#### Categories

`Cat::Polynomial(R)`

#### Related Domains

`Dom::DistributedPolynomial`, `Dom::MultivariatePolynomial`, `Dom::UnivariatePolynomial`

#### Entries

characteristic

  The characteristic of this domain, which is the characteristic of `R`.

coeffRing

  The coefficient ring of this domain as defined by the parameter `R`.

key

  The name of the domain created.

one

  The neutral element w.r.t. `"_mult"`, which is `R::one`.

ordering

  The monomial order as defined by the parameter `Order`.

zero

  The neutral element w.r.t. `"_plus"`, which is `R::zero`.

#### Example 1

The following call creates the polynomial domain over the rationals.

    >> PR:=Dom::Polynomial(Dom::Rational)

                     Dom::Polynomial(Dom::Rational, LexOrder)

Since the monomial ordering was not specified, this domain is created with the default value for this parameter.

It is rather easy to create elements of this domain, as, e.g.,

    >> a := PR(x*(2*x + y^3) - 7/2)

                                    2      3
                                 2 x  + x y  - 7/2

    >> b := PR(x*(2*t + z^3) - 6)

                                            3
                                 2 t x + x z  - 6

    >> c := a^2-b/3+3

                         4      3  3    2  6       2        3
          - 2/3 t x + 4 x  + 4 x  y  + x  y  - 14 x  - 7 x y  -

                    3
             1/3 x z  + 69/4

#### Super-Domain

`Dom::DistributedPolynomial`

#### Axioms

if `R` has `Ax::normalRep`, then
`Ax::normalRep`
if `R` has `Ax::canonicalRep`, then
`Ax::canonicalRep`

#### Background

- To create polynomials from expressions with no suitable indeterminates the dummy variable `_dummy` is introduced. With this variable it is possible to create elements from constants which otherwise would fail. The drawback of this approach is that two mathematically equal polynomials may have variable lists which differ by this dummy variable.

#### Changes

- used to be called `Dom::PolynomialExplicit([],R,Order)`
- The former implementation of this domain does no longer exist and has been completely reimplemented.
- It is now allowed to call this domain with no, one or two arguments. With the second argument one can now choose an appropriate monomial ordering.
- The method `"indets"` now returns a set of indeterminates.
- The methods `"Rep"`, `"decompose"`, `"int"`, `"makeIntegral"`, `"monic"`, `"orderedVariableList"`, `"ordering"`, `"reductum"`, `"resultant"` were added.

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