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

findSemigroups -- Find all semigroups with a given number of gaps, multiplicity and/or conductor

Synopsis

Description

If S is the Weierstrass semigroup of a point p on a Riemann surface X -- that is, the semigroup of pole orders of rational functions at p, then the genus of X is the number of gaps of S and there is a differential on X vanishing to order exactly d iff d+1 is a gap.

i1 : findSemigroups(5,14,8)

o1 = {{5, 7, 11}, {5, 7, 9}, {5, 6, 14}, {5, 9, 11, 12}}

o1 : List
i2 : G = gaps {5,7,9}

o2 = {1, 2, 3, 4, 6, 8, 11, 13}

o2 : List
i3 : #G

o3 = 8

The number of vanishing orders of quadratic differentials on is h^0(2K) = (4g-4) - g + 1 = 3g-3, so if s is the semigroup of pole orders of a point on X and G is the set of gaps, then there can be at most 3g-3 distinct sums of pairs of elements of G. This gives a nontrivial obstruction to the smoothability of the semigroup ring of S and thus to the existence of a Weierstrass point with semigroup s.

The following example, discovered by Ragnar Buchweitz (Thesis) was the first known example of a non-Weierstrass semigroup.

i4 : G=toList(1..12)|{19,21,24,25}

o4 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 19, 21, 24, 25}

o4 : List

The function isGapSequence returns generators for the semigroups with given gap sequence or returns false if there is no such semigroup

i5 : L=isGapSequence G

o5 = {13, 14, 15, 16, 17, 18, 20, 22, 23}

o5 : List
i6 : g = #G

o6 = 16
i7 : 3*g-3

o7 = 45
i8 : #sums(G,G)

o8 = 46

See also

Ways to use findSemigroups:

For the programmer

The object findSemigroups is a method function.