Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/francy/notebooks/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 17.3.2023 mit Größe 87 kB image not shown  

Quelle  francy-numericalsgps.ipynb   Sprache: unbekannt

 
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Numerical semigroups with `francy`\n",
    "\n",
    "## Load `francy` Package"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 1,
     "metadata": {
      "text/plain": ""
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 2,
     "metadata": {
      "text/plain": ""
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "LoadPackage(\"francy\");\n",
    "LoadPackage(\"num\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Drawing Apéry sets"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This example draws the Apéry set of a numerical semigrup with respect to its multiplicity. By passing over a node with the mouse, the set of factorizations with respect to the minimal generating system of the numerical semigroup is displayed. Clicking a node produces a message with the same information."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "function( arg... ) ... end"
      ]
     },
     "execution_count": 3,
     "metadata": {
      "text/plain": ""
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "apery:=function(arg)\n",
    "    local ap,c,hasse, s, n, r, graphHasse, aps, es, canvas, i, order, showfacts, message;\n",
    "    # rel is a list of lists with two elements representin a binary relation\n",
    "    # hasse(rel) removes from rel the pairs [x,y] such that there exists\n",
    "    # z with [x,z],[z,y] in rel\n",
    "    hasse:=function(rel)\n",
    "      local dom, out;\n",
    "      dom:=Flat(rel);\n",
    "      out:=Filtered(rel, p-> ForAny(dom, x->([p[1],x] in rel) and ([x,p[2]] in rel)));\n",
    "      return Difference(rel,out);\n",
    "    end;\n",
    "    \n",
    "\n",
    "    order:=function(x)\n",
    "        return Maximum(LengthsOfFactorizationsElementWRTNumericalSemigroup(x,s));\n",
    "    end;\n",
    "\n",
    "    showfacts:=function(x)\n",
    "        message := FrancyMessage(Concatenation(String(x), \" factors as \"), \n",
    "                    String(FactorizationsElementWRTNumericalSemigroup(x,s)));\n",
    "        SetFrancyId(message, Concatenation(\"message-for-\", String(x)));\n",
    "        Add(canvas, message);\n",
    "        return Draw(canvas);\n",
    "    end;\n",
    "    if Length(arg)=1 then\n",
    "        s:=arg[1];\n",
    "        n:=MultiplicityOfNumericalSemigroup(s);\n",
    "    fi;\n",
    "    if Length(arg)=2 then\n",
    "        s:=arg[1];\n",
    "        n:=arg[2];\n",
    "    fi;\n",
    "    if Length(arg)>2 then\n",
    "        Error(\"The number of arguments must be one or two\");\n",
    "    fi;\n",
    "    \n",
    "  \n",
    "    graphHasse := Graph(GraphType.UNDIRECTED);\n",
    "    #SetSimulation(graphHasse,true);\n",
    "    #SetDrag(graphHasse,true);\n",
    "    ap:=AperyList(s,n);\n",
    "    c:=Cartesian([1..n],[1..n]);\n",
    "    c:=Filtered(c, p-> ap[p[2]]<>ap[p[1]]);\n",
    "    c:=Filtered(c, p-> ap[p[1]]-ap[p[2]] in s);\n",
    "    c:=hasse(c);\n",
    "    aps:=[];\n",
    "    for i in [1..n] do\n",
    "        aps[i]:=Shape(ShapeType!.CIRCLE, String(ap[i]));\n",
    "        SetLayer(aps[i],-order(ap[i]));\n",
    "        Add(aps[i],Callback(showfacts,[ap[i]]));\n",
    "        Add(aps[i],FrancyMessage(Concatenation(\"{\",\n",
    "            JoinStringsWithSeparator(List(FactorizationsElementWRTNumericalSemigroup(ap[i],s), \n",
    "            f->Concatenation(\"(\",JoinStringsWithSeparator(f,\",\"),\")\")),\",\"),\")\")));\n",
    "        Add(graphHasse,aps[i]);\n",
    "    od;\n",
    "    for r in c do\n",
    "        Add(graphHasse,Link(aps[r[1]],aps[r[2]]));\n",
    "    od;\n",
    "    canvas:=Canvas(\"Apery\");\n",
    "    Add(canvas,graphHasse);\n",
    "    return Draw(canvas);    \n",
    "end;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.francy+json": "{\"canvas\" : {\"graph\" : {\"collapsed\" : true,\"id\" : \"F0935E1111DD14DF13C7643305440A90F\",\"links\" : {\"F06668D287B154619349F2436DCD72C18\" : {\"color\" : \"\",\"id\" : \"F06668D287B154619349F2436DCD72C18\",\"invisible\" : false,\"length\" : 0,\"source\" : \"FBADFB1FBB15143125C5771BF1E49AAAC\",\"target\" : \"FAC5309F8108F4A06F49F78E45EF88986\",\"weight\" : 0},\"F0EFC447BC2A94F6A046EAA5CF1827861\" : {\"color\" : \"\",\"id\" : \"F0EFC447BC2A94F6A046EAA5CF1827861\",\"invisible\" : false,\"length\" : 0,\"source\" : \"FAC5309F8108F4A06F49F78E45EF88986\",\"target\" : \"FE3F02797F57E4022DCE98F0FCF04CBA8\",\"weight\" : 0},\"F2140F5B9EB414493EC719FFE8D4BF2ED\" : {\"color\" : \"\",\"id\" : \"F2140F5B9EB414493EC719FFE8D4BF2ED\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F948734D11FBF42E464F04F2EE6D6C0DE\",\"target\" : \"FC5452D576AF74C9EF4FB46A59E28D428\",\"weight\" : 0},\"F2B929BF53E274CED6C033077FD182A78\" : {\"color\" : \"\",\"id\" : \"F2B929BF53E274CED6C033077FD182A78\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F6E20A7A3B1004032E4CE51E46A17101F\",\"target\" : \"F2A6C37797BF9484A0470FE1CE5464A41\",\"weight\" : 0},\"F2D93B026F585424AF4DCE24E0C2A49F8\" : {\"color\" : \"\",\"id\" : \"F2D93B026F585424AF4DCE24E0C2A49F8\",\"invisible\" : false,\"length\" : 0,\"source\" : \"FEF76FDF6550246224C26BEBD124862CC\",\"target\" : \"F2A6C37797BF9484A0470FE1CE5464A41\",\"weight\" : 0},\"F49BDA1295C9445F6F4EC266BF0A82D84\" : {\"color\" : \"\",\"id\" : \"F49BDA1295C9445F6F4EC266BF0A82D84\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F366688A254054F9AFC43A6EA5008CAD2\",\"target\" : \"FBADFB1FBB15143125C5771BF1E49AAAC\",\"weight\" : 0},\"F55F63E4544B84A3F14A229612277EA64\" : {\"color\" : \"\",\"id\" : \"F55F63E4544B84A3F14A229612277EA64\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F40528265F01D48195C823DDF5A14D7CF\",\"target\" : \"FE3F02797F57E4022DCE98F0FCF04CBA8\",\"weight\" : 0},\"F7220CDA1859D4FB5D44E4B78F5ED59EB\" : {\"color\" : \"\",\"id\" : \"F7220CDA1859D4FB5D44E4B78F5ED59EB\",\"invisible\" : false,\"length\" : 0,\"source\" : \"FBADFB1FBB15143125C5771BF1E49AAAC\",\"target\" : \"F40528265F01D48195C823DDF5A14D7CF\",\"weight\" : 0},\"F8DD0CA00423F4D774CF0766011BCA30F\" : {\"color\" : \"\",\"id\" : \"F8DD0CA00423F4D774CF0766011BCA30F\",\"invisible\" : false,\"length\" : 0,\"source\" : \"FAC5309F8108F4A06F49F78E45EF88986\",\"target\" : \"F948734D11FBF42E464F04F2EE6D6C0DE\",\"weight\" : 0},\"F94F08AE9E9724579DC4004270C597E1A\" : {\"color\" : \"\",\"id\" : \"F94F08AE9E9724579DC4004270C597E1A\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F366688A254054F9AFC43A6EA5008CAD2\",\"target\" : \"F6E20A7A3B1004032E4CE51E46A17101F\",\"weight\" : 0},\"FA6051B31B0334002FC557EA064E34781\" : {\"color\" : \"\",\"id\" : \"FA6051B31B0334002FC557EA064E34781\",\"invisible\" : false,\"length\" : 0,\"source\" : \"FE3F02797F57E4022DCE98F0FCF04CBA8\",\"target\" : \"FC5452D576AF74C9EF4FB46A59E28D428\",\"weight\" : 0},\"FA9ED231CB4E94792E44909958FE38065\" : {\"color\" : \"\",\"id\" : \"FA9ED231CB4E94792E44909958FE38065\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F2A6C37797BF9484A0470FE1CE5464A41\",\"target\" : \"F948734D11FBF42E464F04F2EE6D6C0DE\",\"weight\" : 0},\"FBD9E398833344A7ADC806BAD17402604\" : {\"color\" : \"\",\"id\" : \"FBD9E398833344A7ADC806BAD17402604\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F6E20A7A3B1004032E4CE51E46A17101F\",\"target\" : \"FAC5309F8108F4A06F49F78E45EF88986\",\"weight\" : 0}},\"nodes\" : {\"F2A6C37797BF9484A0470FE1CE5464A41\" : {\"callbacks\" : {\"F1AB14F00715746C17C7A051F4C4D50D1\" : {\"func\" : \"unknown\",\"id\" : \"F1AB14F00715746C17C7A051F4C4D50D1\",\"knownArgs\" : [\"62\"],\"requiredArgs\" : {},\"trigger\" : \"click\"}},\"color\" : \"\",\"id\" : \"F2A6C37797BF9484A0470FE1CE5464A41\",\"layer\" : -2,\"menus\" : {},\"messages\" : {\"FCC126CDF1E5242146C0BCE666332E9C4\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"F0868DA228962428204E306E7BA02C0BF\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FCC126CDF1E5242146C0BCE666332E9C4\",\"text\" : \"{(0,0,2))\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 10,\"title\" : \"62\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F366688A254054F9AFC43A6EA5008CAD2\" : {\"callbacks\" : {\"F12AC5E185BB641038431E4B4C3456293\" : {\"func\" : \"unknown\",\"id\" : \"F12AC5E185BB641038431E4B4C3456293\",\"knownArgs\" : [\"116\"],\"requiredArgs\" : {},\"trigger\" : \"click\"}},\"color\" : \"\",\"id\" : \"F366688A254054F9AFC43A6EA5008CAD2\",\"layer\" : -4,\"menus\" : {},\"messages\" : {\"F4509A7188928455C64B962BCBF295BF1\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"F682E684B60AC4F4CCCEED7EAB57AE7DA\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F4509A7188928455C64B962BCBF295BF1\",\"text\" : \"{(0,2,2))\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 10,\"title\" : \"116\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F40528265F01D48195C823DDF5A14D7CF\" : {\"callbacks\" : {\"F3A62027A90C14B2E64ADFBE598DCAB1F\" : {\"func\" : \"unknown\",\"id\" : \"F3A62027A90C14B2E64ADFBE598DCAB1F\",\"knownArgs\" : [\"54\"],\"requiredArgs\" : {},\"trigger\" : \"click\"}},\"color\" : \"\",\"id\" : \"F40528265F01D48195C823DDF5A14D7CF\",\"layer\" : -2,\"menus\" : {},\"messages\" : {\"F36D7D8C8024E4D9B34DBDCE35F39E797\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"F4F18DC8FBC08428664203B7254BEDCFC\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F36D7D8C8024E4D9B34DBDCE35F39E797\",\"text\" : \"{(0,2,0))\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 10,\"title\" : \"54\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F6E20A7A3B1004032E4CE51E46A17101F\" : {\"callbacks\" : {\"F9980C3AB1FE8467A0C39E0816714D39D\" : {\"func\" : \"unknown\",\"id\" : \"F9980C3AB1FE8467A0C39E0816714D39D\",\"knownArgs\" : [\"89\"],\"requiredArgs\" : {},\"trigger\" : \"click\"}},\"color\" : \"\",\"id\" : \"F6E20A7A3B1004032E4CE51E46A17101F\",\"layer\" : -3,\"menus\" : {},\"messages\" : {\"FADAB64089636489B9C138F2DEEA6DF25\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"F383B937CCF3547927CB4CC7779D548B7\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FADAB64089636489B9C138F2DEEA6DF25\",\"text\" : \"{(0,1,2))\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 10,\"title\" : \"89\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F948734D11FBF42E464F04F2EE6D6C0DE\" : {\"callbacks\" : {\"F54CD4B05DD4246E92C0525D0F611334A\" : {\"func\" : \"unknown\",\"id\" : \"F54CD4B05DD4246E92C0525D0F611334A\",\"knownArgs\" : [\"31\"],\"requiredArgs\" : {},\"trigger\" : \"click\"}},\"color\" : \"\",\"id\" : \"F948734D11FBF42E464F04F2EE6D6C0DE\",\"layer\" : -1,\"menus\" : {},\"messages\" : {\"FC957E285E0B14173EC9381C00B082970\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"F78F966D29C48478A349E56140B0752E8\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FC957E285E0B14173EC9381C00B082970\",\"text\" : \"{(0,0,1))\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 10,\"title\" : \"31\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FAC5309F8108F4A06F49F78E45EF88986\" : {\"callbacks\" : {\"F18FE4D8176C446357C71A0CC5EE3A37F\" : {\"func\" : \"unknown\",\"id\" : \"F18FE4D8176C446357C71A0CC5EE3A37F\",\"knownArgs\" : [\"58\"],\"requiredArgs\" : {},\"trigger\" : \"click\"}},\"color\" : \"\",\"id\" : \"FAC5309F8108F4A06F49F78E45EF88986\",\"layer\" : -2,\"menus\" : {},\"messages\" : {\"F893471BC9EC94849B42DB8268A9D1AB6\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"FEE444EE1F5F64CD1BC9BD25BD64986EE\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F893471BC9EC94849B42DB8268A9D1AB6\",\"text\" : \"{(0,1,1))\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 10,\"title\" : \"58\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FBADFB1FBB15143125C5771BF1E49AAAC\" : {\"callbacks\" : {\"FBC3E1C907D124ABCB4D37AFC978D49C0\" : {\"func\" : \"unknown\",\"id\" : \"FBC3E1C907D124ABCB4D37AFC978D49C0\",\"knownArgs\" : [\"85\"],\"requiredArgs\" : {},\"trigger\" : \"click\"}},\"color\" : \"\",\"id\" : \"FBADFB1FBB15143125C5771BF1E49AAAC\",\"layer\" : -3,\"menus\" : {},\"messages\" : {\"F9A4E435F8A234BBD34DD34C838182A5C\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"F8F794C1FA828467404CA41218DCFC68D\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F9A4E435F8A234BBD34DD34C838182A5C\",\"text\" : \"{(0,2,1))\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 10,\"title\" : \"85\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FC5452D576AF74C9EF4FB46A59E28D428\" : {\"callbacks\" : {\"F550DCE4E3D6F49DF3CAB08FAB4D5D25B\" : {\"func\" : \"unknown\",\"id\" : \"F550DCE4E3D6F49DF3CAB08FAB4D5D25B\",\"knownArgs\" : [\"0\"],\"requiredArgs\" : {},\"trigger\" : \"click\"}},\"color\" : \"\",\"id\" : \"FC5452D576AF74C9EF4FB46A59E28D428\",\"layer\" : 0,\"menus\" : {},\"messages\" : {\"FCBE476E116664FC274E1019A4AFC3590\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"F807B9742C5CC4FC40CAF33D4A0501971\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FCBE476E116664FC274E1019A4AFC3590\",\"text\" : \"{(0,0,0))\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 10,\"title\" : \"0\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FE3F02797F57E4022DCE98F0FCF04CBA8\" : {\"callbacks\" : {\"F8C1F96C773474A8154A4C46BB113E35E\" : {\"func\" : \"unknown\",\"id\" : \"F8C1F96C773474A8154A4C46BB113E35E\",\"knownArgs\" : [\"27\"],\"requiredArgs\" : {},\"trigger\" : \"click\"}},\"color\" : \"\",\"id\" : \"FE3F02797F57E4022DCE98F0FCF04CBA8\",\"layer\" : -1,\"menus\" : {},\"messages\" : {\"F98C36F7AB1D945CC9C7DE79A8C6E8CC7\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"F70650600519E474F5465932AD7970059\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F98C36F7AB1D945CC9C7DE79A8C6E8CC7\",\"text\" : \"{(0,1,0))\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 10,\"title\" : \"27\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FEF76FDF6550246224C26BEBD124862CC\" : {\"callbacks\" : {\"FB9F3D102AF6942D1348022740EF8E8ED\" : {\"func\" : \"unknown\",\"id\" : \"FB9F3D102AF6942D1348022740EF8E8ED\",\"knownArgs\" : [\"93\"],\"requiredArgs\" : {},\"trigger\" : \"click\"}},\"color\" : \"\",\"id\" : \"FEF76FDF6550246224C26BEBD124862CC\",\"layer\" : -3,\"menus\" : {},\"messages\" : {\"F2ED844CBF82047CA8C0E59ECD1D25F6A\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"F793F564DFC7C41AD0C70B2CB648370C1\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F2ED844CBF82047CA8C0E59ECD1D25F6A\",\"text\" : \"{(0,0,3))\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 10,\"title\" : \"93\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0}},\"simulation\" : true,\"type\" : \"undirected\"},\"height\" : 600,\"id\" : \"FC3F97C37978E48F7ACDF22F2D8EEEAC7\",\"menus\" : {},\"messages\" : {},\"texTypesetting\" : true,\"title\" : \"Apery\",\"width\" : 800,\"zoomToFit\" : true},\"mime\" : \"application\\/vnd.francy+json\",\"version\" : \"1.2.4\"}"
     },
     "execution_count": 4,
     "metadata": {
      "application/vnd.francy+json": {}
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "apery(NumericalSemigroup(10,51,27,31));"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Drawing sons of numerical semigroups"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This example shows how to draw the sons of a numerical semigroup in the tree of numerical semigroups. If we click on a node, then the sets of sons of that node are added to the canvas, and if the node is a leaf, a warning message is displayed.\n",
    "\n",
    "Passing the mouse over a node shows the set of minimal generators of the node."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "function( s ) ... end"
      ]
     },
     "execution_count": 5,
     "metadata": {
      "text/plain": ""
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sons:=function(s)\n",
    "    local gens, frb, desc, graphHasse, d, shpr, shp, canvas, sonsf, i, gn, lbl;\n",
    "    \n",
    "    \n",
    "    sonsf:=function(s,n)\n",
    "        local gens, frb, desc, d, shp, i, lbl, gn;\n",
    "\n",
    "        frb:=FrobeniusNumber(s);\n",
    "        gens:=Filtered(MinimalGenerators(s), x-> x>frb);\n",
    "        desc:=List(gens, g->RemoveMinimalGeneratorFromNumericalSemigroup(g,s));\n",
    "        gn:=Genus(s);\n",
    "        i:=0;\n",
    "        for d in desc do\n",
    "            i:=i+1;\n",
    "        lbl:=Concatenation(\"$\\\\langle\",JoinStringsWithSeparator(MinimalGenerators(d),\",\"),\"\\\\rangle$\");\n",
    "            shp:=Shape(ShapeType!.CIRCLE, lbl);\n",
    "            SetFrancyId(shp,lbl);\n",
    "            SetLayer(shp,Genus(d));\n",
    "            SetSize(shp,1);\n",
    "            Add(shp,Callback(sonsf,[d,shp]));\n",
    "            Add(shp,FrancyMessage(String(MinimalGenerators(d))));\n",
    "            Add(graphHasse,shp);\n",
    "            Add(graphHasse,Link(n,shp));\n",
    "        od;\n",
    "        if desc<>[] then \n",
    "            return Draw(canvas);\n",
    "        fi;\n",
    "        Add(canvas, FrancyMessage(FrancyMessageType.WARNING, \"This semigroup is a leaf\"));\n",
    "        return Draw(canvas);\n",
    "    end;\n",
    "    \n",
    "    frb:=FrobeniusNumber(s);\n",
    "    gens:=Filtered(MinimalGenerators(s), x-> x>frb);\n",
    "    desc:=List(gens, g->RemoveMinimalGeneratorFromNumericalSemigroup(g,s));\n",
    "    gn:=Genus(s);\n",
    "\n",
    "    graphHasse := Graph(GraphType.UNDIRECTED);\n",
    "    lbl:=Concatenation(\"$\\\\langle\",JoinStringsWithSeparator(MinimalGenerators(s),\",\"),\"\\\\rangle$\");\n",
    "    shpr:=Shape(ShapeType!.CIRCLE, lbl);\n",
    "    SetSize(shpr,1);\n",
    "    SetFrancyId(shpr,lbl);\n",
    "    Add(shpr,FrancyMessage(String(MinimalGenerators(s))));\n",
    "    SetLayer(shpr,Genus(s));\n",
    "    Add(graphHasse,shpr);\n",
    "    i:=0;\n",
    "    for d in desc do\n",
    "        i:=i+1;\n",
    "        lbl:=Concatenation(\"$\\\\langle\",JoinStringsWithSeparator(MinimalGenerators(d),\",\"),\"\\\\rangle$\");\n",
    "        shp:=Shape(ShapeType!.CIRCLE, lbl);\n",
    "        SetFrancyId(shp,lbl);\n",
    "        SetLayer(shp,Genus(d));\n",
    "        SetSize(shp,1);\n",
    "        Add(shp,Callback(sonsf,[d,shp]));\n",
    "        Add(shp,FrancyMessage(String(MinimalGenerators(d))));\n",
    "        Add(graphHasse,shp);\n",
    "        Add(graphHasse,Link(shpr,shp));\n",
    "    od;\n",
    "    canvas:=Canvas(\"Sons of a numerical semigroup\");\n",
    "    SetTexTypesetting(canvas, true);\n",
    "    Add(canvas,graphHasse);\n",
    "    return Draw(canvas);    \n",
    "end;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.francy+json": "{\"canvas\" : {\"graph\" : {\"collapsed\" : true,\"id\" : \"F858A0120C4444F10ECA4C280DCA35730\",\"links\" : {\"F4358CADED853411B94A33DAB4A036C8D\" : {\"color\" : \"\",\"id\" : \"F4358CADED853411B94A33DAB4A036C8D\",\"invisible\" : false,\"length\" : 0,\"source\" : \"$\\\\langle3,5,7\\\\rangle$\",\"target\" : \"$\\\\langle3,7,8\\\\rangle$\",\"weight\" : 0},\"FC17233E967514F6CE4F0F353D6A14C85\" : {\"color\" : \"\",\"id\" : \"FC17233E967514F6CE4F0F353D6A14C85\",\"invisible\" : false,\"length\" : 0,\"source\" : \"$\\\\langle3,5,7\\\\rangle$\",\"target\" : \"$\\\\langle3,5\\\\rangle$\",\"weight\" : 0}},\"nodes\" : {\"$\\\\langle3,5,7\\\\rangle$\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"$\\\\langle3,5,7\\\\rangle$\",\"layer\" : 3,\"menus\" : {},\"messages\" : {\"F0B1E608E0B7844971C520DBC7A9E74A1\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"F4D178A036EF742C2BC6C055D9B907FB9\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F0B1E608E0B7844971C520DBC7A9E74A1\",\"text\" : \"[ 3, 5, 7 ]\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 1,\"title\" : \"$\\\\langle3,5,7\\\\rangle$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"$\\\\langle3,5\\\\rangle$\" : {\"callbacks\" : {\"F330476CCC97F40C484795D0F126D75CE\" : {\"func\" : \"unknown\",\"id\" : \"F330476CCC97F40C484795D0F126D75CE\",\"knownArgs\" : [\"Numerical semigroup with 2 generators\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"}},\"color\" : \"\",\"id\" : \"$\\\\langle3,5\\\\rangle$\",\"layer\" : 4,\"menus\" : {},\"messages\" : {\"FCD8CD831DB1B4C93CC1771842D80FD45\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"FE29E81CAF5734142D4115FBBCB27CD5C\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FCD8CD831DB1B4C93CC1771842D80FD45\",\"text\" : \"[ 3, 5 ]\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 1,\"title\" : \"$\\\\langle3,5\\\\rangle$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"$\\\\langle3,7,8\\\\rangle$\" : {\"callbacks\" : {\"FAE9D1BE0EA16438874B27FE539D34269\" : {\"func\" : \"unknown\",\"id\" : \"FAE9D1BE0EA16438874B27FE539D34269\",\"knownArgs\" : [\"Numerical semigroup with 3 generators\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"}},\"color\" : \"\",\"id\" : \"$\\\\langle3,7,8\\\\rangle$\",\"layer\" : 4,\"menus\" : {},\"messages\" : {\"F137DB56349C44C86349415D8DBC577B4\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"F972A7D3A2BD2428E84513487EA9965A8\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F137DB56349C44C86349415D8DBC577B4\",\"text\" : \"[ 3, 7, 8 ]\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 1,\"title\" : \"$\\\\langle3,7,8\\\\rangle$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0}},\"simulation\" : true,\"type\" : \"undirected\"},\"height\" : 600,\"id\" : \"FB64AF9C0DF8844D5549A677F3E73A8E0\",\"menus\" : {},\"messages\" : {},\"texTypesetting\" : true,\"title\" : \"Sons of a numerical semigroup\",\"width\" : 800,\"zoomToFit\" : true},\"mime\" : \"application\\/vnd.francy+json\",\"version\" : \"1.2.4\"}"
     },
     "execution_count": 6,
     "metadata": {
      "application/vnd.francy+json": {}
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sons(NumericalSemigroup(3,5,7));"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Tree of numerical semigroups\n",
    "\n",
    "Now we draw the sons of a numerical semigroup `s` in the tree of numerical semigroups up to level `l`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "function( s, l, generators ) ... end"
      ]
     },
     "execution_count": 7,
     "metadata": {
      "text/plain": ""
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sonstree:=function(s,l,generators)\n",
    "    local gens, frb, desc, graphTreee, d, shpr, shp, canvas, sonsf, lbl;\n",
    "\n",
    "\n",
    "    sonsf:=function(s,n,lv)\n",
    "        local gens, frb, desc, d, shp;\n",
    "        if lv=0 then\n",
    "            return ;\n",
    "        fi;\n",
    "        frb:=FrobeniusNumber(s);\n",
    "        gens:=Filtered(generators(s), x-> x>frb);\n",
    "        desc:=List(gens, g->RemoveMinimalGeneratorFromNumericalSemigroup(g,s));\n",
    "        for d in desc do\n",
    "            lbl:=Concatenation(\"$\\\\{\",JoinStringsWithSeparator(generators(d),\",\"),\"\\\\}$\");\n",
    "            shp:=Shape(ShapeType!.CIRCLE, lbl);\n",
    "            SetSize(shp,5);\n",
    "            Add(graphTreee,shp);\n",
    "            SetParentShape(shp,n);\n",
    "            sonsf(d,shp,lv-1);\n",
    "        od;\n",
    "        if desc<>[] then\n",
    "            return ;\n",
    "        fi;\n",
    "        #Add(canvas, FrancyMessage(FrancyMessageType.WARNING, \"This semigroup is a leaf\"));\n",
    "        return ;\n",
    "    end;\n",
    "\n",
    "    frb:=FrobeniusNumber(s);\n",
    "    gens:=Filtered(generators(s), x-> x>frb);\n",
    "    desc:=List(gens, g->RemoveMinimalGeneratorFromNumericalSemigroup(g,s));\n",
    "\n",
    "    graphTreee := Graph(GraphType.TREE);\n",
    "    SetCollapsed(graphTreee,false);\n",
    "    shpr:=Shape(ShapeType!.CIRCLE, \"S\");\n",
    "    SetSize(shpr,5);\n",
    "    Add(shpr,FrancyMessage(String(generators(s))));\n",
    "    Add(graphTreee,shpr);\n",
    "    canvas:=Canvas(\"Sons of a numerical semigroup\");\n",
    "    SetTexTypesetting(canvas, true);\n",
    "    Add(canvas,graphTreee);\n",
    "    sonsf(s,shpr,l);\n",
    "    return Draw(canvas);\n",
    "end;"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Darker dots correspond either to leaves or to elements with highest genus. Blue nodes can be collapsed by clicking.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.francy+json": "{\"canvas\" : {\"graph\" : {\"collapsed\" : false,\"id\" : \"FA04511C0F9864CD49421236EAD4681D7\",\"links\" : {},\"nodes\" : {\"F04B841BB95E84A5014DCF7B2A0251FC3\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F04B841BB95E84A5014DCF7B2A0251FC3\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FB2EF5C7DE1814CEC9CE0BD93A05AE5A9\",\"size\" : 5,\"title\" : \"$\\\\{2,9\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F0534FB53BDD644774C20549B32BA5956\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F0534FB53BDD644774C20549B32BA5956\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F6BF6D40B218C4097549934EF617AE244\",\"size\" : 5,\"title\" : \"$\\\\{4,5,6,7\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F16B6D4BBBDE549606C32412BD5FCAAC8\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F16B6D4BBBDE549606C32412BD5FCAAC8\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FE06BCD46747840705407AA26AB9BA35A\",\"size\" : 5,\"title\" : \"$\\\\{2,3\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F24860B81D2DE491BE4F5F9B4D4A07C7F\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F24860B81D2DE491BE4F5F9B4D4A07C7F\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F6BF6D40B218C4097549934EF617AE244\",\"size\" : 5,\"title\" : \"$\\\\{3,5,7\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F6BF6D40B218C4097549934EF617AE244\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F6BF6D40B218C4097549934EF617AE244\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F16B6D4BBBDE549606C32412BD5FCAAC8\",\"size\" : 5,\"title\" : \"$\\\\{3,4,5\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FA79F838DC78B4AEBF4D14426FF5AF0F4\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FA79F838DC78B4AEBF4D14426FF5AF0F4\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F0534FB53BDD644774C20549B32BA5956\",\"size\" : 5,\"title\" : \"$\\\\{5,6,7,8,9\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FB2EF5C7DE1814CEC9CE0BD93A05AE5A9\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FB2EF5C7DE1814CEC9CE0BD93A05AE5A9\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FC3BF146966EC4D04DCF185F67B457960\",\"size\" : 5,\"title\" : \"$\\\\{2,7\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FB4A5CE0FD8C84773440706490F3EEAA6\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FB4A5CE0FD8C84773440706490F3EEAA6\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F24860B81D2DE491BE4F5F9B4D4A07C7F\",\"size\" : 5,\"title\" : \"$\\\\{3,7,8\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FB6420EDE3EBF43D84C022594ED685445\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FB6420EDE3EBF43D84C022594ED685445\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F6BF6D40B218C4097549934EF617AE244\",\"size\" : 5,\"title\" : \"$\\\\{3,4\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FC3BF146966EC4D04DCF185F67B457960\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FC3BF146966EC4D04DCF185F67B457960\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F16B6D4BBBDE549606C32412BD5FCAAC8\",\"size\" : 5,\"title\" : \"$\\\\{2,5\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FC7D8DD2542844CD584F39D6A21CEE2C7\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FC7D8DD2542844CD584F39D6A21CEE2C7\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F0534FB53BDD644774C20549B32BA5956\",\"size\" : 5,\"title\" : \"$\\\\{4,5,7\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FCF8B9FDB01264AD5446BBEFB8133E0D1\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FCF8B9FDB01264AD5446BBEFB8133E0D1\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F0534FB53BDD644774C20549B32BA5956\",\"size\" : 5,\"title\" : \"$\\\\{4,5,6\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FE06BCD46747840705407AA26AB9BA35A\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FE06BCD46747840705407AA26AB9BA35A\",\"layer\" : 0,\"menus\" : {},\"messages\" : {\"FE051511DCE3D4A3A34FDD9BF5CDAD1E4\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"FF220FEE8575C43BDFC303D047B8FC287\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FE051511DCE3D4A3A34FDD9BF5CDAD1E4\",\"text\" : \"[ 1 ]\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 5,\"title\" : \"S\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FFE870E8FBCFD498C64744438F77AB719\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FFE870E8FBCFD498C64744438F77AB719\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F0534FB53BDD644774C20549B32BA5956\",\"size\" : 5,\"title\" : \"$\\\\{4,6,7,9\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FFF716FCA2C214DC1DC6C7127F700805A\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FFF716FCA2C214DC1DC6C7127F700805A\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F24860B81D2DE491BE4F5F9B4D4A07C7F\",\"size\" : 5,\"title\" : \"$\\\\{3,5\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0}},\"simulation\" : true,\"type\" : \"tree\"},\"height\" : 600,\"id\" : \"F4B6224E6E985455E6C182BA6BE9E14F8\",\"menus\" : {},\"messages\" : {},\"texTypesetting\" : true,\"title\" : \"Sons of a numerical semigroup\",\"width\" : 800,\"zoomToFit\" : true},\"mime\" : \"application\\/vnd.francy+json\",\"version\" : \"1.2.4\"}"
     },
     "execution_count": 8,
     "metadata": {
      "application/vnd.francy+json": {}
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sonstree(NumericalSemigroup(1),4,MinimalGenerators);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And we can get also the tree of Arf numerical semigroups"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.francy+json": "{\"canvas\" : {\"graph\" : {\"collapsed\" : false,\"id\" : \"FC9F8E4D6C2AC4E1BCC02AF98B1B13AF8\",\"links\" : {},\"nodes\" : {\"F08E51F92BCD04C7B2CF2E880A6BBD53A\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F08E51F92BCD04C7B2CF2E880A6BBD53A\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FE56D3640EBDB4A4C8C6140D8147B109B\",\"size\" : 5,\"title\" : \"$\\\\{3,11\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F14016DD34B6544FCC49D2056591EE05D\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F14016DD34B6544FCC49D2056591EE05D\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F98293EC29FB54AD84C22F9063B8C0533\",\"size\" : 5,\"title\" : \"$\\\\{2,7\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F1527ED48A5FA4803A4760D4A4ECD67A4\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F1527ED48A5FA4803A4760D4A4ECD67A4\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FEA332E0097E749D3243339D7D5184871\",\"size\" : 5,\"title\" : \"$\\\\{5,6\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F1624BA34B25A435C041AF6D48DC4B05A\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F1624BA34B25A435C041AF6D48DC4B05A\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F44A2C6E4244D44F27495B973576F964D\",\"size\" : 5,\"title\" : \"$\\\\{4,11\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F24D256E999DD4F10B4AA77CB43F8C970\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F24D256E999DD4F10B4AA77CB43F8C970\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F44A2C6E4244D44F27495B973576F964D\",\"size\" : 5,\"title\" : \"$\\\\{4,10,13\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F25646FAF2CD049E8BCF3C717AD009791\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F25646FAF2CD049E8BCF3C717AD009791\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F8A99C016EFFC4981F42448D9DBB9D09C\",\"size\" : 5,\"title\" : \"$\\\\{5,11\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F2BCA389AE5E74B703C862241C033D761\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F2BCA389AE5E74B703C862241C033D761\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F8987EB361DA64586C40E112150E13098\",\"size\" : 5,\"title\" : \"$\\\\{6,9,11\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F2E04D2A449AB404484BE1DB2766E0E0A\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F2E04D2A449AB404484BE1DB2766E0E0A\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F40168CEA92334FC0148D276E79DE5B4B\",\"size\" : 5,\"title\" : \"$\\\\{7,8\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F337FAD46A9324E8E2C35D39A0F55328C\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F337FAD46A9324E8E2C35D39A0F55328C\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FF151E849EF1240EC1C406B98F589C16A\",\"size\" : 5,\"title\" : \"$\\\\{4,6,9\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F385580564AD04AE4B45C1A31853FFE70\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F385580564AD04AE4B45C1A31853FFE70\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FD3D02DA23FB04835D4982E75DD752FAB\",\"size\" : 5,\"title\" : \"$\\\\{5,7\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F40168CEA92334FC0148D276E79DE5B4B\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F40168CEA92334FC0148D276E79DE5B4B\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F1527ED48A5FA4803A4760D4A4ECD67A4\",\"size\" : 5,\"title\" : \"$\\\\{6,7\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F44A2C6E4244D44F27495B973576F964D\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F44A2C6E4244D44F27495B973576F964D\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F9D274B33209A43CDD496AC84A6DDABFB\",\"size\" : 5,\"title\" : \"$\\\\{4,10,11\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F483C58C84F764BA7ACE75701FDD9E22C\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F483C58C84F764BA7ACE75701FDD9E22C\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F40168CEA92334FC0148D276E79DE5B4B\",\"size\" : 5,\"title\" : \"$\\\\{6,8,9\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F49D53BC4B6634228A41F18F08AD2B33B\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F49D53BC4B6634228A41F18F08AD2B33B\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FD3D02DA23FB04835D4982E75DD752FAB\",\"size\" : 5,\"title\" : \"$\\\\{5,8,9\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F50C7CE8D8D244FD22CC449CAB3AD0367\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F50C7CE8D8D244FD22CC449CAB3AD0367\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F8711BDBBA2A64A6534C462C55F3154AC\",\"size\" : 5,\"title\" : \"$\\\\{2,11\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F5627D2FD82124EB47460035A3D50A74A\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F5627D2FD82124EB47460035A3D50A74A\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FFD0D1F5EC6A9444CDC6B143E7E342BF3\",\"size\" : 5,\"title\" : \"$\\\\{2,17\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F562A6F4EEB684370C4573A32DB918402\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F562A6F4EEB684370C4573A32DB918402\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F73BA8F0160C048B6EC43BD311F163595\",\"size\" : 5,\"title\" : \"$\\\\{9,10\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F5934678072AB4FE24C1E02260B3AEC51\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F5934678072AB4FE24C1E02260B3AEC51\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F6E830FE3BA81486EBC7520C337511CD6\",\"size\" : 5,\"title\" : \"$\\\\{7,10,11\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F5B0F5DB65B16433ABCEF66241E15AE7D\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F5B0F5DB65B16433ABCEF66241E15AE7D\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FF151E849EF1240EC1C406B98F589C16A\",\"size\" : 5,\"title\" : \"$\\\\{4,7\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F5EFEB101EAFA4AD5BC6729B00FB31224\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F5EFEB101EAFA4AD5BC6729B00FB31224\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FB044BBE020E04383F4C5C95C677AC07D\",\"size\" : 5,\"title\" : \"$\\\\{3,4\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F657BF0E427734E064C54185308D62173\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F657BF0E427734E064C54185308D62173\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F49D53BC4B6634228A41F18F08AD2B33B\",\"size\" : 5,\"title\" : \"$\\\\{5,8\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F6B0D2D96936A4F02940D4BE2F53D08CF\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F6B0D2D96936A4F02940D4BE2F53D08CF\",\"layer\" : 0,\"menus\" : {},\"messages\" : {\"FEAA418A30A99453F84DD6D8EDCA03B7D\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"FCB30C5C48EDD45D744A771BD4CA25AD1\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FEAA418A30A99453F84DD6D8EDCA03B7D\",\"text\" : \"[ 1 ]\",\"title\" : \"\",\"type\" : \"default\"}},\"parent\" : \"\",\"size\" : 5,\"title\" : \"S\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F6E830FE3BA81486EBC7520C337511CD6\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F6E830FE3BA81486EBC7520C337511CD6\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F2E04D2A449AB404484BE1DB2766E0E0A\",\"size\" : 5,\"title\" : \"$\\\\{7,9,10\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F73BA8F0160C048B6EC43BD311F163595\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F73BA8F0160C048B6EC43BD311F163595\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F2E04D2A449AB404484BE1DB2766E0E0A\",\"size\" : 5,\"title\" : \"$\\\\{8,9\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F8711BDBBA2A64A6534C462C55F3154AC\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F8711BDBBA2A64A6534C462C55F3154AC\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F14016DD34B6544FCC49D2056591EE05D\",\"size\" : 5,\"title\" : \"$\\\\{2,9\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F8987EB361DA64586C40E112150E13098\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F8987EB361DA64586C40E112150E13098\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F483C58C84F764BA7ACE75701FDD9E22C\",\"size\" : 5,\"title\" : \"$\\\\{6,9,10\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F8A99C016EFFC4981F42448D9DBB9D09C\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F8A99C016EFFC4981F42448D9DBB9D09C\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F49D53BC4B6634228A41F18F08AD2B33B\",\"size\" : 5,\"title\" : \"$\\\\{5,9\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F936E20B004D54A3D0C08E853E35C38A4\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F936E20B004D54A3D0C08E853E35C38A4\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F73BA8F0160C048B6EC43BD311F163595\",\"size\" : 5,\"title\" : \"$\\\\{8,10,11\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F98293EC29FB54AD84C22F9063B8C0533\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F98293EC29FB54AD84C22F9063B8C0533\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FB044BBE020E04383F4C5C95C677AC07D\",\"size\" : 5,\"title\" : \"$\\\\{2,5\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F9D274B33209A43CDD496AC84A6DDABFB\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F9D274B33209A43CDD496AC84A6DDABFB\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F5B0F5DB65B16433ABCEF66241E15AE7D\",\"size\" : 5,\"title\" : \"$\\\\{4,9\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FA4DEA8F633A6450E94691B5A644BBAB8\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FA4DEA8F633A6450E94691B5A644BBAB8\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FB3F7928D27E44FE40C90D88D468CC481\",\"size\" : 5,\"title\" : \"$\\\\{3,7\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FA927E80CEE7A424B2422AFBA0F2555D8\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FA927E80CEE7A424B2422AFBA0F2555D8\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F8987EB361DA64586C40E112150E13098\",\"size\" : 5,\"title\" : \"$\\\\{6,10,11\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FB044BBE020E04383F4C5C95C677AC07D\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FB044BBE020E04383F4C5C95C677AC07D\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F6B0D2D96936A4F02940D4BE2F53D08CF\",\"size\" : 5,\"title\" : \"$\\\\{2,3\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FB3F7928D27E44FE40C90D88D468CC481\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FB3F7928D27E44FE40C90D88D468CC481\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F5EFEB101EAFA4AD5BC6729B00FB31224\",\"size\" : 5,\"title\" : \"$\\\\{3,5\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FB4034B434D55478FDCB0F67DDDF27F68\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FB4034B434D55478FDCB0F67DDDF27F68\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F483C58C84F764BA7ACE75701FDD9E22C\",\"size\" : 5,\"title\" : \"$\\\\{6,8,11\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FB479E00AD857461C3492CD2E9AC17C3B\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FB479E00AD857461C3492CD2E9AC17C3B\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FB4034B434D55478FDCB0F67DDDF27F68\",\"size\" : 5,\"title\" : \"$\\\\{6,8,13\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FB9BE3EF1E8D64F674C931CF738FD9F96\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FB9BE3EF1E8D64F674C931CF738FD9F96\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FA4DEA8F633A6450E94691B5A644BBAB8\",\"size\" : 5,\"title\" : \"$\\\\{3,8\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FC6F50468BB554826CCBAA39771237E2F\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FC6F50468BB554826CCBAA39771237E2F\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F08E51F92BCD04C7B2CF2E880A6BBD53A\",\"size\" : 5,\"title\" : \"$\\\\{3,13\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FCA0B0AA62F1B4E291C81B89B4C8E2DD5\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FCA0B0AA62F1B4E291C81B89B4C8E2DD5\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F337FAD46A9324E8E2C35D39A0F55328C\",\"size\" : 5,\"title\" : \"$\\\\{4,6,11\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FD10B11D52F2C40C5540A152191D7F32D\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FD10B11D52F2C40C5540A152191D7F32D\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F50C7CE8D8D244FD22CC449CAB3AD0367\",\"size\" : 5,\"title\" : \"$\\\\{2,13\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FD3D02DA23FB04835D4982E75DD752FAB\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FD3D02DA23FB04835D4982E75DD752FAB\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F1527ED48A5FA4803A4760D4A4ECD67A4\",\"size\" : 5,\"title\" : \"$\\\\{5,7,8\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FE56D3640EBDB4A4C8C6140D8147B109B\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FE56D3640EBDB4A4C8C6140D8147B109B\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FB9BE3EF1E8D64F674C931CF738FD9F96\",\"size\" : 5,\"title\" : \"$\\\\{3,10\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FE8CE86EAA1EB4A063481C01F4687D755\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FE8CE86EAA1EB4A063481C01F4687D755\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F6E830FE3BA81486EBC7520C337511CD6\",\"size\" : 5,\"title\" : \"$\\\\{7,9,12\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FEA332E0097E749D3243339D7D5184871\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FEA332E0097E749D3243339D7D5184871\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"F5EFEB101EAFA4AD5BC6729B00FB31224\",\"size\" : 5,\"title\" : \"$\\\\{4,5\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FEB46B2AD34B342CD4C95AAA1C78530F6\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FEB46B2AD34B342CD4C95AAA1C78530F6\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FCA0B0AA62F1B4E291C81B89B4C8E2DD5\",\"size\" : 5,\"title\" : \"$\\\\{4,6,13\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FF151E849EF1240EC1C406B98F589C16A\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FF151E849EF1240EC1C406B98F589C16A\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FEA332E0097E749D3243339D7D5184871\",\"size\" : 5,\"title\" : \"$\\\\{4,6,7\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FFD0D1F5EC6A9444CDC6B143E7E342BF3\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FFD0D1F5EC6A9444CDC6B143E7E342BF3\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FD10B11D52F2C40C5540A152191D7F32D\",\"size\" : 5,\"title\" : \"$\\\\{2,15\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FFEFB98E3BCCB418BA458ECBB0CCA925C\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FFEFB98E3BCCB418BA458ECBB0CCA925C\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"FEB46B2AD34B342CD4C95AAA1C78530F6\",\"size\" : 5,\"title\" : \"$\\\\{4,6,15\\\\}$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0}},\"simulation\" : true,\"type\" : \"tree\"},\"height\" : 600,\"id\" : \"FCDAA11DED07240C1F4429FBD27CD81D3\",\"menus\" : {},\"messages\" : {},\"texTypesetting\" : true,\"title\" : \"Sons of a numerical semigroup\",\"width\" : 800,\"zoomToFit\" : true},\"mime\" : \"application\\/vnd.francy+json\",\"version\" : \"1.2.4\"}"
     },
     "execution_count": 9,
     "metadata": {
      "application/vnd.francy+json": {}
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sonstree(NumericalSemigroup(1),8,ArfCharactersOfArfNumericalSemigroup);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Oversemigroups"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "function( s ) ... end"
      ]
     },
     "execution_count": 10,
     "metadata": {
      "text/plain": ""
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "oversemigroups:=function(s)\n",
    "    local ov, graphHasse, canvas,c,i,r,ovs,n,hasse,lbl;\n",
    "    \n",
    "    hasse:=function(rel)\n",
    "      local dom, out;\n",
    "      dom:=Flat(rel);\n",
    "      out:=Filtered(rel, p-> ForAny(dom, x->([p[1],x] in rel) and ([x,p[2]] in rel)));\n",
    "      return Difference(rel,out);\n",
    "    end;\n",
    "\n",
    "    ov:=OverSemigroupsNumericalSemigroup(s);\n",
    "    n:=Length(ov);\n",
    "    graphHasse := Graph(GraphType.UNDIRECTED);\n",
    "    #SetSimulation(graphHasse,true);\n",
    "    #SetDrag(graphHasse,true);\n",
    "    c:=Cartesian([1..n],[1..n]);\n",
    "    c:=Filtered(c, p-> p[2]<>p[1]);\n",
    "    c:=Filtered(c, p-> IsSubset(ov[p[1]],ov[p[2]]));\n",
    "    c:=hasse(c);\n",
    "    ovs:=[];\n",
    "    for i in [1..n] do\n",
    "    lbl:=Concatenation(\"$\\\\langle\",JoinStringsWithSeparator(MinimalGenerators(ov[i]),\",\"),\"\\\\rangle$\");\n",
    "\n",
    "\n",
    "        if IsIrreducible(ov[i]) then\n",
    "            ovs[i]:=Shape(ShapeType!.DIAMOND, lbl);\n",
    "        else\n",
    "            ovs[i]:=Shape(ShapeType!.CIRCLE, lbl);\n",
    "        fi;\n",
    "        SetLayer(ovs[i],Genus(ov[i]));\n",
    "    SetSize(ovs[i],2);\n",
    "    Add(graphHasse,ovs[i]);\n",
    "    od;\n",
    "    for r in c do\n",
    "        Add(graphHasse,Link(ovs[r[1]],ovs[r[2]]));\n",
    "    od;\n",
    "    canvas:=Canvas(\"Oversemigroups\");\n",
    "    SetTexTypesetting(canvas, true);\n",
    "    Add(canvas,graphHasse);\n",
    "    return Draw(canvas);    \n",
    "end;"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A Hasse diagram of the set of oversemigroups of the given numerical semigroup is displayed. Irreducible numerical semigroups are drawn as diamonds. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.francy+json": "{\"canvas\" : {\"graph\" : {\"collapsed\" : true,\"id\" : \"F092BF8CFE6824312D46B18D5283C070D\",\"links\" : {\"F09036891D814499EA414CFB2421DBA63\" : {\"color\" : \"\",\"id\" : \"F09036891D814499EA414CFB2421DBA63\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F433D8A4FD6F044B07CC2C74F3C275EC7\",\"target\" : \"FA4BC1F0013494DD69C1F36E220BBC114\",\"weight\" : 0},\"F0F07C3E7BDFA4B877CB27500E79954DE\" : {\"color\" : \"\",\"id\" : \"F0F07C3E7BDFA4B877CB27500E79954DE\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F8CE604E7A9044A81F434B04E7E1C542B\",\"target\" : \"F85FA145E6A4B4EDDF43A535EC30AA26D\",\"weight\" : 0},\"F110EEE288C46455E8C12F219D25B06CE\" : {\"color\" : \"\",\"id\" : \"F110EEE288C46455E8C12F219D25B06CE\",\"invisible\" : false,\"length\" : 0,\"source\" : \"FE6711A37ACF8440AFC430BF113A62DE0\",\"target\" : \"F26D7C394901D4A243C96D3A27A0D9E50\",\"weight\" : 0},\"F1BD6BA43AAE24670144789025A42D717\" : {\"color\" : \"\",\"id\" : \"F1BD6BA43AAE24670144789025A42D717\",\"invisible\" : false,\"length\" : 0,\"source\" : \"FA4BC1F0013494DD69C1F36E220BBC114\",\"target\" : \"F4F0CFFE8ECB5433DDC5560333AB4F53F\",\"weight\" : 0},\"F1CC7A9ABDC0B4039DC1D84A933872F1C\" : {\"color\" : \"\",\"id\" : \"F1CC7A9ABDC0B4039DC1D84A933872F1C\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F7FEF6E3A4BF640AADC2BCE7615F0C215\",\"target\" : \"FCF2B8E13B6134293640008C52AB94F6A\",\"weight\" : 0},\"F2B93321C581A4FB7046137C8DFA125E3\" : {\"color\" : \"\",\"id\" : \"F2B93321C581A4FB7046137C8DFA125E3\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F26D7C394901D4A243C96D3A27A0D9E50\",\"target\" : \"FB08E8CB8A4224EC52428D6D7E487552B\",\"weight\" : 0},\"F2EA1F6E1DFCF4258E474E99521572819\" : {\"color\" : \"\",\"id\" : \"F2EA1F6E1DFCF4258E474E99521572819\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F7B6536AF98C1453E14E1E4751312BA5F\",\"target\" : \"F4F0CFFE8ECB5433DDC5560333AB4F53F\",\"weight\" : 0},\"F33D166091CB647C4CC2BD52D64938CFE\" : {\"color\" : \"\",\"id\" : \"F33D166091CB647C4CC2BD52D64938CFE\",\"invisible\" : false,\"length\" : 0,\"source\" : \"FCF2B8E13B6134293640008C52AB94F6A\",\"target\" : \"FAD51BB353C9B4081A4F63CAE5523108D\",\"weight\" : 0},\"F3E47FFF9271A4319D48F83F6FB58A54E\" : {\"color\" : \"\",\"id\" : \"F3E47FFF9271A4319D48F83F6FB58A54E\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F26D7C394901D4A243C96D3A27A0D9E50\",\"target\" : \"FAD51BB353C9B4081A4F63CAE5523108D\",\"weight\" : 0},\"F3EB974EF77F440E00437069CE9D32AB6\" : {\"color\" : \"\",\"id\" : \"F3EB974EF77F440E00437069CE9D32AB6\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F156883B221B04A6084C09DF2261B0F7B\",\"target\" : \"F7FEF6E3A4BF640AADC2BCE7615F0C215\",\"weight\" : 0},\"F4A2BA0AF7CC2464894BA54A7A1D65CAB\" : {\"color\" : \"\",\"id\" : \"F4A2BA0AF7CC2464894BA54A7A1D65CAB\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F8CE604E7A9044A81F434B04E7E1C542B\",\"target\" : \"FB08E8CB8A4224EC52428D6D7E487552B\",\"weight\" : 0},\"F51748C91491C48F054452C784CC1B07A\" : {\"color\" : \"\",\"id\" : \"F51748C91491C48F054452C784CC1B07A\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F8FA8529529F64F919C99C43F99FE3434\",\"target\" : \"FA4BC1F0013494DD69C1F36E220BBC114\",\"weight\" : 0},\"F5F9BDF43EB104E56DC517038F1CFEE06\" : {\"color\" : \"\",\"id\" : \"F5F9BDF43EB104E56DC517038F1CFEE06\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F2E1A3496EC9C4E631C8627312B982900\",\"target\" : \"FAD51BB353C9B4081A4F63CAE5523108D\",\"weight\" : 0},\"F7E5A6BE17F8A4EF0CCFAC644DB6C975E\" : {\"color\" : \"\",\"id\" : \"F7E5A6BE17F8A4EF0CCFAC644DB6C975E\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F2E1A3496EC9C4E631C8627312B982900\",\"target\" : \"F85FA145E6A4B4EDDF43A535EC30AA26D\",\"weight\" : 0},\"F81B9D918765C4CCD44F4935D77D27AAF\" : {\"color\" : \"\",\"id\" : \"F81B9D918765C4CCD44F4935D77D27AAF\",\"invisible\" : false,\"length\" : 0,\"source\" : \"FB08E8CB8A4224EC52428D6D7E487552B\",\"target\" : \"F70320DD9A523491D9CA455CD68E56446\",\"weight\" : 0},\"F8401EC6AD970422D9C2BB473F9B3BA1B\" : {\"color\" : \"\",\"id\" : \"F8401EC6AD970422D9C2BB473F9B3BA1B\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F249DB592AF524B84AC6F4C46812B710E\",\"target\" : \"F156883B221B04A6084C09DF2261B0F7B\",\"weight\" : 0},\"F853959B08BF04E740CA9F4A47A8FD928\" : {\"color\" : \"\",\"id\" : \"F853959B08BF04E740CA9F4A47A8FD928\",\"invisible\" : false,\"length\" : 0,\"source\" : \"FE6711A37ACF8440AFC430BF113A62DE0\",\"target\" : \"F2E1A3496EC9C4E631C8627312B982900\",\"weight\" : 0},\"F9842A2E3F33D40D7CC9E3C53BD09C113\" : {\"color\" : \"\",\"id\" : \"F9842A2E3F33D40D7CC9E3C53BD09C113\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F7FEF6E3A4BF640AADC2BCE7615F0C215\",\"target\" : \"F26D7C394901D4A243C96D3A27A0D9E50\",\"weight\" : 0},\"F9C3891C90FDE4D107C9BE8627F8CE82C\" : {\"color\" : \"\",\"id\" : \"F9C3891C90FDE4D107C9BE8627F8CE82C\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F70320DD9A523491D9CA455CD68E56446\",\"target\" : \"F7B6536AF98C1453E14E1E4751312BA5F\",\"weight\" : 0},\"FA15B5B4382A84A1794C60856939A771D\" : {\"color\" : \"\",\"id\" : \"FA15B5B4382A84A1794C60856939A771D\",\"invisible\" : false,\"length\" : 0,\"source\" : \"FB08E8CB8A4224EC52428D6D7E487552B\",\"target\" : \"F8FA8529529F64F919C99C43F99FE3434\",\"weight\" : 0},\"FAA3E793EDC274ED9FC0B38F7E88A0F14\" : {\"color\" : \"\",\"id\" : \"FAA3E793EDC274ED9FC0B38F7E88A0F14\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F70320DD9A523491D9CA455CD68E56446\",\"target\" : \"FA4BC1F0013494DD69C1F36E220BBC114\",\"weight\" : 0},\"FB1EB98958CE64386F434F2716C2822B0\" : {\"color\" : \"\",\"id\" : \"FB1EB98958CE64386F434F2716C2822B0\",\"invisible\" : false,\"length\" : 0,\"source\" : \"FAD51BB353C9B4081A4F63CAE5523108D\",\"target\" : \"F70320DD9A523491D9CA455CD68E56446\",\"weight\" : 0},\"FBB4C5D238A794B74CC82EF892374DF55\" : {\"color\" : \"\",\"id\" : \"FBB4C5D238A794B74CC82EF892374DF55\",\"invisible\" : false,\"length\" : 0,\"source\" : \"FE6711A37ACF8440AFC430BF113A62DE0\",\"target\" : \"F8CE604E7A9044A81F434B04E7E1C542B\",\"weight\" : 0},\"FC35704E57C074EA2ECC855F305559522\" : {\"color\" : \"\",\"id\" : \"FC35704E57C074EA2ECC855F305559522\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F85FA145E6A4B4EDDF43A535EC30AA26D\",\"target\" : \"F70320DD9A523491D9CA455CD68E56446\",\"weight\" : 0},\"FF6250A0A3A7F48496C8FA2DE914E959B\" : {\"color\" : \"\",\"id\" : \"FF6250A0A3A7F48496C8FA2DE914E959B\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F156883B221B04A6084C09DF2261B0F7B\",\"target\" : \"FE6711A37ACF8440AFC430BF113A62DE0\",\"weight\" : 0},\"FFC078C693EE940B5B4FD97153BB06EFF\" : {\"color\" : \"\",\"id\" : \"FFC078C693EE940B5B4FD97153BB06EFF\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F85FA145E6A4B4EDDF43A535EC30AA26D\",\"target\" : \"F433D8A4FD6F044B07CC2C74F3C275EC7\",\"weight\" : 0}},\"nodes\" : {\"F156883B221B04A6084C09DF2261B0F7B\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F156883B221B04A6084C09DF2261B0F7B\",\"layer\" : 1,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle2,3\\\\rangle$\",\"type\" : \"diamond\",\"x\" : 0,\"y\" : 0},\"F249DB592AF524B84AC6F4C46812B710E\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F249DB592AF524B84AC6F4C46812B710E\",\"layer\" : 0,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle1\\\\rangle$\",\"type\" : \"diamond\",\"x\" : 0,\"y\" : 0},\"F26D7C394901D4A243C96D3A27A0D9E50\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F26D7C394901D4A243C96D3A27A0D9E50\",\"layer\" : 3,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle4,5,6,7\\\\rangle$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F2E1A3496EC9C4E631C8627312B982900\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F2E1A3496EC9C4E631C8627312B982900\",\"layer\" : 3,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle3,4\\\\rangle$\",\"type\" : \"diamond\",\"x\" : 0,\"y\" : 0},\"F433D8A4FD6F044B07CC2C74F3C275EC7\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F433D8A4FD6F044B07CC2C74F3C275EC7\",\"layer\" : 5,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle3,7,11\\\\rangle$\",\"type\" : \"diamond\",\"x\" : 0,\"y\" : 0},\"F4F0CFFE8ECB5433DDC5560333AB4F53F\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F4F0CFFE8ECB5433DDC5560333AB4F53F\",\"layer\" : 7,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle6,7,9,11\\\\rangle$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F70320DD9A523491D9CA455CD68E56446\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F70320DD9A523491D9CA455CD68E56446\",\"layer\" : 5,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle6,7,8,9,10,11\\\\rangle$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F7B6536AF98C1453E14E1E4751312BA5F\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F7B6536AF98C1453E14E1E4751312BA5F\",\"layer\" : 6,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle6,7,8,9,11\\\\rangle$\",\"type\" : \"diamond\",\"x\" : 0,\"y\" : 0},\"F7FEF6E3A4BF640AADC2BCE7615F0C215\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F7FEF6E3A4BF640AADC2BCE7615F0C215\",\"layer\" : 2,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle2,5\\\\rangle$\",\"type\" : \"diamond\",\"x\" : 0,\"y\" : 0},\"F85FA145E6A4B4EDDF43A535EC30AA26D\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F85FA145E6A4B4EDDF43A535EC30AA26D\",\"layer\" : 4,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle3,7,8\\\\rangle$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"F8CE604E7A9044A81F434B04E7E1C542B\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F8CE604E7A9044A81F434B04E7E1C542B\",\"layer\" : 3,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle3,5,7\\\\rangle$\",\"type\" : \"diamond\",\"x\" : 0,\"y\" : 0},\"F8FA8529529F64F919C99C43F99FE3434\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F8FA8529529F64F919C99C43F99FE3434\",\"layer\" : 5,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle5,6,7,9\\\\rangle$\",\"type\" : \"diamond\",\"x\" : 0,\"y\" : 0},\"FA4BC1F0013494DD69C1F36E220BBC114\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FA4BC1F0013494DD69C1F36E220BBC114\",\"layer\" : 6,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle6,7,9,10,11\\\\rangle$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FAD51BB353C9B4081A4F63CAE5523108D\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FAD51BB353C9B4081A4F63CAE5523108D\",\"layer\" : 4,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle4,6,7,9\\\\rangle$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FB08E8CB8A4224EC52428D6D7E487552B\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FB08E8CB8A4224EC52428D6D7E487552B\",\"layer\" : 4,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle5,6,7,8,9\\\\rangle$\",\"type\" : \"circle\",\"x\" : 0,\"y\" : 0},\"FCF2B8E13B6134293640008C52AB94F6A\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FCF2B8E13B6134293640008C52AB94F6A\",\"layer\" : 3,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle2,7\\\\rangle$\",\"type\" : \"diamond\",\"x\" : 0,\"y\" : 0},\"FE6711A37ACF8440AFC430BF113A62DE0\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"FE6711A37ACF8440AFC430BF113A62DE0\",\"layer\" : 2,\"menus\" : {},\"messages\" : {},\"parent\" : \"\",\"size\" : 2,\"title\" : \"$\\\\langle3,4,5\\\\rangle$\",\"type\" : \"diamond\",\"x\" : 0,\"y\" : 0}},\"simulation\" : true,\"type\" : \"undirected\"},\"height\" : 600,\"id\" : \"F04F528BB391C43906CAF0B89B8555048\",\"menus\" : {},\"messages\" : {},\"texTypesetting\" : true,\"title\" : \"Oversemigroups\",\"width\" : 800,\"zoomToFit\" : true},\"mime\" : \"application\\/vnd.francy+json\",\"version\" : \"1.2.4\"}"
     },
     "execution_count": 11,
     "metadata": {
      "application/vnd.francy+json": {}
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "oversemigroups(NumericalSemigroup(6,7,9,11));"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Graphs associated to elements"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Eliahou graph of an element in a numerical semigroup is a graph whose vertices are the factorizations of the element, and to vertices are joined with an edge if they have common support."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "function( n, s ) ... end"
      ]
     },
     "execution_count": 12,
     "metadata": {
      "text/plain": ""
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "DrawEliahouGraph:=function(n,s)\n",
    "    local graph, canvas, f, fs, c, nf, i, p;\n",
    "    \n",
    "    f:=FactorizationsElementWRTNumericalSemigroup(n,s);\n",
    "    graph:=Graph(GraphType.UNDIRECTED);\n",
    "    #SetShowNeighbours(graph,true);\n",
    "    #SetSimulation(graph,true);\n",
    "    #SetDrag(graph,true);\n",
    "    nf:=Length(f);\n",
    "    fs:=[];\n",
    "    for i in [1..nf] do \n",
    "        fs[i]:=Shape(ShapeType!.CIRCLE, Concatenation(\"(\",JoinStringsWithSeparator(f[i],\",\"),\")\"));\n",
    "        SetLayer(fs[i],Sum(f[i]));\n",
    "        SetSize(fs[i],1);\n",
    "        Add(graph,fs[i]);\n",
    "    od;\n",
    "    c:=Cartesian([1..nf],[1..nf]);\n",
    "    c:=Filtered(c,p->p[1]<p[2] and f[p[1]]*f[p[2]]<>0);\n",
    "    for p in c do \n",
    "        Add(graph,Link(fs[p[1]],fs[p[2]]));\n",
    "    od;\n",
    "    canvas:=Canvas(\"Eliahou graph\");\n",
    "    Add(canvas,graph);\n",
    "    return Draw(canvas);\n",
    "end;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Numerical semigroup with 3 generators>"
      ]
     },
     "execution_count": 13,
     "metadata": {
      "text/plain": ""
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s:=NumericalSemigroup(5,7,9);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
--> --------------------

--> maximum size reached

--> --------------------

[ Dauer der Verarbeitung: 0.31 Sekunden  (vorverarbeitet)  ]