Macaulay2 » Documentation
Packages » TestIdeals :: frobeniusRoot
next | previous | forward | backward | up | index | toc

frobeniusRoot -- compute a Frobenius root

Synopsis

Description

In a polynomial ring $R = k[x_1, \ldots, x_n]$ with coefficients in a field of positive characteristic $p$, the $p^e$-th Frobenius root $I^{[1/p^e]}$ of an ideal $I$ is the smallest ideal $J$ such that $I\subseteq J^{[p^e]}$ (= frobeniusPower(p^e, J)). Similarly, if $M$ is a submodule of $R^k$, the $p^e$-th Frobenius root of $M$, denoted $M^{[1/p^e]}$, is the smallest submodule $V$ of $R^k$ such that $M\subseteq V^{[p^e]}$. The function frobeniusRoot computes such ideals and submodules.

There are many ways to call frobeniusRoot. The simplest way is to call frobeniusRoot(e, I), which computes $I^{[1/p^e]}$.

i1 : R = ZZ/5[x,y,z];
i2 : I = ideal(x^50*z^95, y^100 + z^27);

o2 : Ideal of R
i3 : frobeniusRoot(2, I)

                4
o3 = ideal (z, y )

o3 : Ideal of R

The function frobeniusRoot works over arbitrary finite fields.

i4 : p = 3;
i5 : R = GF(p^2)[x,y,z];
i6 : I = ideal(a^(2*p)*x^p + y*z^p + x^p*y^p);

o6 : Ideal of R
i7 : frobeniusRoot(1, I)

o7 = ideal (z, x*y + (a + 1)x)

o7 : Ideal of R

In the following example, for a submodule $M$ of $R^2$, frobeniusRoot(1, M) computes the smallest submodule $V$ of $R^2$ such that $M \subseteq V^{[2]}$.

i8 : R = ZZ/2[a,b,c,d];
i9 : A = matrix {{a^4  + a*b*c^2  + a*b*c*d, a^2* b}, {a^2*c*d^3 , a^3* c*d + a^3 *d^2  + b*c*d^3}};

             2      2
o9 : Matrix R  <-- R
i10 : M = image A;
i11 : frobeniusRoot(1, M)

o11 = image {-2} | 1 0 0 |
            {0}  | 0 d a |

                              2
o11 : R-module, submodule of R

For ease of use, one can also simply pass a matrix $A$ whose image is $M$, and frobeniusRoot(1, A) returns a matrix whose image is $V$.

i12 : frobeniusRoot(1, A)

o12 = {-2} | 1 0 0 |
      {0}  | 0 d a |

              2      3
o12 : Matrix R  <-- R

Often, one wants to compute a Frobenius root of some product of powers of ideals, $I_1^{a_1}\cdots I_n^{a_n}$. This is best accomplished by calling frobeniusRoot(e, \{a_1,\ldots,a_n\}, \{I_1,\ldots,I_n\}).

i13 : R =  ZZ/5[x,y,z];
i14 : I1 = ideal(x^10, y^10, z^10);

o14 : Ideal of R
i15 : I2 = ideal(x^20*y^100, x + z^100);

o15 : Ideal of R
i16 : I3 = ideal(x^50*y^50*z^50);

o16 : Ideal of R
i17 : time J1 = frobeniusRoot(1, {8, 10, 12}, {I1, I2, I3});
     -- used 0.618366 seconds

o17 : Ideal of R
i18 : time J2 = frobeniusRoot(1, I1^8*I2^10*I3^12);
     -- used 2.0012 seconds

o18 : Ideal of R
i19 : J1 == J2

o19 = true

For legacy reasons, the last ideal in the list can be specified separately, using frobeniusRoot(e, \{a_1,\ldots,a_n\}, \{I_1,\ldots,I_n\}, I). The last ideal, I, is just raised to the first power.

The following are additional ways of calling frobeniusRoot:

$\bullet$ frobeniusRoot(e, m, I) computes the $p^e$-th Frobenius root of the ideal $I^m$.

$\bullet$ frobeniusRoot(e, a, f) computes the $p^e$-th Frobenius root of the principal ideal ($f^{ a}$).

$\bullet$ frobeniusRoot(e, a, f, I) computes the $p^e$-th Frobenius root of the product $f^{ a}I$.

There are two valid inputs for the option FrobeniusRootStrategy, namely Substitution and MonomialBasis. In the computation of the $p^e$-th Frobenius root of an ideal $I$, each generator $f$ of $I$ is written in the form $f = \sum a_i^{p^e} m_i$, where each $m_i$ is a monomial whose exponents are less than $p^e$; then the collection of all the $a_i$, obtained for all generators of $I$, generates the Frobenius root $I^{[1/p^e]}$. Substitution and MonomialBasis use different methods for gathering these $a_i$, and sometimes one method is faster than the other.

See also

Ways to use frobeniusRoot :

For the programmer

The object frobeniusRoot is a method function with options.