Macaulay2 » Documentation
Packages » NumericalSemigroups :: NumericalSemigroups
next | previous | forward | backward | up | index | toc

# NumericalSemigroups -- Compute invariants of a numerical semigroup

## Description

In this package we consider numerical semigroups: that is, cofinite subsets of the natural numbers that are closed under sums. We generally refer to these simply as semigroups. A semigroup S thus includes the empty sum, 0, but we input semigroups by giving generators, all nonzero. The smallest nonzero element of S is the multiplicity. The Apery set (really sequence) of a semigroup S is the the list {a_1..a_m-1} where a_i is the smallest element in S such that a_i = i mod m. The conductor is 1 plus the largest element not in S. We generally specify a semigroup by giving a list of positive integers L with gcd = 1, representing the semigroup of all sums of elements of L.

## Combinatorial properties of the Kunz cone

- coneEquations -- Find the equations of the Kunz cones
- mu -- Compute the point representing a semigroup in the Kunz cone
- facetRays -- computes the rays spanning the face in which a semigroup lies
- coneRays -- All the rays of the (homogeneous) Kunz cone
- allSemigroups -- Compute the Hilbert basis and module generators of a cone of semigroups
- findSemigroups -- Find all semigroups with a given number of gaps, multiplicity and/or conductor
- buchweitzCriterion -- Does L satisfies the Buchweitz criterion?
- buchweitz -- An example of a semigroup that is not a Weierstrass semigroup
- buchweitzSemigroups -- Finds semigroups that are not Weierstrass semigroups by the Buchweitz test

## Properties of semigroup rings

- burchIndex -- Compute the burchIndex of the Burch ring of a semigroup
- semigroupRing -- forms the semigroup ring over "BaseField"
- socle -- elements of the semigroup that are in the socle mod the multiplicity
- kunzRing -- artinian reduction of a semigroup ring
- isSymmetric -- test whether the semigroup generated by L is symmetric

## Weierstrass semigroups

The question whether every semigroup is a Weierstrass semigroup was answered negatively by Buchweitz: the semigroup generated by {13, 14, 15, 16, 17, 18, 20, 22, 23} is not a Weierstrass semigroup, as demonstrated in buchweitz. On the other hand Pinkham gave a positive criterion with deformation theory. A semigroup is a Weierstrass semigroup if and only if the graded semigroup ring of L has a smoothing deformation with strictly positive deformation parameters.

In this section we implemented Pinkham's approach in POSITIVE CHARACTERISTIC. We plan to extend the smoothing results to characteristic 0 in the future.

- makeUnfolding -- Makes the universal homogeneous unfolding of an ideal with positive degree parameters
- flatteningRelations -- Compute the flattening relations of an unfolding
- getFlatFamily -- Compute the flat family depending on a subset of parameters of the universal unfolding
- findPoint -- Find a kk-rational point in a variety
- isARandomFiberSmooth -- Test whether a random fiber is smooth
- heuristicSmoothness -- Check whether an affine curve is smooth
- isWeierstrassSemigroup -- Experimentally decide whether L is a Weierstrass semigroup
- nonWeierstrassSemigroups -- Find possibly non Weierstrass Semigroups
- LabBookProtocol -- Weierstrass Semigroups in Low genus

## Authors

- David Eisenbud <de@berkeley.edu>
- Frank-Olaf Schreyer <schreyer@math.uni-sb.de>

## Version

This documentation describes version 1.0 of NumericalSemigroups, released October 25, 2024.

## Citation

