# TestIdeals -- a package for calculations of singularities in positive characteristic

## Description

TestIdeals is a package for basic computations of F-singularities. It is focused on computing test ideals and related objects. It does this via frobeniusRoot, which computes I[1/pe] as introduced by Blickle-Mustata-Smith (this is equivalent to the image of an ideal under the Cartier operator in a polynomial ring).

We describe some notable functions below.

Notable functions:
• testIdeal compute the test ideal of a normal Q-Gorenstein ring or pair.
• testModule compute the parameter test module of a ring or pair.
• parameterTestIdeal compute the parameter test ideal of a Cohen-Macaulay ring.
• HSLGModule compute the stable image of the trace of Frobenius on the canonical module.
• isFRegular checks if a normal Q-Gorenstein ring or pair is F-regular.
• isFPure checks if a ring is F-pure.
• isFRational checks if a ring is F-rational.
• isFInjective checks if a ring is F-injective.
• compatibleIdeals finds the compatibly F-split ideals with a (near) F-splitting.

Consider for instance the test ideal of the cone over an elliptic curve
 `i1 : R = ZZ/5[x,y,z]/ideal(z*y^2-x*(x-z)*(x+z));` ```i2 : testIdeal(R) o2 = ideal (z, y, x) o2 : Ideal of R```

The following example was studied by Anurag Singh when showing that F-regularity does not deform
 `i3 : S = ZZ/3[A,B,C,D,T];` `i4 : m = 4;` `i5 : n = 3;` ```i6 : M = matrix{{A^2+T^m, B, D}, {C, A^2, B^n-D}}; 2 3 o6 : Matrix S <--- S``` ```i7 : I = ideal(T) + minors(2, M); o7 : Ideal of S``` ```i8 : isFRegular(S/I) o8 = true```

Acknowledgements:

The authors would like to thank David Eisenbud, Daniel Grayson, Anurag Singh, Greg Smith, and Mike Stillman for useful conversations and comments on the development of this package.

## Authors

• Erin Bela
• Alberto F. Boix
• Drew Ellingson
• Sara Malec
• Matthew Mastroeni
• Marcus Robinson

## Version

This documentation describes version 1.0 of TestIdeals.

## Source code

The source code from which this documentation is derived is in the file TestIdeals.m2. The auxiliary files accompanying it are in the directory TestIdeals/.

## Exports

• Functions and commands
• adicDigit -- digit of the non-terminating expansion of a number in [0,1] in a given base
• adicTruncation -- truncation of a non-terminating adic expansion
• ascendIdeal -- finds the smallest ideal containing a given ideal which is compatible with a given \$p^{-e}\$-linear map
• ascendModule -- finds the smallest submodule of free module containing a given submodule which is compatible with a given \$p^{-e}\$-linear map
• canonicalIdeal -- given a ring, produces an ideal isomorphic to the canonical module
• compatibleIdeals -- finds all ideals compatibly compatible with a Frobenius near-splitting ideals
• decomposeFraction -- decompose a rational number into a/(p^b(p^c-1))
• fastExponentiation -- computes powers of elements in rings of positive characteristic quickly
• floorLog -- floor of a logarithm
• frobenius -- computes Frobenius powers of ideals and matrices
• frobeniusPower -- computes the (generalized) Frobenius power of an ideal
• frobeniusRoot -- computes I^[1/p^e] in a polynomial ring over a finite field
• frobeniusTraceOnCanonicalModule -- finds the u, which in a polynomial ring, determines the Frobenius trace on the canonical module of a quotient of that ring
• HSLGModule -- computes the submodule of the canonical module stable under the image of the trace of Frobenius
• isCohenMacaulay -- determines if a ring is Cohen-Macaulay
• isFInjective -- whether a ring is F-injective
• isFPure -- whether a ring is F-pure
• isFRational -- whether a ring is F-rational
• isFRegular -- whether a ring or pair is strongly F-regular
• multiplicativeOrder -- multiplicative order of an integer modulo another
• parameterTestIdeal -- computes the parameter test ideal of a Cohen-Macaulay ring
• QGorensteinGenerator -- finds an element representing the Frobenius trace map of a Q-Gorenstein ring
• testElement -- finds a test element of a ring
• testIdeal -- computes the test ideal of f^t in a Q-Gorenstein ring
• testModule -- finds the parameter test module of a reduced ring
• Symbols
• AscentCount -- an option for ascendIdeal
• AssumeCM -- make assumptions about your ring
• AssumeNormal, see AssumeCM -- make assumptions about your ring
• AssumeReduced, see AssumeCM -- make assumptions about your ring
• AssumeDomain -- an option to assume a ring is a domain
• CanonicalStrategy -- an option for isFInjective
• DepthOfSearch -- an option to specify how hard to search for something
• FrobeniusPowerStrategy -- an option for frobeniusPower
• FrobeniusRootStrategy -- an option for various functions
• IsLocal -- an option used to specify whether to only work locally
• Katzman -- a valid value for the option CanonicalStrategy
• MaxCartierIndex -- an option to specify the maximum number to consider when computing the Cartier index of a divisor
• MonomialBasis -- a valid value for the FrobeniusRootStrategy option
• Naive -- a valid value for the option FrobeniusPowerStrategy
• NoZeroC -- an option for decomposeFraction
• QGorensteinIndex -- an option to specify the index of the canonical divisor, if known
• Safe -- a valid value for the option FrobeniusPowerStrategy
• Substitution -- a valid value for the FrobeniusRootStrategy option