====================================================================
MultivariatePolynomial
DistributedMultivariatePolynomial
HomogeneousDistributedMultivariatePolynomial
GeneralDistributedMultivariatePolynomial
====================================================================

DistributedMultivariatePolynomial which is abbreviated as DMP and 
HomogeneousDistributedMultivariatePolynomial, which is abbreviated
as HDMP, are very similar to MultivariatePolynomial except that 
they are represented and displayed in a non-recursive manner.

  (d1,d2,d3) : DMP([z,y,x],FRAC INT) 
                      Type: Void

The constructor DMP orders its monomials lexicographically while
HDMP orders them by total order refined by reverse lexicographic
order.

  d1 := -4*z + 4*y**2*x + 16*x**2 + 1 
            2       2
   - 4z + 4y x + 16x  + 1
            Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer)

  d2 := 2*z*y**2 + 4*x + 1 
       2
   2z y  + 4x + 1
            Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer)

  d3 := 2*z*x**2 - 2*y**2 - x 
       2     2
   2z x  - 2y  - x
            Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer)

These constructors are mostly used in Groebner basis calculations.

  groebner [d1,d2,d3]
        1568  6   1264  5    6   4   182  3   2047  2    103      2857
   [z - ---- x  - ---- x  + --- x  + --- x  - ---- x  - ---- x - -----,
        2745       305      305      549       610      2745     10980
     2    112  6    84  5   1264  4    13  3    84  2   1772       2
    y  + ---- x  - --- x  - ---- x  - --- x  + --- x  + ---- x + ----,
         2745      305       305      549      305      2745     2745
     7   29  6   17  4   11  3    1  2   15     1
    x  + -- x  - -- x  - -- x  + -- x  + -- x + -]
          4      16       8      32      16     4
       Type: List DistributedMultivariatePolynomial([z,y,x],Fraction Integer)

  (n1,n2,n3) : HDMP([z,y,x],FRAC INT)
                      Type: Void

  n1 := d1
     2       2
   4y x + 16x  - 4z + 1
 Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer)

  n2 := d2
       2
   2z y  + 4x + 1
 Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer)

  n3 := d3
       2     2
   2z x  - 2y  - x
 Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer)

Note that we get a different Groebner basis when we use the HDMP
polynomials, as expected.

  groebner [n1,n2,n3]
     4     3   3  2   1     1   4   29  3   1  2   7        9     1
   [y  + 2x  - - x  + - z - -, x  + -- x  - - y  - - z x - -- x - -,
               2      2     8        4      8      4       16     4
       2        1   2      2       1     2    2   1
    z y  + 2x + -, y x + 4x  - z + -, z x  - y  - - x,
                2                  4              2
     2     2     2   1     3
    z  - 4y  + 2x  - - z - - x]
                     4     2
      Type: List HomogeneousDistributedMultivariatePolynomial([z,y,x],
                                                           Fraction Integer)

GeneralDistributedMultivariatePolynomial is somewhat more flexible in
the sense that as well as accepting a list of variables to specify the
variable ordering, it also takes a predicate on exponent vectors to
specify the term ordering.  With this polynomial type the user can
experiment with the effect of using completely arbitrary term orderings.  
This flexibility is mostly important for algorithms such as Groebner 
basis calculations which can be very sensitive to term ordering.

See Also:
o )help Polynomial
o )help UnivariatePolynomial
o )help MultivariatePolynomial
o )help DistributedMultivariatePolynomial
o )help GeneralDistributedMultivariatePolynomial
o )show HomogeneousDistributedMultivariatePolynomial

