# Wolfram Function Repository

Instant-use add-on functions for the Wolfram Language

Function Repository Resource:

Compute the dimension of a polynomial ideal

Contributed by:
Daniel Lichtblau

ResourceFunction["PolynomialIdealDimension"][ computes the dimension of the ideal defined by |

PolynomialIdealDimension computes the Krull dimension of an ideal.

PolynomialIdealDimension supports a Modulus option (default 0). If nonzero, the modulus *p* must be prime. It will regard the polynomials as belonging to the ring ℤ_{p}[*vars*].

Unknowns in the input polynomials that are not specified in *vars* are regarded as parameters, that is, they lie in the coefficient field.

An ideal containing 1 is considered to have dimension -1.

Find the dimension of an ideal defined by three polynomials in five variables:

In[1]:= |

Out[3]= |

When we remove the first variable and regard it as a coefficient parameter the dimension decreases by 1:

In[4]:= |

Out[4]= |

If instead we remove the first polynomial then the dimension increases by 1:

In[5]:= |

Out[5]= |

Find an ideal dimension:

In[6]:= |

Out[8]= |

Provide a nonzero modulus:

In[9]:= |

Out[9]= |

For most prime moduli the dimension is the same as in the case of working over the rationals, but there can be finitely many exceptions:

In[10]:= |

Out[10]= |

Square systems typically have dimension zero; we show this in particular for the Cassou-Nouges benchmark polynomial ideal:

In[11]:= |

Out[13]= |

Adding a polynomial makes the system overdetermined, so the dimension becomes -1:

In[14]:= |

Out[14]= |

Here is a benchmark example from an ISSAC 2001 conference paper with more polynomials than variables; it arose in the context of locating all singular points on a particular algebraic curve:

In[15]:= |

Such a polynomial ideal can still have dimension 0 rather than -1; we use a nonzero modulus for speed:

In[16]:= |

Out[16]= |

As with any computation that requires computing a Gröbner basis, this function can be slow.

- My MathGroup post from the last millennium
- A 2013 Mathematica.StackExchange update by user Ion Nechita
- A 2021 Mathematica.StackExchange update by user Dominic

- 1.0.0 – 08 May 2023

This work is licensed under a Creative Commons Attribution 4.0 International License