Computation in ideals of local polynomial rings is possible because of the construction of standard bases of such ideals. These are the counterpart to Gröbner bases for ideals of global polynomial rings. Currently, standard bases may only be computed for ideals defined over fields.
Magma computes a standard basis of an ideal using the Mora normal form and standard basis algorithms (with the homogenization technique): see [CLO98, Sec. 4.4] for an overview.
In contrast to the global case, for a given fixed monomial ordering a standard basis of an ideal is not unique in general because it can be difficult to get the lower order terms of polynomials in the standard basis into a unique form. But the leading monomials of a standard basis are always sorted in Magma and are unique.
The following functions and procedures allow one to construct standard bases. Note that a standard basis for an ideal will be automatically generated when necessary; the Groebner procedure below simply allows control of the algorithms used to compute the standard basis. The verbose flags are shared with those for global Gröbner basis construction (since the standard basis algorithms reduce to those), so see Section Verbosity for details on these.
Given an ideal I, force the standard basis of I to be computed, and then return that.
Given a set or sequence S of polynomials of a local polynomial ring R, return a standard basis of the ideal generated by S as a sorted sequence.
Given an ideal I of a local polynomial ring R, together with a polynomial f in I, and supposing that I has basis b1, ..., bk, return a sequence [g1, ..., gk] of elements of R so that f = g1 * b1 + ... + gk * bk. If I was created by IdealWithFixedBasis(B), then the fixed basis B is used as the basis b1, ..., bk; otherwise the Gröbner basis of I is used as the basis b1, ..., bk. The resulting sequence is not necessarily unique.
Given an ideal I such that I has a fixed basis (i.e., such that I was created via the function IdealWithFixedBasis), return the coordinate matrix C of I. The i-th row of C gives the coordinates of the i-th element of the Gröebner basis of I w.r.t. the fixed basis of I. The Gröebner basis of I is first computed if it has not been already.
> Q := RationalField(); > R<x,y,z> := LocalPolynomialRing(Q, 3); > I := Ideal([x^5 - x*y^6 + z^7, x*y + y^3 + z^3, x^2 + y^2 - z^2]); > I; Ideal of Localization of Polynomial Ring of rank 3 over Rational Field Order: Local Lexicographical Variables: x, y, z Basis: [ x^5 - x*y^6 + z^7, x*y + y^3 + z^3, x^2 + y^2 - z^2 ] > StandardBasis(I); [ x^2 + y^2 - z^2, x*y + y^3 + z^3, y^3 - x*y^3 - y*z^2 - x*z^3, x*z^4 + 3*y^2*z^4 + 4*x*y^4*z^4 + y*z^5 + 5*x*y^3*z^5 - 2*z^6 + 4*y^2*z^6 + x*y^2*z^6 + z^7 - 2*x*z^7 + 7*y*z^7 + 4*x*y*z^7 - y^2*z^7 + 3*z^8 + 4*x*z^8, y^2*z^4 + 3*y^5*z^5 - z^6 + 3/2*x*z^6 + 2*y^2*z^6 + y^4*z^6 - x*z^7 + 7/2*y*z^7 - x*y^2*z^7 - y^3*z^7 + 3/2*z^8 - 3/2*x*z^8 - 2*y*z^8 + 2*x*y*z^8 + 3/2*y^2*z^8, y*z^7 + 1/2*x*z^8 + 23/4*y*z^8 - 9/4*x*y^3*z^8 + 3/2*y^4*z^8, z^9 ]We note that no elements of the standard basis have factors which are units in R.
> [Factorization(f): f in $1]; [ [ <x^2 + y^2 - z^2, 1> ], [ <x*y + y^3 + z^3, 1> ], [ <y^2 - x*y^2 - y*z + x*y*z - x*z^2, 1>, <y + z, 1> ], [ <z, 4>, <x + 3*y^2 + 4*x*y^4 + y*z + 5*x*y^3*z - 2*z^2 + 4*y^2*z^2 + x*y^2*z^2 + z^3 - 2*x*z^3 + 7*y*z^3 + 4*x*y*z^3 - y^2*z^3 + 3*z^4 + 4*x*z^4, 1> ], [ <z, 4>, <y^2 + 3*y^5*z - z^2 + 3/2*x*z^2 + 2*y^2*z^2 + y^4*z^2 - x*z^3 + 7/2*y*z^3 - x*y^2*z^3 - y^3*z^3 + 3/2*z^4 - 3/2*x*z^4 - 2*y*z^4 + 2*x*y*z^4 + 3/2*y^2*z^4, 1> ], [ <z, 7>, <y + 1/2*x*z + 23/4*y*z - 9/4*x*y^3*z + 3/2*y^4*z, 1> ], [ <z, 9> ] ]
> Q := RationalField(); > R<x,y,z> := PolynomialRing(Q, 3); > I := Ideal([x^2 - x*y^3 + z^3, x*y + y^2 + z, x + y^2 - z^2]); > Groebner(I); I; Ideal of Polynomial ring of rank 3 over Rational Field Order: Lexicographical Variables: x, y, z Inhomogeneous, Dimension 0 Groebner basis: [ x - y*z + 127/1052*z^9 + 585/1052*z^8 + 233/263*z^7 + 1273/1052*z^6 + 695/526*z^5 + 223/1052*z^4 + 569/526*z^3 + 35/1052*z^2 - z, y^2 + y*z - 127/1052*z^9 - 585/1052*z^8 - 233/263*z^7 - 1273/1052*z^6 - 695/526*z^5 - 223/1052*z^4 - 569/526*z^3 - 1087/1052*z^2 + z, y*z^2 + 51/263*z^9 + 208/263*z^8 + 308/263*z^7 + 476/263*z^6 + 465/263*z^5 + 278/263*z^4 + 691/263*z^3 + 217/263*z^2, z^10 + 5*z^9 + 10*z^8 + 15*z^7 + 16*z^6 + 9*z^5 + 12*z^4 + 13*z^3 + 2*z^2 ] > QuotientDimension(I); 12 > > IL := Localization(I); > StandardBasis(IL); [ x + y^2, y^2 - y^3 + z, z^2 ] > QuotientDimension(IL); 4