next | previous | forward | backward | up | top | index | toc | Macaulay2 website
LinearTruncations > findRegion

findRegion -- finds minimal multidegree(s) in a given region where an ideal or module satisfies a Boolean function



$M$ should be an ideal or a module over a $\ZZ^r$-graded ring and f a function so that f(d,M) is a Boolean value for d in $\ZZ^r$ and f(d,M) implies f(d+e,M) for e in $\NN^r$. Given a list {L1, L2}, this function will return the minimal multidegrees d between L1 and L2 satisfying f(d,M).

i1 : S = ZZ/101[x,y,Degrees=>{{1,0},{0,1}}]

o1 = S

o1 : PolynomialRing
i2 : I = ideal(x*y^2,x^3*y)

               2   3
o2 = ideal (x*y , x y)

o2 : Ideal of S
i3 : M = S^1/I

o3 = cokernel | xy2 x3y |

o3 : S-module, quotient of S
i4 : f = (d,M) -> truncate(d,M)==0

o4 = f

o4 : FunctionClosure
i5 : findRegion({{0,0},{4,4}},M,f)

o5 = {{1, 2}, {3, 1}}

o5 : List

If some degrees d are known to satisfy f(d,M), then they can be specified using the option Inner in order to expedite the computation. Similarly, degrees not above those given in Outer will be assumed not to satisfy f(d,M). If f takes options these can also be given to findRegion.

i6 : elapsedTime findRegion({{0,0},{4,4}},M,f)
 -- 0.122351 seconds elapsed

o6 = {{1, 2}, {3, 1}}

o6 : List
i7 : elapsedTime findRegion({{0,0},{4,4}},M,f,Inner=>{{1,2},{3,1}},Outer=>{{1,1}})
 -- 0.0166923 seconds elapsed

o7 = {{1, 2}, {3, 1}}

o7 : List


Mahrud Sayrafi contributed to the code for this function.


Use the option Outer with care if f is not invariant under positive translation.

See also

Ways to use findRegion :

For the programmer

The object findRegion is a method function with options.