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 2.10462 seconds o17 : Ideal of R |
i18 : time J2 = frobeniusRoot(1, I1^8*I2^10*I3^12); -- used 7.93396 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.