Let J be an ideal in a polynomial ring S of characteristic p>0. An element h of S determines a p-e-linear map φ: S → S, obtained by premultiplying the eth Frobenius trace on S by h. The function ascendIdeal finds the smallest φ-stable ideal of S containing J, which is the stable value of the ascending chain J⊆J + φ(J)⊆J + φ(J) + φ2(J)⊆….
If J is not an ideal of a polynomial ring, but of a quotient of a polynomial ring, ascendIdeal will do the computation with the eth Frobenius trace in the ambient polynomial ring, but will do the comparison, to see if stabilization has occured, inside the quotient ring.
i1 : S = ZZ/5[x,y,z]; |
i2 : g = x^4 + y^4 + z^4; |
i3 : h = g^4; |
i4 : R = S/(g); |
i5 : ascendIdeal(1, h, ideal y^3) 2 2 2 o5 = ideal (z , y*z, x*z, y , x*y, x ) o5 : Ideal of R |
i6 : ascendIdeal(1, h, ideal (sub(y, S))^3) 2 2 2 o6 = ideal (z , y*z, x*z, y , x*y, x ) o6 : Ideal of S |
The alternate ways to call the function allow the function to behave more efficiently. Indeed, frequently the polynomial passed is a power, ha. If a is large, it is more efficient not to compute ha, but instead, to keep the exponent small by only raising h to the minimal power needed to do the computation at that time.
i7 : S = ZZ/5[x,y,z]; |
i8 : g = x^4 + y^4 + z^4; |
i9 : R = S/(g); |
i10 : ascendIdeal(1, 4, g, ideal y^3) 2 2 2 o10 = ideal (z , y*z, x*z, y , x*y, x ) o10 : Ideal of R |
i11 : ascendIdeal(1, 4, g, ideal (sub(y, S))^3) 2 2 2 o11 = ideal (z , y*z, x*z, y , x*y, x ) o11 : Ideal of S |
More generally, if h is a product of powers, h = h1a1...hnan, then it is more efficient to pass ascendIdeal the lists expList = {a1,...,an} and hList = {h1,...,hn} of exponents and bases.
By default (when AscentCount => false), ascendIdeal just returns the stable (ascended) ideal. If, instead, AscentCount is set to true, then ascendIdeal returns a sequence whose first entry is the stable ideal, and the second is the number of steps it took for the ascending chain to stabilize and reach that ideal.
i12 : R = ZZ/5[x,y,z]; |
i13 : J = ideal(x^12, y^15, z^21); o13 : Ideal of R |
i14 : f = y^2 + x^3 - z^5; |
i15 : ascendIdeal(1, f^4, J) o15 = ideal (z, y, x) o15 : Ideal of R |
i16 : ascendIdeal(1, f^4, J, AscentCount => true) o16 = (ideal (z, y, x), 3) o16 : Sequence |
The option FrobeniusRootStrategy is passed to internal frobeniusRoot calls.
This method is described in M. Katzman’s Parameter-test-ideals of Cohen–Macaulay rings (Compositio Mathematica 144 (4), 933-948), under the name "star-closure". It is a key tool in computing test ideals and test modules.