Gröbner/Standard Bases Over Z\mathbb Z

In this section, we consider a polynomial ring Z[x]=Z[x1,,xn]\mathbb Z[x] = \mathbb Z[x_1, \dots, x_n] over the integers. As in the previous section on Gröbner/standard bases over fields, let >> be a monomial ordering on Monn(x)\text{Mon}_n(x). With respect to this ordering, the localization Z[x]>\mathbb Z[x]_> and, given a nonzero element fZ[x]>f \in \mathbb Z[x]_>, the notions leading term, leading monomial, leading exponent, leading coefficient, and tail of ff are defined as before.

Note

Over Z\mathbb Z, the basic idea of multivariate polynomial division with remainder in OSCAR is as follows: If axαax^\alpha is the leading term of the intermediate dividend, fif_i is some divisor whose leading monomial equals xαx^\alpha, say LT(fi)=bxα\text{LT}(f_i) = bx^\alpha, and rr is the remainder of aa on division by bb in Z\mathbb Z, then axαax^\alpha is replaced by rxαrx^\alpha.

Examples
julia> R, (x, y) = polynomial_ring(ZZ, [:x, :y]);

julia> reduce(3*x, [2*x])
x

julia> reduce(6*x, [5*x, 2*x])
0

The notion of leading ideals as formulated in the previous section and the definitions of standard bases (Gröbner bases) carry over: A standard basis for an ideal IK[x]>I\subset K[x]_> with respect to >> is a finite subset GG of II such that L>(G)=L>(I)\text{L}_>(G) = \text{L}_>(I) (a standard basis with respect to a global monomial ordering is also called a Gröbner basis).

There is, however, a sublety: Over a field, the defining condition of a standard basis as stated above is equivalent to saying that the LT>(g)\text{LT}_>(g), gG{0}g\in G\setminus\{0\} generate L>(I)\text{L}_>(I). Over Z\mathbb Z, the latter condition implies the former one, but not vice versa. Consequently, over Z\mathbb Z, a finite subset GG of II satisfying the latter condition is called a strong standard basis for II (with respect to >>).

We refer to the textbook [AL94] for more on this.

Note

Over Z\mathbb Z, the standard bases returned by OSCAR are strong in the sense above.

Examples
julia> R, (x,y) = polynomial_ring(ZZ, [:x,:y])
(Multivariate polynomial ring in 2 variables over ZZ, ZZMPolyRingElem[x, y])

julia> I = ideal(R, [3*x^2*y+7*y, 4*x*y^2-5*x])
Ideal generated by
  3*x^2*y + 7*y
  4*x*y^2 - 5*x

julia> G = groebner_basis(I, ordering = lex(R))
Gröbner basis with elements
  1: 28*y^3 - 35*y
  2: 4*x*y^2 - 5*x
  3: 15*x^2 + 28*y^2
  4: 3*x^2*y + 7*y
  5: x^2*y^2 - 5*x^2 - 7*y^2
with respect to the ordering
  lex([x, y])
This documentation is not for the latest stable release, but for either the development version or an older release.
Click here to go to the documentation for the latest stable release.