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

LabBookProtocol -- Weierstrass Semigroups in Low genus

Synopsis

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
 -- .0754618s elapsed
flatteningRelations
 -- .0651297s elapsed
next gb
 -- .000542381s elapsed
true
unfolding
 -- .0669692s elapsed
flatteningRelations
 -- .0644503s elapsed
next gb
 -- .000398709s elapsed
true
 -- .780745s elapsed

o6 = {}

o6 : List
i7 : elapsedTime LL7b=select(LL7a,L->not isSmoothableSemigroup(L,0.25,0))
 -- .7509s 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
 -- .128955s elapsed
flatteningRelations
 -- .0801185s elapsed
next gb
 -- .000613204s elapsed
true
 -- .357538s elapsed
(5, 8,  all semigroups are smoothable) -- .393869s 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)
 -- .0402559s elapsed
6
false
5
false
4
decompose
 -- .203168s 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

Ways to use LabBookProtocol:

For the programmer

The object LabBookProtocol is a method function.