# StronglyStableIdeals -- Find strongly stable ideals with a given Hilbert polynomial

## Description

Overview:

Strongly stable ideals are a key tool in commutative algebra and algebraic geometry. These ideals have nice combinatorial properties that make them well suited for both theoretical and computational applications. In the case of polynomial rings with coefficients in a field of characteristic zero, the notion of strongly stable ideals coincides with the notion of Borel-fixed ideals. Such ideals are fixed by the action of the Borel subgroup of triangular matrices and play a special role in theory of Gröbner bases because initial ideals in generic coordinates are of this type by a famous result by Galligo. In the context of parameter spaces of algebraic varieties, Galligo's theorem says that each component and each intersection of components of a Hilbert scheme contains at least a point corresponding to a scheme defined by a Borel-fixed ideal. Hence, these ideals are distributed throughout the Hilbert scheme and can be used to study its local structure. To this aim, in recent years several authors developed algorithmic methods based on the use of strongly stable ideals to construct flat families corresponding to special loci of the Hilbert scheme. In particular, a new open cover of the Hilbert scheme has been defined using strongly stable ideals and the action of the projective linear group. In this construction, the list of all points corresponding to Borel-fixed ideals in a given Hilbert scheme is needed. The main feature of this package is a method to compute this set of points, i.e. the list of all saturated strongly stable ideals in a polynomial ring with a given Hilbert polynomial. The method has been theoretically introduced in [CLMR11] and improved in [Lel12].

References:

[CLMR11] F. Cioffi, P. Lella, M.G. Marinari, M. Roggero: Segments and Hilbert schemes of points, Discrete Mathematics, 311(20):2238–2252, 2011.
Available at http://arxiv.org/abs/1003.2951.

[Lel12] P. Lella: An efficient implementation of the algorithm computing the Borel-fixed points of a Hilbert scheme, ISSAC 2012 — Proceedings of the 37th International Symposium on Symbolic and Algebraic Computation, 242–248, ACM, New York, 2012.
Available at http://arxiv.org/abs/1205.0456.

Key user functions:

Hilbert polynomials:

isHilbertPolynomial -- Test whether a numerical polynomial is a Hilbert polynomial.

gotzmannDecomposition -- Compute Gotzmann's decomposition of a Hilbert polynomial.

gotzmannNumber -- Compute the Gotzmann number of a Hilbert polynomial.

macaulayDecomposition -- Compute Macaulay's decomposition of a Hilbert polynomial.

Strongly stable ideals and segment ideals:

lexIdeal -- Compute the saturated lexicographic ideal with a given Hilbert polynomial.

stronglyStableIdeals -- Compute the saturated strongly stable ideals with a given Hilbert polynomial.

isGenSegment -- Test whether there exists a term ordering such that each minimal generator of a strongly stable ideal is greater than all mononials of the same degree outside the ideal.

isRegSegment -- Test whether the truncation of a strongly stable ideal in degree equal to its regularity is a segment.

isHilbSegment -- Test whether the truncation of a strongly stable ideal in degree equal to the Gotzmann number of its Hilbert polynomial is a segment.

## Certification

Version 1.1 of this package was accepted for publication in volume 9 of The Journal of Software for Algebra and Geometry on 4 November 2018, in the article Strongly stable ideals and Hilbert polynomials. That version can be obtained from the journal or from the Macaulay2 source code repository.

## Version

This documentation describes version 1.1 of StronglyStableIdeals.

## Source code

The source code from which this documentation is derived is in the file StronglyStableIdeals.m2.

## Exports

• Functions and commands
• Methods
• "gotzmannDecomposition(ProjectiveHilbertPolynomial)" -- see gotzmannDecomposition -- Compute Gotzmann's decomposition of Hilbert polynomial
• "gotzmannDecomposition(RingElement)" -- see gotzmannDecomposition -- Compute Gotzmann's decomposition of Hilbert polynomial
• "gotzmannNumber(ProjectiveHilbertPolynomial)" -- see gotzmannNumber -- Compute the Gotzmann number of a Hilbert polynomial
• "gotzmannNumber(RingElement)" -- see gotzmannNumber -- Compute the Gotzmann number of a Hilbert polynomial
• "isGenSegment(Ideal)" -- see isGenSegment -- gen-segment ideals
• "isGenSegment(MonomialIdeal)" -- see isGenSegment -- gen-segment ideals
• "isHilbertPolynomial(ProjectiveHilbertPolynomial)" -- see isHilbertPolynomial -- Determine whether a numerical polynomial can be a Hilbert polynomial
• "isHilbertPolynomial(RingElement)" -- see isHilbertPolynomial -- Determine whether a numerical polynomial can be a Hilbert polynomial
• "isHilbSegment(Ideal)" -- see isHilbSegment -- hilb-segment ideals
• "isHilbSegment(MonomialIdeal)" -- see isHilbSegment -- hilb-segment ideals
• "isRegSegment(Ideal)" -- see isRegSegment -- reg-segment ideals
• "isRegSegment(MonomialIdeal)" -- see isRegSegment -- reg-segment ideals
• "lexIdeal(ProjectiveHilbertPolynomial,PolynomialRing)" -- see lexIdeal -- Compute the saturated lexicographic ideal in the given ambient space with given Hilbert polynomial
• "lexIdeal(ProjectiveHilbertPolynomial,ZZ)" -- see lexIdeal -- Compute the saturated lexicographic ideal in the given ambient space with given Hilbert polynomial
• "lexIdeal(RingElement,PolynomialRing)" -- see lexIdeal -- Compute the saturated lexicographic ideal in the given ambient space with given Hilbert polynomial
• "lexIdeal(RingElement,ZZ)" -- see lexIdeal -- Compute the saturated lexicographic ideal in the given ambient space with given Hilbert polynomial
• "lexIdeal(ZZ,PolynomialRing)" -- see lexIdeal -- Compute the saturated lexicographic ideal in the given ambient space with given Hilbert polynomial
• "lexIdeal(ZZ,ZZ)" -- see lexIdeal -- Compute the saturated lexicographic ideal in the given ambient space with given Hilbert polynomial
• "macaulayDecomposition(ProjectiveHilbertPolynomial)" -- see macaulayDecomposition -- Compute Macaulay's decomposition of Hilbert polynomial
• "macaulayDecomposition(RingElement)" -- see macaulayDecomposition -- Compute Macaulay's decomposition of Hilbert polynomial
• "stronglyStableIdeals(ProjectiveHilbertPolynomial,PolynomialRing)" -- see stronglyStableIdeals -- Compute the saturated strongly stable ideals in the given ambient space with given Hilbert polynomial
• "stronglyStableIdeals(ProjectiveHilbertPolynomial,ZZ)" -- see stronglyStableIdeals -- Compute the saturated strongly stable ideals in the given ambient space with given Hilbert polynomial
• "stronglyStableIdeals(RingElement,PolynomialRing)" -- see stronglyStableIdeals -- Compute the saturated strongly stable ideals in the given ambient space with given Hilbert polynomial
• "stronglyStableIdeals(RingElement,ZZ)" -- see stronglyStableIdeals -- Compute the saturated strongly stable ideals in the given ambient space with given Hilbert polynomial
• "stronglyStableIdeals(ZZ,PolynomialRing)" -- see stronglyStableIdeals -- Compute the saturated strongly stable ideals in the given ambient space with given Hilbert polynomial
• "stronglyStableIdeals(ZZ,ZZ)" -- see stronglyStableIdeals -- Compute the saturated strongly stable ideals in the given ambient space with given Hilbert polynomial
• Symbols

## For the programmer

The object StronglyStableIdeals is .