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

allSemigroups -- Compute the Hilbert basis and module generators of a cone of semigroups

Description

Using Normaliz we compute the face of the Kunz cone containing L (or of the cone of semigroups of multiplicity m).

Every semigroup of multiplicity m has Apery set of the form m, mu_1*m+1, mu_2*m+2..mu_(m-1)*m+(m-1). The sequence of mu_i for a semigroup L is the value of mu(L).

i1 : (H,M) = allSemigroups 3

o1 = (| 3 3 |, | 4  5 |)
      | 3 6 |  | 4  8 |
      | 6 3 |  | 7  5 |
               | 10 5 |

o1 : Sequence
i2 : H == matrix{
               {3,3},
               {3,6},
               {6,3}
               }

o2 = true
i3 : M == matrix{
               {4,5},
               {4,8},
               {7,5},
               {10,5}
               }

o3 = true

Here the rows of the first matrix, H, form a Hilbert basis, that is, a set of semigroup generators, of the semigroup of the possible mu(L) as L runs over the semigroups of multiplicity 3. The rows of the the second matrix, M, when prepened by the multiplicity 3, are Apery sets of some semigroups such that every semigroup of multiplicity 3 has Apery set equal to a linear combination of the rows of H added to one of the rows of M.

i4 : allSemigroups {4,7,9}

o4 = (| 4  8 4 |, | 9  14 7 |)
      | 8  8 4 |  | 13 14 7 |
      | 12 8 4 |  | 17 14 7 |
                  | 21 14 7 |

o4 : Sequence

This means that all the semigroups on the same (open) face of the Kunz cone as {4,7,9} can be obtained by taking a linear combination of the rows of H, adding one of the rows of M, and prepending the multiplicity 4.

On the face with the buchweitz example there are two facet rays:

i5 : (H,M) = allSemigroups buchweitz 0

o5 = (| 13 13 13 13 13 26 13 26  13  13  26  26  |, | 14 15 16 17 18 32 20
      | 13 26 39 52 65 78 91 104 117 130 143 156 |  | 14 28 42 56 70 84 98
     ------------------------------------------------------------------------
     34  22  23  37  38  |)
     112 126 140 154 168 |

o5 : Sequence

The first row of H is 13*(mu buchweitz 0), the mu vector of the Buchweitz example. Adding multiples of the first row to the Weierstrass semigroups of an ordinary point on a curve of genus 12, we eventually reach a semigroup that fails the Buchweitz test to be a Weierstrass semigroup:

i6 : b = {0}|flatten (entries H)_0

o6 = {0, 13, 13, 13, 13, 13, 26, 13, 26, 13, 13, 26, 26}

o6 : List
i7 : L = toList (13..25)

o7 = {13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25}

o7 : List
i8 : for i from 0 to 15 list (
         L' = L+i*b;
         G = gaps L';
         3*(genus L' -1)-#sums(G,G)
         )

o8 = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5}

o8 : List

By Riemann-Roch the quantity 3*(genus L' -1)-#sums(G,G) is non-negative for Weierstrass semigroups. We conjecture that the same thing is true for any semigroup L0 of multiplicity 13 in place of L. Here is a "random" example:

i9 : setRandomSeed 0
 -- setting random seed to 0

o9 = 0
i10 : L0 = {13}|aperySet ({13}|apply(1 + random 10, i->13+random 10))

o10 = {13, 14, 28, 16, 30, 44, 32, 20, 21, 35, 36, 37, 51}

o10 : List
i11 : for i from 0 to 20 list (
         L' = L0+i*b;
         G = gaps L';
         3*(genus L' -1)-#sums(G,G)
         )

o11 = {3, 8, 10, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -6,
      -----------------------------------------------------------------------
      -7}

o11 : List

See also

Ways to use allSemigroups:

  • allSemigroups(List)
  • allSemigroups(ZZ)

For the programmer

The object allSemigroups is a method function.


The source of this document is in /build/reproducible-path/macaulay2-1.26.06+ds/M2/Macaulay2/packages/NumericalSemigroups.m2:2246:0.