Suppose I is an ideal of P = K[x1, ..., xn] with K a field, and I has dimension d.
A Noether normalisation of I is given by a set of d polynomials ( f1, ..., fd ) of P, algebraically independent over K, for which K[f1, ..., fd] ∩I = 0 and K[f1, ..., fd] -> P/I is an integral extension. These always exist and if K is an infinite field, the fi can be chosen to be linear expressions in the xi.
If I is radical, then the normalisation of I here will refer to the integral closure of the affine ring P/I in its total ring of fractions. If I = bigcap Pi with Pi prime, then the normalisation is equal to the finite direct product of the normalisations of the Pi as affine rings. It will be specified by a list of pairs (Ii, φi) where Ii is a prime ideal with generic ring Gi, a multivariate polynomial ring over K, and φi a homomorphism from P to Gi. The pairs represent the normalisation of each Pi and the inclusion P/I -> ∏Gi/Ii induced by the φi makes the RHS the integral closure of P/I.
This function attempts to compute a Noether Normalisation for I, as described above, using linear combinations of the variables. The function is guaranteed to work if K has characteristic zero but may fail in unlucky cases in small characteristic.The algorithm followed is basically that given in [GP02] but with a simpler test for homogeneous ideals I, which gives a speed-up in that case. Also, subsets of the full sets of variables are considered before more general linear combinations.
The return values are
- 1)
- the sequence [f1, ..., fd].
- 2)
- h, an automorphism P -> P given by a linear change of variables which maps the fi to the last d variables of P. Thus (xn - d + 1, ..., xn) are a corresponding Noether normalising set of polynomials for h(I).
- 3)
- the inverse of h.
> P<x,y> := PolynomialRing(RationalField(),2); > I := ideal<P | x*y+x+2>; > fs,h,hinv := NoetherNormalisation(I); > fs; [ x + y ] > J := ideal<P | [h(b) : b in Basis(I)]>; J; Ideal of Polynomial ring of rank 2 over Rational Field Order: Lexicographical Variables: x, y Basis: [ -x^2 + x*y + x + 2 ] > // clearly x is integral over the last variable y in P/J
UseFF: BoolElt Default: true
FFMin: BoolElt Default: true
UseMax: BoolElt Default: false
This function computes the normalisation of the ideal I and returns the result as a list of pairs as described above. The ideal I must be radical - this is not checked in the function. Also the base field K must be perfect.There are several options. The general algorithm used is that of De Jong as described in [GP02]. However, if the generic polynomial ring P of I has rank 2 then Magma's powerful function field machinery can be applied to give a generally much faster algorithm. This is the default behaviour but can be bypassed by setting the parameter UseFF to false.
When the function field machinery is used, a correct result can be obtained extremely quickly, but the generic spaces of the solution ideals can be of quite high dimension. The default behaviour, controlled by the parameter FFMin, is to use a filtration by Riemann-Roch spaces to try to find a roughly minimal number of generators of the algebras Gi/Ii and return the corresponding ideal in the smaller number of variables as a more optimal presentation of the solution. This takes more time but is still usually faster than the general algorithm and tends to produce much nicer results. In some cases, the minimised solution is the same as the basic one but takes longer to generate. The minimising stage can be cut out by setting FFMin to false.
The general algorithm can avoid doing some work if it is known that certain conditions on I hold. One standard condition is that I ⊆M = <x1, ..., xn> and that P/I is locally normal away from M. This holds, for example, if the affine variety defined by I in Kn is non-singular except at the origin. If this is known, then parameter UseMax can be set to {true} which will usually speed up the general algorithm (it has no effect if the function field method is used). However, if P/I is locally non-normal at other primes then this will produce an incorrect result.
> P<x,y> := PolynomialRing(RationalField(),2); > // we begin with a very simple example (prime ideal) > I := Ideal((x - y^2)^2 - x*y^3); > time Js := Normalisation(I); // function field method Time: 0.010 > #Js; 1 > N := Js[1][1]; > N<[a]> := N; > N; Ideal of Polynomial ring of rank 2 over Rational Field Order: Lexicographical Variables: a[1], a[2] Basis: [ -a[1]*a[2] + a[2]^2 - 2*a[2] + 1 ] > // Now try the basic function field method > time Js := Normalisation(I: FFMin:=false); Time: 0.010 > //get the same result here either way > N := Js[1][1]; > N<[a]> := N; > N; Ideal of Polynomial ring of rank 2 over Rational Field Order: Lexicographical Variables: a[1], a[2] Basis: [ -a[1]*a[2] + a[2]^2 - 2*a[2] + 1 ] > time Js := Normalisation(I:UseFF:=false); // try the general method Time: 0.120 > J := Js[1][1]; > Groebner(J); > J; Ideal of Polynomial ring of rank 4 over Rational Field Lexicographical Order Variables: $.1, $.2, $.3, $.4 Groebner basis: [ $.1^2 + 2*$.1 + $.2 - 1, $.1*$.2 - 2*$.1 + 2*$.2 - $.3 + $.4 - 4, $.1*$.3 + $.3*$.4 + 2*$.3 - $.4^2, $.1*$.4 - $.2 + 2, $.2^2 - 4*$.2 - $.3*$.4 - 2*$.3 + $.4^2 + 4, $.2*$.3 + $.3*$.4^2 + 2*$.3*$.4 - 2*$.3 - $.4^3, $.2*$.4 + $.3 - 2*$.4, $.3^2 - $.3*$.4^3 - 2*$.3*$.4^2 + $.4^4 ] > // try the general method with UseMax (which applies here) > time Js := Normalisation(I:UseFF:=false,UseMax:=true); Time: 0.040 > J := Js[1][1]; > Groebner(J); > J; Ideal of Polynomial ring of rank 3 over Rational Field Lexicographical Order Variables: $.1, $.2, $.3 Groebner basis: [ $.1^2 - 4*$.1 - $.2*$.3 - 2*$.2 + $.3^2 + 4, $.1*$.2 + $.2*$.3^2 + 2*$.2*$.3 - 2*$.2 - $.3^3, $.1*$.3 + $.2 - 2*$.3, $.2^2 - $.2*$.3^3 - 2*$.2*$.3^2 + $.3^4 ] > // now try a harder case - a singular affine form of modular curve X1(11) > I := ideal<P | (x-y)*x*(y+x^2)^3-y^3*(x^3+x*y-y^2)>; > time Js := Normalisation(I: FFMin := false); Time: 0.110 > #Js; 1 > J := Js[1][1]; > Groebner(J); > J; Ideal of Polynomial ring of rank 5 over Rational Field Lexicographical Order Variables: $.1, $.2, $.3, $.4, $.5 Groebner basis: [ $.1*$.3 - $.1 - 6*$.3 + $.4*$.5^2 - 4*$.4*$.5 + 6*$.4 - $.5^5 + $.5^4 + 11*$.5^3 - 16*$.5^2 + 2*$.5 + 6, $.1*$.4 + 2*$.3 - $.4*$.5^2 + 2*$.4*$.5 - 2*$.4 + $.5^4 - 4*$.5^3 + 4*$.5^2 - 2, $.1*$.5 - 2*$.3 + $.4 + $.5^3 - 2*$.5^2 + $.5 + 1, $.2 - $.3 + $.5^3 - $.5^2, $.3^2 + 3*$.3 - 2*$.4*$.5^2 + 4*$.4*$.5 - 4*$.4 - $.5^6 + 2*$.5^5 + $.5^4 - 10*$.5^3 + 10*$.5^2 - 4, $.3*$.4 - $.3 - $.4*$.5^3 + $.4*$.5^2 - $.4*$.5 + $.4 - $.5^4 + 2*$.5^3 - 2*$.5^2 + 1, $.3*$.5 + $.3 - $.4 - $.5^4 + 2*$.5^2 - $.5 - 1, $.4^2 - 2*$.4*$.5^2 + $.4*$.5 + $.4 - $.5^5 ] > time Js := Normalisation(I); Time: 1.110 > J := Js[1][1]; > Groebner(J); > J; Ideal of Polynomial ring of rank 2 over Rational Field Lexicographical Order Variables: $.1, $.2 Groebner basis: [ $.1^2*$.2 + 2*$.1*$.2 + $.1 - $.2^2 + 2*$.2 + 1 ] > // Minimised result is a cubic equation in K[x,y] - as good as we could get! > // This example takes MUCH longer with the general method - even setting > // UseMax := true.