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

## Synopsis

• Usage:
findRegion({L1,L2},M,f)
• Inputs:
• L1, a list, the minimum multidegree to check
• L2, a list, the maximum multidegree to check
• M, or an ideal,
• f, , a function that takes a List and an Ideal or Module and returns a Boolean value
• Outputs:
• a list, minimal multidegrees

## Description

$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 | 1 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.0534746 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.00745648 seconds elapsed o7 = {{1, 2}, {3, 1}} o7 : List

## Contributors

Mahrud Sayrafi contributed to the code for this function.

## Caveat

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