isFInjective(R)
This function determines whether a ring of finite type over a finite prime field is $F$-injective. Over a more general field, it checks the $F$-injectivity of the relative Frobenius. We begin with an example of an $F$-injective ring that is not $F$-pure (taken from the work of Anurag Singh on deformation of $F$-regularity).
|
|
|
|
|
|
Next, let us form the cone over $\mathbb{P}^1 \times E$, where $E$ is an elliptic curve. We begin with a supersingular elliptic curve. This should be $F$-injective if and only if it is $F$-pure.
|
|
|
|
|
|
Now we do a similar computation, this time with an ordinary elliptic curve.
|
|
|
|
|
|
If CanonicalStrategy is set to Katzman (its default behavior), then the Frobenius action on the top local cohomology (bottom Ext) is computed via the method of Katzman. If it is set to anything else, it is simply brute forced in Macaulay2 using the functoriality of Ext. The Katzman strategy is typically much faster.
|
|
|
If the option AtOrigin (default value false) is set to true, isFInjective will only check $F$-injectivity at the origin. Otherwise, it will check $F$-injectivity globally. Note that checking $F$-injectivity at the origin can be slower than checking it globally. Consider the following example of a non-$F$-injective ring.
|
|
|
If the option AssumeCM (default value false) is set to true, then isFInjective only checks the Frobenius action on top cohomology (which is typically much faster). Note that it can give an incorrect answer if the non-injective Frobenius occurs in a lower degree. Consider the example of the cone over a supersingular elliptic curve times $\mathbb{P}^1$.
|
|
|
|
|
|
If the option AssumedReduced is set to true (its default behavior), then the bottom local cohomology is avoided (this means the Frobenius action on the top potentially nonzero Ext is not computed).
If the option AssumeNormal (default value false) is set to true, then the bottom two local cohomology modules (or, rather, their duals) need not be computed.
The value of the option FrobeniusRootStrategy is passed to internal frobeniusRoot calls.
The object isFInjective is a method function with options.