next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
TestIdeals :: frobeniusRoot

frobeniusRoot -- compute a Frobenius root

Synopsis

Description

In a polynomial ring R = k[x1, ..., xn] with cofficients in a field of positive characteristic p, the pe-th Frobenius root I[1/pe] of an ideal I is the smallest ideal J such that I⊆J[pe] (= frobeniusPower(pe, J)). Similarly, if M is a submodule of Rk, the pe-th Frobenius root of M, denoted M[1/pe], is the smallest submodule V of Rk such that M⊆V[pe]. 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/pe].

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 R2, frobeniusRoot(1, M) computes the smallest submodule V of R2 such that M ⊆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, I1a1…Inan. This is best accomplished by calling frobeniusRoot(e, {a1,...,an}, {I1,...,In}).

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.666915 seconds

o17 : Ideal of R
i18 : time J2 = frobeniusRoot(1, I1^8*I2^10*I3^12);
     -- used 3.33966 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, {a1,...,an}, {I1,...,In}, I). The last ideal, I, is just raised to the first power.

The following are additional ways of calling frobeniusRoot:

frobeniusRoot(e, m, I) computes the pe-th Frobenius root of the ideal Im.

frobeniusRoot(e, a, f) computes the pe-th Frobenius root of the principal ideal (f a).

frobeniusRoot(e, a, f, I) computes the pe-th Frobenius root of the product f aI.

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

See also

Ways to use frobeniusRoot :