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 $\phi: S \to\ S$, obtained by premultiplying the $e^{th}$ Frobenius trace on $S$ by $h$. The function ascendIdeal finds the smallest $\phi$-stable ideal of $S$ containing $J$, which is the stable value of the ascending chain $J\subseteq J + \phi(J)\subseteq J + \phi(J) + \phi^2(J)\subseteq \cdots$.
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 $e^{th}$ Frobenius trace in the ambient polynomial ring, but will do the comparison, to see if stabilization has occurred, 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, $h^a$. If $a$ is large, it is more efficient not to compute $h^a$, 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 = h_1^{a_1}\ldots h_n^{a_n}$, then it is more efficient to pass ascendIdeal the lists expList = \{a_1,\ldots,a_n\} and hList = \{h_1,\ldots,h_n\} 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.
The object ascendIdeal is a method function with options.