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
    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,

Advanced usage

There are several parameters to influence the run of MinimalAssociatedPrimes


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.


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 non-empty 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.


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.


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.


The algorithm does not try to factorize integers bigger than factorizationBound (default: 10^60).


Prior to factorization, try to divide integers by all primes smaller than trialDivisionBound (default: 10^4).


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.


[1] S. Jambor
Computing minimal associated primes in polynomial rings over the integers
J. Symbolic Comput., 46 (2011), no. 10, 1098-1104.