If you have used this package in your research, please cite it as follows:

    @misc{NumericalSemigroupsSource,
      title = {{NumericalSemigroups: A \emph{Macaulay2} package. Version~1.0}},
      author = {David Eisenbud and Frank-Olaf Schreyer},
      howpublished = {A \emph{Macaulay2} package available at
        \url{https://github.com/Macaulay2/M2/tree/stable/M2/Macaulay2/packages}}
    }

## Exports

- Functions and commands
  - allSemigroups -- Compute the Hilbert basis and module generators of a cone of semigroups
  - apery -- Compute the apery set, multiplicity and conductor
  - aperySemigroupRing -- computes the semigroup ring using both the multiplicity and the full Apery set
  - aperySet -- Compute the apery set of a numerical semigroup
  - buchweitz -- An example of a semigroup that is not a Weierstrass semigroup
  - buchweitzCriterion -- Does L satisfies the Buchweitz criterion?
  - buchweitzSemigroups -- Finds semigroups that are not Weierstrass semigroups by the Buchweitz test
  - burchIndex -- Compute the burchIndex of the Burch ring of a semigroup
  - coneEquations -- Find the equations of the Kunz cones
  - coneRays -- All the rays of the (homogeneous) Kunz cone
  - def1 -- degrees of a basis of T^1
  - `effectiveWeight` -- see ewt -- Effective weight of a semigroup (Pflueger)
  - ewt -- Effective weight of a semigroup (Pflueger)
  - facetRays -- computes the rays spanning the face in which a semigroup lies
  - findPoint -- Find a kk-rational point in a variety
  - findSemigroups -- Find all semigroups with a given number of gaps, multiplicity and/or conductor
  - flatteningRelations -- Compute the flattening relations of an unfolding
  - fractionalIdeal -- turn a fractional ideal into a proper ideal
  - gaps -- The gap sequence of a semigroup
  - getFlatFamily -- Compute the flat family depending on a subset of parameters of the universal unfolding
  - heuristicSmoothness -- Check whether an affine curve is smooth
  - isARandomFiberSmooth -- Test whether a random fiber is smooth
  - isGapSequence -- test whether a list of integers can be the list of gaps of a semigroup
  - isSmoothableSemigroup -- Look for a smoothing family
  - isSymmetric -- test whether the semigroup generated by L is symmetric
  - isWeierstrassSemigroup -- Experimentally decide whether L is a Weierstrass semigroup
  - knownExample -- Is L a known Weierstrass semigroup?
  - kunzMatrix -- determine the set of facet equations satisfied by a semigroup
  - kunzRing -- artinian reduction of a semigroup ring
  - LabBookProtocol -- Weierstrass Semigroups in Low genus
  - makeUnfolding -- Makes the universal homogeneous unfolding of an ideal with positive degree parameters
  - mu -- Compute the point representing a semigroup in the Kunz cone
  - nonWeierstrassSemigroups -- Find possibly non Weierstrass Semigroups
  - semigroup -- Compute the semigroup generated by a list of positive integers
  - semigroupIdeal -- The ideal defining the semigroup ring
  - semigroupRing -- forms the semigroup ring over "BaseField"
  - socle -- elements of the semigroup that are in the socle mod the multiplicity
  - sums -- sum of two sequences
  - type -- type of the local semigroup ring
  - weight -- weight of a semigroup
- Methods
  - `allSemigroups(List)` -- see allSemigroups -- Compute the Hilbert basis and module generators of a cone of semigroups
  - `allSemigroups(ZZ)` -- see allSemigroups -- Compute the Hilbert basis and module generators of a cone of semigroups
  - `apery(List)` -- see apery -- Compute the apery set, multiplicity and conductor
  - `aperySemigroupRing(List)` -- see aperySemigroupRing -- computes the semigroup ring using both the multiplicity and the full Apery set
  - `aperySet(HashTable)` -- see aperySet -- Compute the apery set of a numerical semigroup
  - `aperySet(List)` -- see aperySet -- Compute the apery set of a numerical semigroup
  - `buchweitz(ZZ)` -- see buchweitz -- An example of a semigroup that is not a Weierstrass semigroup
  - `buchweitzCriterion(List)` -- see buchweitzCriterion -- Does L satisfies the Buchweitz criterion?
  - `buchweitzCriterion(ZZ,List)` -- see buchweitzCriterion -- Does L satisfies the Buchweitz criterion?
  - `buchweitzSemigroups(ZZ)` -- see buchweitzSemigroups -- Finds semigroups that are not Weierstrass semigroups by the Buchweitz test
  - `buchweitzSemigroups(ZZ,ZZ)` -- see buchweitzSemigroups -- Finds semigroups that are not Weierstrass semigroups by the Buchweitz test
  - `buchweitzSemigroups(ZZ,ZZ,ZZ)` -- see buchweitzSemigroups -- Finds semigroups that are not Weierstrass semigroups by the Buchweitz test
  - `burchIndex(List)` -- see burchIndex -- Compute the burchIndex of the Burch ring of a semigroup
  - conductor(List) -- conductor of a semigroup
  - `coneEquations(List)` -- see coneEquations -- Find the equations of the Kunz cones
  - `coneEquations(ZZ)` -- see coneEquations -- Find the equations of the Kunz cones
  - `coneRays(ZZ)` -- see coneRays -- All the rays of the (homogeneous) Kunz cone
  - `def1(List)` -- see def1 -- degrees of a basis of T^1
  - `effectiveWeight(List)` -- see ewt -- Effective weight of a semigroup (Pflueger)
  - `ewt(List)` -- see ewt -- Effective weight of a semigroup (Pflueger)
  - `facetRays(List)` -- see facetRays -- computes the rays spanning the face in which a semigroup lies
  - `findPoint(Ideal)` -- see findPoint -- Find a kk-rational point in a variety
  - `findSemigroups(ZZ)` -- see findSemigroups -- Find all semigroups with a given number of gaps, multiplicity and/or conductor
  - `findSemigroups(ZZ,ZZ)` -- see findSemigroups -- Find all semigroups with a given number of gaps, multiplicity and/or conductor
  - `findSemigroups(ZZ,ZZ,ZZ)` -- see findSemigroups -- Find all semigroups with a given number of gaps, multiplicity and/or conductor
  - `flatteningRelations(Ideal,Ring,Matrix)` -- see flatteningRelations -- Compute the flattening relations of an unfolding
  - `fractionalIdeal(List,List)` -- see fractionalIdeal -- turn a fractional ideal into a proper ideal
  - `gaps(List)` -- see gaps -- The gap sequence of a semigroup
  - genus(List) -- Compute the number of gaps (genus) of a semigroup
  - `getFlatFamily(List,RR,ZZ)` -- see getFlatFamily -- Compute the flat family depending on a subset of parameters of the universal unfolding
  - `heuristicSmoothness(Ideal)` -- see heuristicSmoothness -- Check whether an affine curve is smooth
  - `isARandomFiberSmooth(Ideal,Ideal,Matrix)` -- see isARandomFiberSmooth -- Test whether a random fiber is smooth
  - `isGapSequence(List)` -- see isGapSequence -- test whether a list of integers can be the list of gaps of a semigroup
  - `isSmoothableSemigroup(List,RR,ZZ)` -- see isSmoothableSemigroup -- Look for a smoothing family
  - `isSymmetric(List)` -- see isSymmetric -- test whether the semigroup generated by L is symmetric
  - `isWeierstrassSemigroup(List,RR)` -- see isWeierstrassSemigroup -- Experimentally decide whether L is a Weierstrass semigroup
  - `knownExample(List)` -- see knownExample -- Is L a known Weierstrass semigroup?
  - `kunzMatrix(HashTable)` -- see kunzMatrix -- determine the set of facet equations satisfied by a semigroup
  - `kunzMatrix(List)` -- see kunzMatrix -- determine the set of facet equations satisfied by a semigroup
  - `kunzRing(List)` -- see kunzRing -- artinian reduction of a semigroup ring
  - `LabBookProtocol(ZZ)` -- see LabBookProtocol -- Weierstrass Semigroups in Low genus
  - `makeUnfolding(Ideal)` -- see makeUnfolding -- Makes the universal homogeneous unfolding of an ideal with positive degree parameters
  - `makeUnfolding(List)` -- see makeUnfolding -- Makes the universal homogeneous unfolding of an ideal with positive degree parameters
  - mingens(List) -- Find a mininmal set of semigroup generators
  - `mu(HashTable)` -- see mu -- Compute the point representing a semigroup in the Kunz cone
  - `mu(List)` -- see mu -- Compute the point representing a semigroup in the Kunz cone
  - `nonWeierstrassSemigroups(ZZ,ZZ)` -- see nonWeierstrassSemigroups -- Find possibly non Weierstrass Semigroups
  - `nonWeierstrassSemigroups(ZZ,ZZ,List)` -- see nonWeierstrassSemigroups -- Find possibly non Weierstrass Semigroups
  - `semigroup(List)` -- see semigroup -- Compute the semigroup generated by a list of positive integers
  - `semigroupIdeal(List)` -- see semigroupIdeal -- The ideal defining the semigroup ring
  - `semigroupRing(List)` -- see semigroupRing -- forms the semigroup ring over "BaseField"
  - `socle(List)` -- see socle -- elements of the semigroup that are in the socle mod the multiplicity
  - `sums(List,List)` -- see sums -- sum of two sequences
  - `sums(ZZ,List)` -- see sums -- sum of two sequences
  - `type(List)` -- see type -- type of the local semigroup ring
  - `weight(List)` -- see weight -- weight of a semigroup

## For the programmer

The object NumericalSemigroups is a package, defined in NumericalSemigroups.m2.

The source of this document is in /build/macaulay2-88fgJW/macaulay2-1.25.11+ds/M2/Macaulay2/packages/NumericalSemigroups.m2:1494:0.