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

# LabBookProtocol -- Weierstrass Semigroups in Low genus

- Usage:
    `s = LabBookProtocol g`
- Inputs:
  - g, an integer, genus
- Outputs:
  - s, a string, commands to study semigroups of genus g

## Description

This function prints a series of commands that check that most semigroups of genus g (up to g = 10) are Weierstrass. It outputs a short list of "difficult" examples that currently take too long to check.

    i1 : LabBookProtocol 7

        LL7=findSemigroups 7;#LL7
        LL7a=select(LL7,L->not knownExample L);#LL7a
        elapsedTime LL7b=select(LL7a,L->not isSmoothableSemigroup(L,0.25,0))
        LL7b=={} -- => every genus 7 semigroup is Weierstrass

    i2 : LL7=findSemigroups 7;#LL7

    o3 = 39

    i4 : LL7a=select(LL7,L->not knownExample L);#LL7a

    o5 = 2

    i6 : elapsedTime LL7b=select(LL7a,L->not isSmoothableSemigroup(L,0.25,0,Verbose=>true))
    unfolding
     -- .146579s elapsed
    flatteningRelations
     -- .121793s elapsed
    next gb
     -- .00071196s elapsed
    true
    unfolding
     -- .135794s elapsed
    flatteningRelations
     -- .130337s elapsed
    next gb
     -- .000471038s elapsed
    true
     -- 1.42553s elapsed

    o6 = {}

    o6 : List

    i7 : elapsedTime LL7b=select(LL7a,L->not isSmoothableSemigroup(L,0.25,0))
     -- 1.35375s elapsed

    o7 = {}

    o7 : List

    i8 : LL7b=={}

    o8 = true

With the option Verbose=>true one gets timings on various parts of the computation. To check all semigroups of genus g=8,9 and 10 takes about

18.2, 161.1 and 945.6 seconds respectively.

    i9 : LabBookProtocol 11

        LL11=findSemigroups 11;#LL11
        LL11a=select(LL11,L->not knownExample L);#LL11a
        last LL11a, last LL11 -- shows that all examples of genus 11 not covered by Plueger have multiplicity <= 10.

        elapsedTime nonWeierstrassSemigroups(5,11) -- 117.422 seconds elapsed -
        LLdifficult={{6, 8, 17, 19, 21},{6, 8, 10, 19, 21, 23},{6, 9, 11, 14}}
        elapsedTime nonWeierstrassSemigroups(6,11,LLdifficult,Verbose=>true)   -- 267.818 seconds elapsed
        --(6, 11,  all but difficult semigroups are smoothable)
        elapsedTime LL611=select(LLdifficult,L->(<<L<<endl<<flush;elapsedTime not isWeierstrassSemigroup(L,0.4,Verbose=>true)));   -- 197.l321 seconds elapsed

        elapsedTime nonWeierstrassSemigroups(7,11, LLdifficult, Verbose => true) --257 sec
        LLdifficult={{8, 9, 11, 15, 21}}
        elapsedTime nonWeierstrassSemigroups(8,11, LLdifficult, Verbose => true)
        LLdifficult={}
        elapsedTime nonWeierstrassSemigroups(9,11, LLdifficult, Verbose => true)
        LLdifficult={}
        elapsedTime nonWeierstrassSemigroups(10,11, LLdifficult, Verbose => true)

Since the number of cases gets rather large, we break up the list of all semigroups into sublists of semigroups of given multiplicity and call the function nonWeierstrassSemigroups:

    i10 : m=5,g=8

    o10 = (5, 8)

    o10 : Sequence

    i11 : elapsedTime nonWeierstrassSemigroups(m,g,Verbose=>true)
    (13, 1)
    {5, 8, 11, 12}
    unfolding
     -- .190172s elapsed
    flatteningRelations
     -- .151483s elapsed
    next gb
     -- .000800922s elapsed
    true
     -- .597641s elapsed
    (5, 8,  all semigroups are smoothable)
     -- .626235s elapsed

    o11 = {}

    o11 : List

In the verbose mode we get timings of various computation steps and further information. The first line, (13,1), indicates that there 13 semigroups of multiplicity 5 and genus 8 of which only 1 is not flagged as smoothable by the function knownExample. The second line, {5,8,11,12}, gives the current semigroup. The timing under various headers tells how much time was used in each of the steps.

    i12 : L={6,8,9,11}

    o12 = {6, 8, 9, 11}

    o12 : List

    i13 : genus L

    o13 = 8

    i14 : isWeierstrassSemigroup(L,0.2,Verbose=>true)
     -- .080474s elapsed
    6
    false
    5
    false
    4
    decompose
     -- .312206s elapsed
    number of components: 2
    support c, codim c: {(1, 1), (16, 3)}
    {0, -1}

    o14 = true

The first integer, 6, tells that in this attempt deformation parameters of degree >= 6 were used and no smooth fiber was found. Finally with all parameters of degree >= 4, the flatteningRelations define a scheme that decomposes into 2 components, both affine spaces. If we encounter non affine components we print "has to solve", and find a point in each such component. We then print the number of singular points in the fiber. Finally the output "{0,-1}" is the dimension of the singular loci of a random fiber over each component. Thus the entry "-1" indicates that a general fiber of the second component is smooth.

## See also

- isSmoothableSemigroup -- Look for a smoothing family
- isWeierstrassSemigroup -- Experimentally decide whether L is a Weierstrass semigroup
- nonWeierstrassSemigroups -- Find possibly non Weierstrass Semigroups
- knownExample -- Is L a known Weierstrass semigroup?

## Ways to use LabBookProtocol:

- `LabBookProtocol(ZZ)`

## For the programmer

The object LabBookProtocol is a method function.

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