# ascendIdeal -- find the smallest ideal containing a given ideal which is compatible with a given Cartier linear map

## Synopsis

• Usage:
ascendIdeal(e, h, J)
ascendIdeal(e, a, h, J)
ascendIdeal(e, expList, hList, J)
• Inputs:
• J, an ideal, in a polynomial ring S of characteristic p > 0, or in a quotient of S; the ideal to ascend
• e, an integer, the order of the Frobenius root to take at each step of the ascent
• h, , the polynomial in S to multiply by at each step of the ascent
• a, an integer, the power to raise h to at each step of the ascent
• hList, a list, consisting elements h_1,\ldots,h_n of S to multiply by at each step of the ascent
• expList, a list, consisting of the powers a_1,\ldots,a_n to raise the elements of hList to, at each step of the ascent
• Optional inputs:
• AscentCount => , default value false, tells the function to return the number of steps it took before the ascent of the ideal stabilized
• FrobeniusRootStrategy => , default value Substitution, selects the strategy for internal frobeniusRoot calls
• Outputs:
• an ideal, the stable ideal in the ascending chain J \subseteq\ J + \phi(J) \subseteq\ J + \phi(J) + \phi^2(J) \subseteq\ \ldots, where \phi is the p^{-e}-linear map obtained by premultiplying the e^{th} Frobenius trace on S by h, or h^a, or h_1^{a_1}\ldots h_n^{a_n}, depending on the arguments passed
• , consisting of the stable (ascended) ideal and the number of steps it took before the ascent of the ideal stabilized (when the option AscentCount is set to true)

## Description

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.

• testIdeal -- compute a test ideal in a Q-Gorenstein ring
• testModule -- find the parameter test module of a reduced ring

## Ways to use ascendIdeal :

• "ascendIdeal(ZZ,List,List,Ideal)"
• "ascendIdeal(ZZ,RingElement,Ideal)"
• "ascendIdeal(ZZ,ZZ,RingElement,Ideal)"

## For the programmer

The object ascendIdeal is .