# compatibleIdeals -- find all prime ideals compatible with a Frobenius near-splitting

## Synopsis

• Usage:
compatibleIdeals(u)
• Inputs:
• u, , in a polynomial ring over the prime field $\mathbb{Z}/p$; the element determining the Frobenius splitting
• Optional inputs:
• FrobeniusRootStrategy => , default value Substitution, selects the strategy for internal frobeniusRoot calls
• Outputs:
• a list, containing all prime ideals P of the ring of u such that uP $\subseteq$ P^{[p]} and u is not in P^{[p]}

## Description

The given element $u$ in a polynomial ring $R$ over the prime field $\mathbb{Z}/p$ defines a $p^{-1}$-linear map $\phi: R\to R$; this map consists of multiplication by the polynomial $u$, followed by the Frobenius trace on the polynomial ring $R$. An ideal $I$ of $R$ is $\phi$-compatible if $\phi(I)\subseteq I$ or, equivalently, $u I \subseteq I^{[p]}$. The function compatibleIdeals returns a list of all prime ideals $P$ of $R$ such that:

(a) $uP \subseteq P^{[p]}$, and

(b) $u$ is not in $P^{[p]}$.

Condition (b) is equivalent to the non-vanishing of the corresponding near-splitting of $R/P$. When $\phi$ is surjective, the set of all $\phi$-compatible ideals consists of all intersections of the above prime ideals.

This function is an implementation of the algorithm described in Moty Katzman and Karl Schwede's paper An algorithm for computing compatibly Frobenius split subvarieties, J. Symbolic Comput. 47 (2012), no. 8, pp. 996-1008.

These prime ideals have a "Matlis-dual" interpretation, too. Let $E$ be the injective hull of the residue field of the localization of $R$ at the irrelevant ideal, and let $T: E \rightarrow E$ be the natural Frobenius map. Then $uT$ is a Frobenius map on $E$, and the primes $P$ computed by this function are precisely those for which $uT$ restricts to a nonzero Frobenius map of the annihilator of $P$ on $E$.

The following is a simple example, which is split with the coordinate axes in $\mathbb{A}^2$.

 i1 : R = ZZ/3[s,t]; i2 : u = s^2*t^2; i3 : compatibleIdeals u o3 = {ideal s, ideal (t, s), ideal t} o3 : List

Here is a more substantial example.

 i4 : R = ZZ/2[a,b,c,d,e,f]; i5 : u = d*(b*e - d*c)*(d - a*e - b*f + a*c*f); i6 : print \ compatibleIdeals u; ideal d ideal (e, d) ideal (f, e, d) ideal (f, e, d, b) ideal (f, e, d, b, a) ideal (f, e, d, c, b, a) ideal (f, e, d, c, b) ideal (f, e, d, a*c + b) ideal (d, b, a) ideal (e, d, b, a) ideal (e, d, c, b, a) ideal (d, b, a, c*f + e) ideal (e, d, b) ideal (e, d, c, b) ideal (e, d, a*c + b) ideal (d, b) ideal (d, b, c*f + e) ideal (d, a*c*f + a*e + b*f) ideal (a*e + d, c*d + b*e, a*c + b) ideal (c*f + e, b*f + d, a*e + d, c*d + b*e, a*c + b) ideal(c*d + b*e) ideal (c*f + e, b*f + d, c*d + b*e) ideal(a*c*f + a*e + b*f + d)

The option FrobeniusRootStrategy is passed to internal frobeniusRoot calls.

## Ways to use compatibleIdeals :

• "compatibleIdeals(RingElement)"

## For the programmer

The object compatibleIdeals is .