  
  [1X6 [33X[0;0YUsage of [5XIntPic[105X[101X[1X in connection with the [5Xnumericalsgps[105X[101X[1X package[133X[101X
  
  [33X[0;0YThis  chapter  describes  functions  to  be  used  in  connection  with  the
  [5Xnumericalsgps[105X  package.  We  found it particularly usefull to gain intuition
  that led to the obtention of the results stated in [DGSRP16].[133X
  
  
  [1X6.1 [33X[0;0YTikz code for drawing numerical semigroups[133X[101X
  
  
  [1X6.1-1 [33X[0;0YTikz code for drawing numerical semigroups[133X[101X
  
  [33X[1;0Y[29X[2XTikzCodeForNumericalSemigroup[102X( [3Xarg[103X ) [32X function[133X
  
  [33X[0;0YThe arguments (at most 4) are:[133X
  
  [31X1[131X   [33X[0;6Ya numerical semigroup[133X
  
  [31X2[131X   [33X[0;6Y(optional) a list whose elements are either[133X
  
        [30X    [33X[0;12Ylists of integers [13Xor[113X[133X
  
        [30X    [33X[0;12Yone   of   the   strings  "pseudo_frobenius",  "min_generators",
              "frobenius_number",         "conductor",         "special_gaps",
              "fundamental_gaps",  "small_elements" (the default: used when no
              list is present) [13Xor[113X[133X
  
        [30X    [33X[0;12Ythe string "ns_table" (the drawing obtained is a table whose top
              row  corresponds to the threshold interval; as a side effect, if
              it  is  turned  to  "true",  negative integers are not printed);
              alternatively,  the  option  can  be  given  in  the  usual way:
              [10Xrec(ns_table := true)[110X[133X
  
  [31X3[131X   [33X[0;6Ya record whose fields are[133X
  
        [30X    [33X[0;12Yfunc -- a function name[133X
  
        [30X    [33X[0;12Y(optional)  argument -- an argument (that may be a function name
              also)[133X
  
  [31X4[131X   [33X[0;6Y(optional) a positive integer -- if it is bigger than the conductor or
        biggest  minimal generator, it indicates the number of cells - 1 to be
        drawn  and  these  are drawn in a single line; otherwise, it indicates
        the maximum number of cells per line.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xns := NumericalSemigroup(5,7);;                                               [127X[104X
    [4X[25Xgap>[125X [27Xtkz := TikzCodeForNumericalSemigroup(ns,["ns_table"],rec(negatives:=false));[127X[104X
    [4X[28X#I  In order to highlight some element, please use a list with one or more of the [128X[104X
    [4X[28Xoptions given as strings: pseudo_frobenius, min_generators, frobenius_number, [128X[104X
    [4X[28Xconductor, special_gaps, fundamental_gaps, small_elements[128X[104X
    [4X[28X[128X[104X
    [4X[28X"%tikz\n\\begin{tikzpicture}[every node/.style={draw,scale=1pt,\nminimum width\[128X[104X
    [4X[28X=20pt,inner sep=3pt,\nline width=0pt,draw=black}]\n\\matrix[row sep=2pt,column\[128X[104X
    [4X[28X sep=2pt]\n{\\node[]{24};&\n\\node[]{25};&\n\\node[]{26};&\n\\node[]{27};&\n\\\[128X[104X
    [4X[28Xnode[]{28};\\\\\n\\node[]{19};&\n\\node[]{20};&\n\\node[]{21};&\n\\node[]{22};\[128X[104X
    [4X[28X&\n\\node[]{23};\\\\\n\\node[]{14};&\n\\node[]{15};&\n\\node[]{16};&\n\\node[]\[128X[104X
    [4X[28X{17};&\n\\node[]{18};\\\\\n\\node[]{9};&\n\\node[]{10};&\n\\node[]{11};&\n\\no\[128X[104X
    [4X[28Xde[]{12};&\n\\node[]{13};\\\\\n\\node[]{4};&\n\\node[]{5};&\n\\node[]{6};&\n\\\[128X[104X
    [4X[28Xnode[]{7};&\n\\node[]{8};\\\\\n&\n\\node[]{0};&\n\\node[]{1};&\n\\node[]{2};&\[128X[104X
    [4X[28X\n\\node[]{3};\\\\\n};\n\\end{tikzpicture}\n"[128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xtkz := TikzCodeForNumericalSemigroup(ns,["small_elements"],[127X[104X
    [4X[25X>[125X [27Xrec(ns_table := true,negatives:=false));;[127X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xns1 := NumericalSemigroup(3,5);;[127X[104X
    [4X[25Xgap>[125X [27XTikzCodeForNumericalSemigroup(ns1,[[3,4],"pseudo_frobenius"],20);[127X[104X
    [4X[28X"%tikz\n\\begin{tikzpicture}[every node/.style={draw,scale=1pt,\nminimum width\[128X[104X
    [4X[28X=20pt,inner sep=3pt,\nline width=0pt,draw=black}]\n\\matrix[row sep=2pt,column\[128X[104X
    [4X[28X sep=2pt]\n{\\node[]{0};&\n\\node[]{1};&\n\\node[]{2};&\n\\node[fill=red]{3};&\[128X[104X
    [4X[28X\n\\node[fill=red]{4};&\n\\node[]{5};&\n\\node[]{6};&\n\\node[fill=green]{7};&\[128X[104X
    [4X[28X\n\\node[]{8};&\n\\node[]{9};&\n\\node[]{10};&\n\\node[]{11};&\n\\node[]{12};&\[128X[104X
    [4X[28X\n\\node[]{13};&\n\\node[]{14};&\n\\node[]{15};&\n\\node[]{16};&\n\\node[]{17}\[128X[104X
    [4X[28X;&\n\\node[]{18};&\n\\node[]{19};&\n\\node[]{20};\\\\\n};\n\\end{tikzpicture}\[128X[104X
    [4X[28X\n"[128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XIP_Splash(TikzCodeForNumericalSemigroup(NumericalSemigroup(7,13,19,23),[127X[104X
    [4X[25X>[125X [27X[[3,4],"small_elements","fundamental_gaps"],20),rec(viewer := "evince"));    [127X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xns := NumericalSemigroup(7,11,38,41);;[127X[104X
    [4X[25Xgap>[125X [27Xhighlights := ["conductor", "min_generators", "small_elements"];;[127X[104X
    [4X[25Xgap>[125X [27Xoptions := rec(ns_table:=true,colors:=["blue", "red!70", "-red", "black!40"]);;[127X[104X
    [4X[25Xgap>[125X [27Xtkz := TikzCodeForNumericalSemigroup(ns,highlights,options);;[127X[104X
    [4X[25Xgap>[125X [27XIP_Splash(tkz);[127X[104X
    [4X[25Xgap>[125X [27Xtkz := TikzCodeForNumericalSemigroup(ns,highlights,rec(ns_table:=true));;[127X[104X
    [4X[25Xgap>[125X [27XIP_Splash(tkz);[127X[104X
  [4X[32X[104X
  
  
  [1X6.1-2 [33X[0;0YDrawing a numerical semigroup[133X[101X
  
  [33X[1;0Y[29X[2XDrawNumericalSemigroup[102X( [3Xns[103X ) [32X function[133X
  
  [33X[0;0YThis  function  abbreviates  the  production  of  tikz  code  to display the
  numerical  semigroup  [10Xns[110X  using  some  predefined  options  and  elements to
  highlight  (based  on  the  ones of the above example). It also displays the
  image produced. Note that the production and displaying of the image depends
  on  the  function IP_Splash (which can be slow and depends on an appropriate
  configuration of the system). The output is the tikz code produced.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xm := 31;;[127X[104X
    [4X[25Xgap>[125X [27Xsmall_gens := [m,m+1,m+2,m+3];;[127X[104X
    [4X[25Xgap>[125X [27Xother_gens := List([1..Int(m/7)], k -> 7*k+m);;[127X[104X
    [4X[25Xgap>[125X [27Xns := NumericalSemigroup(Union(small_gens,other_gens));;[127X[104X
    [4X[25Xgap>[125X [27XDrawNumericalSemigroup(ns);;[127X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  
  [1X6.2 [33X[0;0YDrawing sets of numerical semigroups[133X[101X
  
  
  [1X6.2-1 [33X[0;0YSet of numerical semigroups[133X[101X
  
  [33X[1;0Y[29X[2XSetOfNumericalSemigroups[102X( [3Xarg[103X ) [32X function[133X
  
  [33X[0;0YThis  function is used to produce lists of numerical semigroups with a fixed
  genus  or  Frobenius number. They are filtered and ordered according to some
  criteria.[133X
  
  [33X[0;0YThe argument is a record of options:[133X
  
  [31X1[131X   [33X[0;6Yset -- a record whose possible fields are genus or frobenius[133X
  
  [31X2[131X   [33X[0;6Y(optional)  filter  --  a record whose possible fields are genus, type
        and/or multiplicity and/or frobenius and/or embedding_dimension[133X
  
  [31X3[131X   [33X[0;6Y(optional)  order  --  ("genus",  "type", "multiplicity", "frobenius",
        "embedding_dimension")[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xls := SetOfNumericalSemigroups(rec(set:=rec(genus:=6),filter:=rec(type:= 2),[127X[104X
    [4X[28Xorder:="multiplicity"));;[128X[104X
    [4X[25Xgap>[125X [27XList(ls,MinimalGenerators);[127X[104X
    [4X[28X[ [ 3, 8, 13 ], [ 3, 10, 11 ], [ 4, 7, 9 ], [ 5, 6, 7 ], [ 5, 6, 8 ], [128X[104X
    [4X[28X  [ 6, 7, 8, 9, 11 ] ][128X[104X
    [4X[25Xgap>[125X [27Xls := SetOfNumericalSemigroups(rec(set:=rec(genus:=6),filter:=rec(type:= 2),[127X[104X
    [4X[28Xorder:="frobenius"));;[128X[104X
    [4X[25Xgap>[125X [27XList(ls,MinimalGenerators);[127X[104X
    [4X[28X[ [ 3, 10, 11 ], [ 5, 6, 7 ], [ 5, 6, 8 ], [ 3, 8, 13 ], [ 4, 7, 9 ], [128X[104X
    [4X[28X  [ 6, 7, 8, 9, 11 ] ][128X[104X
  [4X[32X[104X
  
  
  [1X6.2-2 [33X[0;0YDraw a set of numerical semigroups[133X[101X
  
  [33X[1;0Y[29X[2XDrawSetOfNumericalSemigroups[102X( [3Xarg[103X ) [32X function[133X
  
  [33X[0;0YProduces a single image from the images of a set of numerical semigroups.[133X
  
  [33X[0;0YThe arguments (at most 3) are:[133X
  
  [31X1[131X   [33X[0;6Ya  list  of  numerical  semigroups  (given  as a list or each given as
        argument)[133X
  
  [31X2[131X   [33X[0;6Y(optional)  an  integer  that  (when present) determines the length of
        each line[133X
  
  [31X3[131X   [33X[0;6Y(optional) a record whose fields are[133X
  
        [30X    [33X[0;12Y(optional)  splash  -- which (when present) consists of a record
              of options for the Viz Splash function[133X
  
        [30X    [33X[0;12Y(optional)  highlights: a list to be passed to the function that
              produces  the tikz code for each individual semigroup (whose aim
              is to say which elements are to be highlighted)[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xns1 := NumericalSemigroup(3,5);;[127X[104X
    [4X[25Xgap>[125X [27Xns2 := NumericalSemigroup(5,7,11);;[127X[104X
    [4X[25Xgap>[125X [27XDrawSetOfNumericalSemigroups(ns1,rec(splash:=                          [127X[104X
    [4X[25X>[125X [27Xrec(viewer := "evince"),highlights := [127X[104X
    [4X[25X>[125X [27X["pseudo_frobenius","small_elements","min_generators"]));[127X[104X
    [4X[25Xgap>[125X [27XDrawSetOfNumericalSemigroups(ns1,ns2,rec(splash:= [127X[104X
    [4X[25X>[125X [27Xrec(viewer := "evince"),highlights := [127X[104X
    [4X[25X>[125X [27X["pseudo_frobenius","small_elements","min_generators"]));[127X[104X
    [4X[25Xgap>[125X [27XDrawSetOfNumericalSemigroups([ns1,ns2],rec(splash:=      [127X[104X
    [4X[25X>[125X [27Xrec(viewer := "evince"),highlights :=                    [127X[104X
    [4X[25X>[125X [27X["small_elements","min_generators"]));                   [127X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xfrob := 15;;[127X[104X
    [4X[25Xgap>[125X [27Xtipo := 2;;[127X[104X
    [4X[25Xgap>[125X [27Xset := SetOfNumericalSemigroups(rec(set := rec(frobenius := frob),[127X[104X
    [4X[25X>[125X [27Xfilter := rec(type:= tipo),order := "embedding_dimension"));;[127X[104X
    [4X[25Xgap>[125X [27XDrawSetOfNumericalSemigroups(set,rec(splash:= rec(viewer := "evince"),[127X[104X
    [4X[25X>[125X [27Xhighlights := ["small_elements","min_generators",[127X[104X
    [4X[25X>[125X [27Xrec(func:= "ForcedIntegersForPseudoFrobenius", [127X[104X
    [4X[25X>[125X [27Xargument := "PseudoFrobeniusOfNumericalSemigroup")]));[127X[104X
  [4X[32X[104X
  
  [33X[0;0YThe  following  example  helps in the understanding of the colors present in
  the first line of previous figure.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27Xns := NumericalSemigroup(4,9,19);;[127X[104X
    [4X[25Xgap>[125X [27XSmallElements(ns);[127X[104X
    [4X[28X[ 0, 4, 8, 9, 12, 13, 16 ][128X[104X
    [4X[25Xgap>[125X [27XMinimalGeneratingSystem(ns);[127X[104X
    [4X[28X[ 4, 9, 19 ][128X[104X
    [4X[25Xgap>[125X [27XForcedIntegersForPseudoFrobenius(PseudoFrobeniusOfNumericalSemigroup(ns));[127X[104X
    [4X[28X[ [ 1, 2, 3, 5, 6, 7, 14, 15 ], [ 0, 8, 9, 12, 13, 16 ] ][128X[104X
  [4X[32X[104X
  
