Computing Minimal Associated Primes
This page describes the Magma implementation of an algorithm to compute the set
of minimal associated primes of an ideal defined over the integers (see [1]).
A Magma implementation is available here:
minass.tgz.
This requires a Magma version >= 2.19.
To use the algorithm, after starting magma, type
> Attach("minass.magma");
Basic usage
The main method is MinimalAssociatedPrimes,
which takes an ideal I defined over the integers,
and returns a list of all minimal associated prime ideals of
I.
> R := PolynomialRing(Integers(), 3);
> I := ideal< R  x^3 + 2*x + y, y^2 + z^2, z^2 + x, z^2 + y >;
> MinimalAssociatedPrimes(I);
[
Ideal of Polynomial ring of rank 3 over Integer Ring
Order: Lexicographical
Variables: x, y, z
Homogeneous
Basis:
[
x,
y,
z
],
Ideal of Polynomial ring of rank 3 over Integer Ring
Order: Lexicographical
Variables: x, y, z
Inhomogeneous, Dimension 0
Groebner basis:
[
x + 1,
y + 1,
z + 1,
2
]
]
Advanced usage
There are several parameters to influence the run of
MinimalAssociatedPrimes
useRandomTechniques
If the optional boolean parameter
useRandomTechniques
is
true (this is the default), then the method
described in [1] is used. That is, a Groebner basis computation over the
integers is replaced by several Groebner basis computations over prime fields.
sufficient
A list L of primes is
sufficient for an ideal I, if L contains all
primes p contained in a minimal associated prime ideal of I.
If the optional parameter
sufficient is
[] (this is the default), then the algorithm computes
a list of sufficient primes automatically.
If
sufficient is a nonempty list of primes, then the
algorithm assumes that this list is indeed a sufficient list of primes and
skips this computation.
If
sufficient is
[0], then
only prime ideals which do not contain any prime number are computed.
exclude
The optional parameter
exclude is a list of primes
(default:
[]) which are excluded from the
computation. That is, the result does not contain prime ideals which contain a
prime number of
exclude.
saturate
The optional parameter
saturate is a polynomial.
Prior to primary decomposition, the ideal is saturated at this polynomial.
The effect is that the algorithm returns all minimal associated primes which do
not contain this polynomial.
By default,
saturate := 1, which is equivalent to
skipping the saturation step.
factorizationBound
The algorithm does not try to factorize integers bigger than
factorizationBound
(default:
10^60).
trialDivisionBound
Prior to factorization, try to divide integers by all primes smaller than
trialDivisionBound
(default:
10^4).
groebnerBasisBound
Compute up to
groebnerBasisBound Groebner bases over
the rationals, until all divisors have size at most
factorizationBound.
After
groebnerBasisBound Groebner bases have been
computed, try to factor all divisors, regardless of their size.
Verbose printing
Use
SetVerbose("MinimalAssociatedPrimes", d) to set
the verbose printing for MinimalAssociatedPrimes, where
d is a value between 0 and 3.
References
[1] 
S. Jambor
Computing minimal associated primes in polynomial rings over the integers
J. Symbolic Comput., 46 (2011), no. 10, 10981104.
