diff options
Diffstat (limited to 'chapter10/docs')
| -rw-r--r-- | chapter10/docs/lattice.gv | 210 | ||||
| -rw-r--r-- | chapter10/docs/lattice.svg | 1052 |
2 files changed, 676 insertions, 586 deletions
diff --git a/chapter10/docs/lattice.gv b/chapter10/docs/lattice.gv index c074f1a4..5ac1bd5a 100644 --- a/chapter10/docs/lattice.gv +++ b/chapter10/docs/lattice.gv @@ -1,56 +1,32 @@ digraph Lattice { + compound = true; // Define nodes splines=false; - node [shape=circle, style=filled, fillcolor=lightblue]; + node [shape=circle, style=filled]; nodesep=0.6; - TOP [label="⊤"]; - BOT [label="⊥"]; - - XCTRL [label="~Ctrl"]; - CTRL [label="Ctrl"]; - - INT_TOP [label="IntTop"]; - INT_BOT [label="IntBot"]; - - INT_MIN [label="-n"]; - INT_MINDOTS [label="..." shape=none style=none]; - INT_ZERO [label="0"]; - INT_MAXDOTS [label="..." shape=none style=none]; - INT_MAX [label="+n"]; - - TUPLE [label="TUPLE"]; - - STRUCT_TOP [label="$TOP"]; - STRUCT_S1 [label="S1"]; - STRUCT_DOTS [label="..." shape=none style=none]; - STRUCT_SN [label="Sn"]; - STRUCT_BOT [label="$BOT"] - - PTR_TOP [label="*$TOP"]; - PTR_NULL [label="null"]; - PTR_VOIDPTR [label="*void"]; - PTR_S1 [label="*S1"]; - PTR_SDOTS [label="..." shape=none style=none]; - PTR_SN [label="*SN"]; - PTR_S1OPT [label="*S1?"]; - PTR_SOPTDOTS [label="..." shape=none style=none]; - PTR_SNOPT [label="*SN?"]; - PTR_BOT [label="*$BOT?"]; - - MEM_TOP [label="MEM#TOP"]; - MEM_ALIAS1 [label="#1"]; - MEM_ALIAS2 [label="#2"]; - MEM_ALIASDOTS [label="..." shape=none style=none]; - MEM_ALIASN [label="#n"]; - MEM_BOT [label="MEM#BOT"]; - - // Define edges - edge [arrowhead=none]; - - TOP -> XCTRL; + TOP [label=<<B>⊤ </B>>, fillcolor=black, fontcolor=white]; + BOT [label=<<B>⊥</B>>, fillcolor=black, fontcolor=white]; + + // ---------------------- + // Control + XCTRL [label=<<B>⊤ </B>:ctrl>, fillcolor=yellow, shape=oval]; + CTRL [label=<<B>⊥</B>:ctrl>, fillcolor=yellow, shape=oval]; + + TOP -> XCTRL; XCTRL -> CTRL; - CTRL -> BOT; + CTRL -> BOT; + + // ---------------------- + // Integers + INT_TOP [label=<<B>⊤ </B>:int>, fillcolor=lightblue, shape=oval]; + INT_BOT [label=<<B>⊥</B>:int>, fillcolor=lightblue, shape=oval]; + + INT_MIN [label="-n" , fillcolor=lightblue]; + INT_MINDOTS [label="...", fillcolor=lightblue, shape=oval]; + INT_ZERO [label="0" , fillcolor=lightblue]; + INT_MAXDOTS [label="...", fillcolor=lightblue, shape=oval]; + INT_MAX [label="+n" , fillcolor=lightblue]; TOP -> INT_TOP; INT_TOP -> INT_MIN; @@ -67,69 +43,127 @@ digraph Lattice { INT_MIN -> INT_MINDOTS -> INT_ZERO -> INT_MAXDOTS -> INT_MAX [style=invis]; - TOP -> TUPLE; - TUPLE -> BOT; + // ---------------------- + // Pointers, just a boolean nil/not and a struct + PTR [shape=none, fillcolor=none, label=< + <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> + <TR><TD BGCOLOR="green"><FONT color="white">*ptr</FONT></TD></TR> + <TR><TD BGCOLOR="lightgreen">struct</TD></TR> + </TABLE> + >]; + PTR0 [shape=none, fillcolor=none, label=< + <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> + <TR><TD BGCOLOR="green"><FONT color="white">*ptr?</FONT></TD></TR> + <TR><TD BGCOLOR="lightgreen">struct</TD></TR> + </TABLE> + >]; + + TOP -> PTR; + PTR -> PTR0; + PTR0 -> BOT; + + // ---------------------- + // Structs + STRUCT_TOP [label=<<B>⊤</B>:struct>, fillcolor=lightgreen, shape=oval]; + + STRUCT_S1 [shape=none, fillcolor=none, label=< + <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> + <TR><TD BGCOLOR="lightgreen">field</TD><TD BGCOLOR="lightblue:green" gradientangle="315">int:ptr</TD></TR> + </TABLE> + >]; + STRUCT_S2 [shape=none, fillcolor=none, label=< + <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> + <TR><TD BGCOLOR="lightgreen">field</TD><TD BGCOLOR="lightblue:green" gradientangle="315">int:ptr</TD></TR> + <TR><TD BGCOLOR="lightgreen">field</TD><TD BGCOLOR="lightblue:green" gradientangle="315">int:ptr</TD></TR> + </TABLE> + >]; + STRUCT_SN [shape=none, fillcolor=none, label=< + <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> + <TR><TD BGCOLOR="lightgreen">field</TD><TD BGCOLOR="lightblue:green" gradientangle="315">int:ptr</TD></TR> + <TR><TD BGCOLOR="lightgreen">... </TD><TD BGCOLOR="lightblue:green" gradientangle="315">int:ptr</TD></TR> + <TR><TD BGCOLOR="lightgreen">field</TD><TD BGCOLOR="lightblue:green" gradientangle="315">int:ptr</TD></TR> + </TABLE> + >]; + + STRUCT_BOT [label=<<B>⊥</B>:struct>, fillcolor=lightgreen, shape=oval] TOP -> STRUCT_TOP; STRUCT_TOP -> STRUCT_S1; - STRUCT_TOP -> STRUCT_DOTS; + STRUCT_TOP -> STRUCT_S2; STRUCT_TOP -> STRUCT_SN; STRUCT_S1 -> STRUCT_BOT; - STRUCT_DOTS -> STRUCT_BOT; + STRUCT_S2 -> STRUCT_BOT; STRUCT_SN -> STRUCT_BOT; STRUCT_BOT -> BOT; - STRUCT_S1 -> STRUCT_DOTS -> STRUCT_SN [style=invis]; - - TOP -> PTR_TOP; - PTR_TOP -> PTR_S1; - PTR_TOP -> PTR_SDOTS; - PTR_TOP -> PTR_SN; - PTR_TOP -> PTR_NULL; - PTR_TOP -> PTR_VOIDPTR; - PTR_NULL -> PTR_BOT; - PTR_NULL -> PTR_S1OPT; - PTR_NULL -> PTR_SOPTDOTS; - PTR_NULL -> PTR_SNOPT; - PTR_S1 -> PTR_S1OPT; - PTR_S1 -> PTR_VOIDPTR; - PTR_SDOTS -> PTR_SOPTDOTS; - PTR_SDOTS -> PTR_VOIDPTR; - PTR_SN -> PTR_SNOPT; - PTR_SN -> PTR_VOIDPTR; - PTR_VOIDPTR -> PTR_BOT; - PTR_S1OPT -> PTR_BOT; - PTR_SOPTDOTS -> PTR_BOT; - PTR_SNOPT -> PTR_BOT; - PTR_BOT -> BOT; - - PTR_S1 -> PTR_SDOTS -> PTR_SN [style=invis]; - PTR_S1OPT -> PTR_SOPTDOTS -> PTR_SNOPT [style=invis]; + STRUCT_S1 -> STRUCT_S2 -> STRUCT_SN [style=invis]; + + // ---------------------- + // Memory + MEM_TOP [label=<<B>⊤</B>:mem>, fillcolor=blue, fontcolor=white, shape=oval]; + MEM_ALIAS1 [label="#1" , fillcolor=blue, fontcolor=white]; + MEM_ALIASDOTS [label="..." , fillcolor=blue, fontcolor=white, shape=oval]; + MEM_ALIASN [label="#n" , fillcolor=blue, fontcolor=white]; + MEM_BOT [label=<<B>⊥</B>:mem>, fillcolor=blue, fontcolor=white, shape=oval]; TOP -> MEM_TOP; MEM_TOP -> MEM_ALIAS1; - MEM_TOP -> MEM_ALIAS2; MEM_TOP -> MEM_ALIASDOTS; MEM_TOP -> MEM_ALIASN; MEM_ALIAS1 -> MEM_BOT; - MEM_ALIAS2 -> MEM_BOT; MEM_ALIASDOTS -> MEM_BOT; MEM_ALIASN -> MEM_BOT; MEM_BOT -> BOT; - MEM_ALIAS1 -> MEM_ALIAS2 -> MEM_ALIASDOTS -> MEM_ALIASN [style=invis]; - + MEM_ALIAS1 -> MEM_ALIASDOTS -> MEM_ALIASN [style=invis]; + + // ---------------------- + // Tuples + + TUPLE_TOP [label=<<B>⊤</B>:tuple>, fillcolor=pink, shape=oval]; + + TUPLE1 [shape=none, fillcolor=none, label=< + <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> + <TH><TD BGCOLOR="pink">Tuple</TD></TH> + <TR><TD BGCOLOR="black" ><FONT color="white">type</FONT></TD></TR> + </TABLE> + >]; + TUPLE2 [shape=none, fillcolor=none, label=< + <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> + <TH><TD BGCOLOR="pink">Tuple</TD></TH> + <TR><TD BGCOLOR="black" ><FONT color="white">type</FONT></TD></TR> + <TR><TD BGCOLOR="black" ><FONT color="white">type</FONT></TD></TR> + </TABLE> + >]; + TUPLEN [shape=none, fillcolor=none, label=< + <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> + <TH><TD BGCOLOR="pink">Tuple</TD></TH> + <TR><TD BGCOLOR="black" ><FONT color="white">type</FONT></TD></TR> + <TR><TD BGCOLOR="black" ><FONT color="white">...</FONT></TD></TR> + <TR><TD BGCOLOR="black" ><FONT color="white">type</FONT></TD></TR> + </TABLE> + >]; + + TUPLE_BOT [label=<<B>⊥</B>:tuple>, fillcolor=pink, shape=oval]; + + TOP -> TUPLE_TOP; + TUPLE_TOP -> TUPLE1; + TUPLE_TOP -> TUPLE2; + TUPLE_TOP -> TUPLEN; + TUPLE1 -> TUPLE_BOT; + TUPLE2 -> TUPLE_BOT; + TUPLEN -> TUPLE_BOT; + TUPLE_BOT -> BOT; + + // ---------------------- // Additional customization {rank=same; TOP;} - {rank=same; INT_TOP; XCTRL; STRUCT_TOP; PTR_TOP; MEM_TOP;} - {rank=same; PTR_S1; PTR_SDOTS; PTR_SN;} + {rank=same; INT_TOP; XCTRL; STRUCT_TOP; MEM_TOP; TUPLE_TOP} {rank=same; INT_MIN; INT_MINDOTS; INT_ZERO; INT_MAXDOTS; - INT_MAX; TUPLE; STRUCT_S1; STRUCT_DOTS; STRUCT_SN; - PTR_NULL; PTR_VOIDPTR; - MEM_ALIAS1; MEM_ALIAS2; + INT_MAX; STRUCT_S1; STRUCT_S2; STRUCT_SN; + MEM_ALIAS1; MEM_ALIASDOTS; MEM_ALIASN;} - {rank=same; PTR_S1OPT; PTR_SOPTDOTS; PTR_SNOPT; } - {rank=same; INT_BOT; CTRL; STRUCT_BOT; PTR_BOT; MEM_BOT;} + {rank=same; INT_BOT; CTRL; STRUCT_BOT; MEM_BOT; TUPLE_BOT} {rank=same; BOT;} } diff --git a/chapter10/docs/lattice.svg b/chapter10/docs/lattice.svg index 2fe05bbf..02f3ce69 100644 --- a/chapter10/docs/lattice.svg +++ b/chapter10/docs/lattice.svg @@ -1,498 +1,554 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" - "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<!-- Generated by graphviz version 2.43.0 (0) - --> -<!-- Title: Lattice Pages: 1 --> -<svg width="1694pt" height="771pt" - viewBox="0.00 0.00 1694.09 771.25" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> -<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 767.25)"> -<title>Lattice</title> -<polygon fill="white" stroke="transparent" points="-4,4 -4,-767.25 1690.09,-767.25 1690.09,4 -4,4"/> -<!-- TOP --> -<g id="node1" class="node"> -<title>TOP</title> -<ellipse fill="lightblue" stroke="black" cx="582.4" cy="-743.75" rx="19.5" ry="19.5"/> -<text text-anchor="middle" x="582.4" y="-740.05" font-family="Times,serif" font-size="14.00">⊤</text> -</g> -<!-- XCTRL --> -<g id="node3" class="node"> -<title>XCTRL</title> -<ellipse fill="lightblue" stroke="black" cx="36.4" cy="-624.56" rx="36.29" ry="36.29"/> -<text text-anchor="middle" x="36.4" y="-620.86" font-family="Times,serif" font-size="14.00">~Ctrl</text> -</g> -<!-- TOP->XCTRL --> -<g id="edge1" class="edge"> -<title>TOP->XCTRL</title> -<path fill="none" stroke="black" d="M563.28,-738.65C483.63,-721.55 177.35,-655.81 72.13,-633.23"/> -</g> -<!-- INT_TOP --> -<g id="node5" class="node"> -<title>INT_TOP</title> -<ellipse fill="lightblue" stroke="black" cx="270.4" cy="-624.56" rx="40.09" ry="40.09"/> -<text text-anchor="middle" x="270.4" y="-620.86" font-family="Times,serif" font-size="14.00">IntTop</text> -</g> -<!-- TOP->INT_TOP --> -<g id="edge4" class="edge"> -<title>TOP->INT_TOP</title> -<path fill="none" stroke="black" d="M564.27,-735.95C514.59,-717.28 375.46,-665.02 308,-639.69"/> -</g> -<!-- TUPLE --> -<g id="node12" class="node"> -<title>TUPLE</title> -<ellipse fill="lightblue" stroke="black" cx="520.4" cy="-386.83" rx="43.59" ry="43.59"/> -<text text-anchor="middle" x="520.4" y="-383.13" font-family="Times,serif" font-size="14.00">TUPLE</text> -</g> -<!-- TOP->TUPLE --> -<g id="edge20" class="edge"> -<title>TOP->TUPLE</title> -<path fill="none" stroke="black" d="M579.02,-724.31C569.35,-668.67 541.41,-507.81 527.9,-429.99"/> -</g> -<!-- STRUCT_TOP --> -<g id="node13" class="node"> -<title>STRUCT_TOP</title> -<ellipse fill="lightblue" stroke="black" cx="676.4" cy="-624.56" rx="36.29" ry="36.29"/> -<text text-anchor="middle" x="676.4" y="-620.86" font-family="Times,serif" font-size="14.00">$TOP</text> -</g> -<!-- TOP->STRUCT_TOP --> -<g id="edge22" class="edge"> -<title>TOP->STRUCT_TOP</title> -<path fill="none" stroke="black" d="M594.3,-727.91C609.22,-709.31 635.1,-677.04 653.82,-653.7"/> -</g> -<!-- PTR_TOP --> -<g id="node18" class="node"> -<title>PTR_TOP</title> -<ellipse fill="lightblue" stroke="black" cx="1045.4" cy="-624.56" rx="40.09" ry="40.09"/> -<text text-anchor="middle" x="1045.4" y="-620.86" font-family="Times,serif" font-size="14.00">*$TOP</text> -</g> -<!-- TOP->PTR_TOP --> -<g id="edge32" class="edge"> -<title>TOP->PTR_TOP</title> -<path fill="none" stroke="black" d="M601.12,-738.01C670.15,-720.54 911.28,-659.51 1006.4,-635.43"/> -</g> -<!-- MEM_TOP --> -<g id="node28" class="node"> -<title>MEM_TOP</title> -<ellipse fill="lightblue" stroke="black" cx="1471.4" cy="-624.56" rx="63.89" ry="63.89"/> -<text text-anchor="middle" x="1471.4" y="-620.86" font-family="Times,serif" font-size="14.00">MEM#TOP</text> -</g> -<!-- TOP->MEM_TOP --> -<g id="edge57" class="edge"> -<title>TOP->MEM_TOP</title> -<path fill="none" stroke="black" d="M601.79,-740.2C708.57,-726.12 1226.52,-657.84 1408.23,-633.89"/> -</g> -<!-- BOT --> -<g id="node2" class="node"> -<title>BOT</title> -<ellipse fill="lightblue" stroke="black" cx="607.4" cy="-19.5" rx="19.5" ry="19.5"/> -<text text-anchor="middle" x="607.4" y="-15.8" font-family="Times,serif" font-size="14.00">⊥</text> -</g> -<!-- CTRL --> -<g id="node4" class="node"> -<title>CTRL</title> -<ellipse fill="lightblue" stroke="black" cx="41.4" cy="-138.69" rx="28.7" ry="28.7"/> -<text text-anchor="middle" x="41.4" y="-134.99" font-family="Times,serif" font-size="14.00">Ctrl</text> -</g> -<!-- XCTRL->CTRL --> -<g id="edge2" class="edge"> -<title>XCTRL->CTRL</title> -<path fill="none" stroke="black" d="M36.77,-588.04C37.73,-495.13 40.24,-251.2 41.1,-167.42"/> -</g> -<!-- CTRL->BOT --> -<g id="edge3" class="edge"> -<title>CTRL->BOT</title> -<path fill="none" stroke="black" d="M69.46,-131.88C169.17,-111.23 504.8,-41.74 588.41,-24.43"/> -</g> -<!-- INT_MIN --> -<g id="node7" class="node"> -<title>INT_MIN</title> -<ellipse fill="lightblue" stroke="black" cx="49.4" cy="-386.83" rx="19.5" ry="19.5"/> -<text text-anchor="middle" x="49.4" y="-383.13" font-family="Times,serif" font-size="14.00">-n</text> -</g> -<!-- INT_TOP->INT_MIN --> -<g id="edge5" class="edge"> -<title>INT_TOP->INT_MIN</title> -<path fill="none" stroke="black" d="M242.85,-594.93C194.95,-543.4 98.03,-439.14 62.68,-401.12"/> -</g> -<!-- INT_MINDOTS --> -<g id="node8" class="node"> -<title>INT_MINDOTS</title> -<text text-anchor="middle" x="138.4" y="-383.13" font-family="Times,serif" font-size="14.00">...</text> -</g> -<!-- INT_TOP->INT_MINDOTS --> -<g id="edge6" class="edge"> -<title>INT_TOP->INT_MINDOTS</title> -<path fill="none" stroke="black" d="M250.78,-589.23C222.27,-537.88 170.4,-444.47 148.54,-405.1"/> -</g> -<!-- INT_ZERO --> -<g id="node9" class="node"> -<title>INT_ZERO</title> -<ellipse fill="lightblue" stroke="black" cx="226.4" cy="-386.83" rx="18" ry="18"/> -<text text-anchor="middle" x="226.4" y="-383.13" font-family="Times,serif" font-size="14.00">0</text> -</g> -<!-- INT_TOP->INT_ZERO --> -<g id="edge7" class="edge"> -<title>INT_TOP->INT_ZERO</title> -<path fill="none" stroke="black" d="M263.03,-584.77C253.34,-532.42 236.73,-442.64 229.69,-404.64"/> -</g> -<!-- INT_MAXDOTS --> -<g id="node10" class="node"> -<title>INT_MAXDOTS</title> -<text text-anchor="middle" x="314.4" y="-383.13" font-family="Times,serif" font-size="14.00">...</text> -</g> -<!-- INT_TOP->INT_MAXDOTS --> -<g id="edge8" class="edge"> -<title>INT_TOP->INT_MAXDOTS</title> -<path fill="none" stroke="black" d="M277.76,-584.77C287.42,-532.56 303.98,-443.09 311.05,-404.93"/> -</g> -<!-- INT_MAX --> -<g id="node11" class="node"> -<title>INT_MAX</title> -<ellipse fill="lightblue" stroke="black" cx="409.4" cy="-386.83" rx="24.9" ry="24.9"/> -<text text-anchor="middle" x="409.4" y="-383.13" font-family="Times,serif" font-size="14.00">+n</text> -</g> -<!-- INT_TOP->INT_MAX --> -<g id="edge9" class="edge"> -<title>INT_TOP->INT_MAX</title> -<path fill="none" stroke="black" d="M290.76,-589.74C319.94,-539.83 372.79,-449.44 396.85,-408.28"/> -</g> -<!-- INT_BOT --> -<g id="node6" class="node"> -<title>INT_BOT</title> -<ellipse fill="lightblue" stroke="black" cx="271.4" cy="-138.69" rx="40.09" ry="40.09"/> -<text text-anchor="middle" x="271.4" y="-134.99" font-family="Times,serif" font-size="14.00">IntBot</text> -</g> -<!-- INT_BOT->BOT --> -<g id="edge15" class="edge"> -<title>INT_BOT->BOT</title> -<path fill="none" stroke="black" d="M309.29,-124.48C381.37,-99.33 535.79,-45.47 588.96,-26.93"/> -</g> -<!-- INT_MIN->INT_BOT --> -<g id="edge10" class="edge"> -<title>INT_MIN->INT_BOT</title> -<path fill="none" stroke="black" d="M62.62,-372.05C98.18,-332.3 196.43,-222.49 244.37,-168.9"/> -</g> -<!-- INT_MIN->INT_MINDOTS --> -<!-- INT_MINDOTS->INT_BOT --> -<g id="edge11" class="edge"> -<title>INT_MINDOTS->INT_BOT</title> -<path fill="none" stroke="black" d="M148.18,-368.58C170.07,-327.73 223.37,-228.29 252.17,-174.56"/> -</g> -<!-- INT_MINDOTS->INT_ZERO --> -<!-- INT_ZERO->INT_BOT --> -<g id="edge12" class="edge"> -<title>INT_ZERO->INT_BOT</title> -<path fill="none" stroke="black" d="M229.63,-368.98C236.81,-329.42 254.2,-233.54 264.13,-178.78"/> -</g> -<!-- INT_ZERO->INT_MAXDOTS --> -<!-- INT_MAXDOTS->INT_BOT --> -<g id="edge13" class="edge"> -<title>INT_MAXDOTS->INT_BOT</title> -<path fill="none" stroke="black" d="M311.23,-368.58C304.33,-328.74 287.77,-233.16 278.32,-178.61"/> -</g> -<!-- INT_MAXDOTS->INT_MAX --> -<!-- INT_MAX->INT_BOT --> -<g id="edge14" class="edge"> -<title>INT_MAX->INT_BOT</title> -<path fill="none" stroke="black" d="M397.39,-365.24C373.59,-322.44 320.2,-226.45 291.15,-174.21"/> -</g> -<!-- TUPLE->BOT --> -<g id="edge21" class="edge"> -<title>TUPLE->BOT</title> -<path fill="none" stroke="black" d="M530.46,-344.33C549.34,-264.63 589.36,-95.64 602.85,-38.69"/> -</g> -<!-- STRUCT_S1 --> -<g id="node14" class="node"> -<title>STRUCT_S1</title> -<ellipse fill="lightblue" stroke="black" cx="629.4" cy="-386.83" rx="23" ry="23"/> -<text text-anchor="middle" x="629.4" y="-383.13" font-family="Times,serif" font-size="14.00">S1</text> -</g> -<!-- STRUCT_TOP->STRUCT_S1 --> -<g id="edge23" class="edge"> -<title>STRUCT_TOP->STRUCT_S1</title> -<path fill="none" stroke="black" d="M669.31,-588.71C659.49,-539.03 642.03,-450.71 633.85,-409.35"/> -</g> -<!-- STRUCT_DOTS --> -<g id="node15" class="node"> -<title>STRUCT_DOTS</title> -<text text-anchor="middle" x="722.4" y="-383.13" font-family="Times,serif" font-size="14.00">...</text> -</g> -<!-- STRUCT_TOP->STRUCT_DOTS --> -<g id="edge24" class="edge"> -<title>STRUCT_TOP->STRUCT_DOTS</title> -<path fill="none" stroke="black" d="M683.33,-588.71C693.3,-537.22 711.3,-444.2 718.88,-405.01"/> -</g> -<!-- STRUCT_SN --> -<g id="node16" class="node"> -<title>STRUCT_SN</title> -<ellipse fill="lightblue" stroke="black" cx="815.4" cy="-386.83" rx="23" ry="23"/> -<text text-anchor="middle" x="815.4" y="-383.13" font-family="Times,serif" font-size="14.00">Sn</text> -</g> -<!-- STRUCT_TOP->STRUCT_SN --> -<g id="edge25" class="edge"> -<title>STRUCT_TOP->STRUCT_SN</title> -<path fill="none" stroke="black" d="M694.85,-592.99C723.95,-543.23 779.65,-447.97 803.78,-406.7"/> -</g> -<!-- STRUCT_S1->STRUCT_DOTS --> -<!-- STRUCT_BOT --> -<g id="node17" class="node"> -<title>STRUCT_BOT</title> -<ellipse fill="lightblue" stroke="black" cx="673.4" cy="-138.69" rx="36.29" ry="36.29"/> -<text text-anchor="middle" x="673.4" y="-134.99" font-family="Times,serif" font-size="14.00">$BOT</text> -</g> -<!-- STRUCT_S1->STRUCT_BOT --> -<g id="edge26" class="edge"> -<title>STRUCT_S1->STRUCT_BOT</title> -<path fill="none" stroke="black" d="M633.38,-364.37C641.02,-321.3 657.78,-226.77 667,-174.76"/> -</g> -<!-- STRUCT_DOTS->STRUCT_SN --> -<!-- STRUCT_DOTS->STRUCT_BOT --> -<g id="edge27" class="edge"> -<title>STRUCT_DOTS->STRUCT_BOT</title> -<path fill="none" stroke="black" d="M718.79,-368.58C710.73,-327.73 691.09,-228.29 680.48,-174.56"/> -</g> -<!-- STRUCT_SN->STRUCT_BOT --> -<g id="edge28" class="edge"> -<title>STRUCT_SN->STRUCT_BOT</title> -<path fill="none" stroke="black" d="M804.02,-366.94C779.47,-324.04 721.36,-222.51 691.62,-170.54"/> -</g> -<!-- STRUCT_BOT->BOT --> -<g id="edge29" class="edge"> -<title>STRUCT_BOT->BOT</title> -<path fill="none" stroke="black" d="M655.88,-106.59C643.28,-84.22 626.78,-54.92 616.64,-36.92"/> -</g> -<!-- PTR_NULL --> -<g id="node19" class="node"> -<title>PTR_NULL</title> -<ellipse fill="lightblue" stroke="black" cx="997.4" cy="-386.83" rx="28.7" ry="28.7"/> -<text text-anchor="middle" x="997.4" y="-383.13" font-family="Times,serif" font-size="14.00">null</text> -</g> -<!-- PTR_TOP->PTR_NULL --> -<g id="edge36" class="edge"> -<title>PTR_TOP->PTR_NULL</title> -<path fill="none" stroke="black" d="M1037.42,-585.04C1027.71,-536.98 1011.58,-457.07 1003.06,-414.89"/> -</g> -<!-- PTR_VOIDPTR --> -<g id="node20" class="node"> -<title>PTR_VOIDPTR</title> -<ellipse fill="lightblue" stroke="black" cx="1190.4" cy="-386.83" rx="34.39" ry="34.39"/> -<text text-anchor="middle" x="1190.4" y="-383.13" font-family="Times,serif" font-size="14.00">*void</text> -</g> -<!-- PTR_TOP->PTR_VOIDPTR --> -<g id="edge37" class="edge"> -<title>PTR_TOP->PTR_VOIDPTR</title> -<path fill="none" stroke="black" d="M1066.48,-589.99C1094.99,-543.24 1145.36,-460.66 1172.27,-416.55"/> -</g> -<!-- PTR_S1 --> -<g id="node21" class="node"> -<title>PTR_S1</title> -<ellipse fill="lightblue" stroke="black" cx="907.4" cy="-495.62" rx="27.1" ry="27.1"/> -<text text-anchor="middle" x="907.4" y="-491.92" font-family="Times,serif" font-size="14.00">*S1</text> -</g> -<!-- PTR_TOP->PTR_S1 --> -<g id="edge33" class="edge"> -<title>PTR_TOP->PTR_S1</title> -<path fill="none" stroke="black" d="M1016.13,-596.64C989.39,-572.04 950.57,-536.33 927.27,-514.9"/> -</g> -<!-- PTR_SDOTS --> -<g id="node22" class="node"> -<title>PTR_SDOTS</title> -<text text-anchor="middle" x="1091.4" y="-491.92" font-family="Times,serif" font-size="14.00">...</text> -</g> -<!-- PTR_TOP->PTR_SDOTS --> -<g id="edge34" class="edge"> -<title>PTR_TOP->PTR_SDOTS</title> -<path fill="none" stroke="black" d="M1058.83,-586.5C1067.52,-562.5 1078.44,-532.36 1085.17,-513.8"/> -</g> -<!-- PTR_SN --> -<g id="node23" class="node"> -<title>PTR_SN</title> -<ellipse fill="lightblue" stroke="black" cx="1277.4" cy="-495.62" rx="29.5" ry="29.5"/> -<text text-anchor="middle" x="1277.4" y="-491.92" font-family="Times,serif" font-size="14.00">*SN</text> -</g> -<!-- PTR_TOP->PTR_SN --> -<g id="edge35" class="edge"> -<title>PTR_TOP->PTR_SN</title> -<path fill="none" stroke="black" d="M1080.38,-604.42C1127.6,-578.58 1210.58,-533.18 1252.16,-510.43"/> -</g> -<!-- PTR_S1OPT --> -<g id="node24" class="node"> -<title>PTR_S1OPT</title> -<ellipse fill="lightblue" stroke="black" cx="900.4" cy="-272.83" rx="32.49" ry="32.49"/> -<text text-anchor="middle" x="900.4" y="-269.13" font-family="Times,serif" font-size="14.00">*S1?</text> -</g> -<!-- PTR_NULL->PTR_S1OPT --> -<g id="edge39" class="edge"> -<title>PTR_NULL->PTR_S1OPT</title> -<path fill="none" stroke="black" d="M979.15,-364.76C962.69,-345.75 938.48,-317.8 921.25,-297.91"/> -</g> -<!-- PTR_SOPTDOTS --> -<g id="node25" class="node"> -<title>PTR_SOPTDOTS</title> -<text text-anchor="middle" x="1089.4" y="-269.13" font-family="Times,serif" font-size="14.00">...</text> -</g> -<!-- PTR_NULL->PTR_SOPTDOTS --> -<g id="edge40" class="edge"> -<title>PTR_NULL->PTR_SOPTDOTS</title> -<path fill="none" stroke="black" d="M1015.14,-364.23C1032.68,-342.87 1059.18,-310.62 1075.32,-290.96"/> -</g> -<!-- PTR_SNOPT --> -<g id="node26" class="node"> -<title>PTR_SNOPT</title> -<ellipse fill="lightblue" stroke="black" cx="1193.4" cy="-272.83" rx="34.39" ry="34.39"/> -<text text-anchor="middle" x="1193.4" y="-269.13" font-family="Times,serif" font-size="14.00">*SN?</text> -</g> -<!-- PTR_NULL->PTR_SNOPT --> -<g id="edge41" class="edge"> -<title>PTR_NULL->PTR_SNOPT</title> -<path fill="none" stroke="black" d="M1021.82,-371.87C1057.84,-351.29 1125.11,-312.85 1163.86,-290.71"/> -</g> -<!-- PTR_BOT --> -<g id="node27" class="node"> -<title>PTR_BOT</title> -<ellipse fill="lightblue" stroke="black" cx="1043.4" cy="-138.69" rx="46.29" ry="46.29"/> -<text text-anchor="middle" x="1043.4" y="-134.99" font-family="Times,serif" font-size="14.00">*$BOT?</text> -</g> -<!-- PTR_NULL->PTR_BOT --> -<g id="edge38" class="edge"> -<title>PTR_NULL->PTR_BOT</title> -<path fill="none" stroke="black" d="M1002.67,-358.36C1010.56,-315.84 1025.48,-235.32 1034.91,-184.46"/> -</g> -<!-- PTR_VOIDPTR->PTR_BOT --> -<g id="edge48" class="edge"> -<title>PTR_VOIDPTR->PTR_BOT</title> -<path fill="none" stroke="black" d="M1172.67,-356.89C1146.24,-312.3 1096.5,-228.33 1067.02,-178.56"/> -</g> -<!-- PTR_S1->PTR_VOIDPTR --> -<g id="edge43" class="edge"> -<title>PTR_S1->PTR_VOIDPTR</title> -<path fill="none" stroke="black" d="M933.01,-484.95C984.71,-465.44 1101.45,-421.39 1158.2,-399.97"/> -</g> -<!-- PTR_S1->PTR_SDOTS --> -<!-- PTR_S1->PTR_S1OPT --> -<g id="edge42" class="edge"> -<title>PTR_S1->PTR_S1OPT</title> -<path fill="none" stroke="black" d="M906.54,-468.3C905.25,-427.17 902.8,-349.47 901.42,-305.44"/> -</g> -<!-- PTR_SDOTS->PTR_VOIDPTR --> -<g id="edge45" class="edge"> -<title>PTR_SDOTS->PTR_VOIDPTR</title> -<path fill="none" stroke="black" d="M1107.3,-477.46C1123.48,-460.01 1148.73,-432.78 1167.15,-412.91"/> -</g> -<!-- PTR_SDOTS->PTR_SN --> -<!-- PTR_SDOTS->PTR_SOPTDOTS --> -<g id="edge44" class="edge"> -<title>PTR_SDOTS->PTR_SOPTDOTS</title> -<path fill="none" stroke="black" d="M1091.23,-477.39C1090.86,-435.51 1089.94,-332.83 1089.56,-291"/> -</g> -<!-- PTR_SN->PTR_VOIDPTR --> -<g id="edge47" class="edge"> -<title>PTR_SN->PTR_VOIDPTR</title> -<path fill="none" stroke="black" d="M1259.37,-472.49C1245.53,-455.51 1226.39,-432.01 1211.78,-414.07"/> -</g> -<!-- PTR_SN->PTR_SNOPT --> -<g id="edge46" class="edge"> -<title>PTR_SN->PTR_SNOPT</title> -<path fill="none" stroke="black" d="M1266.93,-467.85C1251.36,-426.56 1222.17,-349.14 1205.63,-305.29"/> -</g> -<!-- PTR_S1OPT->PTR_SOPTDOTS --> -<!-- PTR_S1OPT->PTR_BOT --> -<g id="edge49" class="edge"> -<title>PTR_S1OPT->PTR_BOT</title> -<path fill="none" stroke="black" d="M924.01,-250.01C947.41,-228.39 983.48,-195.06 1009.85,-170.69"/> -</g> -<!-- PTR_SOPTDOTS->PTR_SNOPT --> -<!-- PTR_SOPTDOTS->PTR_BOT --> -<g id="edge50" class="edge"> -<title>PTR_SOPTDOTS->PTR_BOT</title> -<path fill="none" stroke="black" d="M1083.48,-254.83C1077.14,-236.63 1066.85,-207.07 1058.28,-182.46"/> -</g> -<!-- PTR_SNOPT->PTR_BOT --> -<g id="edge51" class="edge"> -<title>PTR_SNOPT->PTR_BOT</title> -<path fill="none" stroke="black" d="M1167.95,-249.42C1143.13,-227.55 1105.19,-194.13 1077.71,-169.92"/> -</g> -<!-- PTR_BOT->BOT --> -<g id="edge52" class="edge"> -<title>PTR_BOT->BOT</title> -<path fill="none" stroke="black" d="M998.79,-125.7C905.03,-100.5 690.85,-42.93 626.21,-25.56"/> -</g> -<!-- MEM_ALIAS1 --> -<g id="node29" class="node"> -<title>MEM_ALIAS1</title> -<ellipse fill="lightblue" stroke="black" cx="1379.4" cy="-386.83" rx="24.9" ry="24.9"/> -<text text-anchor="middle" x="1379.4" y="-383.13" font-family="Times,serif" font-size="14.00">#1</text> -</g> -<!-- MEM_TOP->MEM_ALIAS1 --> -<g id="edge58" class="edge"> -<title>MEM_TOP->MEM_ALIAS1</title> -<path fill="none" stroke="black" d="M1448.3,-564.88C1428.87,-514.67 1402.13,-445.56 1388.37,-410.01"/> -</g> -<!-- MEM_ALIAS2 --> -<g id="node30" class="node"> -<title>MEM_ALIAS2</title> -<ellipse fill="lightblue" stroke="black" cx="1471.4" cy="-386.83" rx="24.9" ry="24.9"/> -<text text-anchor="middle" x="1471.4" y="-383.13" font-family="Times,serif" font-size="14.00">#2</text> -</g> -<!-- MEM_TOP->MEM_ALIAS2 --> -<g id="edge59" class="edge"> -<title>MEM_TOP->MEM_ALIAS2</title> -<path fill="none" stroke="black" d="M1471.4,-560.85C1471.4,-511.89 1471.4,-446.88 1471.4,-411.81"/> -</g> -<!-- MEM_ALIASDOTS --> -<g id="node31" class="node"> -<title>MEM_ALIASDOTS</title> -<text text-anchor="middle" x="1566.4" y="-383.13" font-family="Times,serif" font-size="14.00">...</text> -</g> -<!-- MEM_TOP->MEM_ALIASDOTS --> -<g id="edge60" class="edge"> -<title>MEM_TOP->MEM_ALIASDOTS</title> -<path fill="none" stroke="black" d="M1495.12,-565.18C1516.17,-512.51 1545.61,-438.84 1559.11,-405.06"/> -</g> -<!-- MEM_ALIASN --> -<g id="node32" class="node"> -<title>MEM_ALIASN</title> -<ellipse fill="lightblue" stroke="black" cx="1661.4" cy="-386.83" rx="24.9" ry="24.9"/> -<text text-anchor="middle" x="1661.4" y="-383.13" font-family="Times,serif" font-size="14.00">#n</text> -</g> -<!-- MEM_TOP->MEM_ALIASN --> -<g id="edge61" class="edge"> -<title>MEM_TOP->MEM_ALIASN</title> -<path fill="none" stroke="black" d="M1511.23,-574.72C1553.01,-522.44 1616.59,-442.89 1645.77,-406.38"/> -</g> -<!-- MEM_ALIAS1->MEM_ALIAS2 --> -<!-- MEM_BOT --> -<g id="node33" class="node"> -<title>MEM_BOT</title> -<ellipse fill="lightblue" stroke="black" cx="1471.4" cy="-138.69" rx="63.89" ry="63.89"/> -<text text-anchor="middle" x="1471.4" y="-134.99" font-family="Times,serif" font-size="14.00">MEM#BOT</text> -</g> -<!-- MEM_ALIAS1->MEM_BOT --> -<g id="edge62" class="edge"> -<title>MEM_ALIAS1->MEM_BOT</title> -<path fill="none" stroke="black" d="M1388.05,-363.48C1401.92,-326.08 1429.55,-251.56 1449.19,-198.59"/> -</g> -<!-- MEM_ALIAS2->MEM_ALIASDOTS --> -<!-- MEM_ALIAS2->MEM_BOT --> -<g id="edge63" class="edge"> -<title>MEM_ALIAS2->MEM_BOT</title> -<path fill="none" stroke="black" d="M1471.4,-362.13C1471.4,-325.23 1471.4,-254.49 1471.4,-202.46"/> -</g> -<!-- MEM_ALIASDOTS->MEM_ALIASN --> -<!-- MEM_ALIASDOTS->MEM_BOT --> -<g id="edge64" class="edge"> -<title>MEM_ALIASDOTS->MEM_BOT</title> -<path fill="none" stroke="black" d="M1559.41,-368.58C1545.87,-333.21 1515.52,-253.93 1494.26,-198.42"/> -</g> -<!-- MEM_ALIASN->MEM_BOT --> -<g id="edge65" class="edge"> -<title>MEM_ALIASN->MEM_BOT</title> -<path fill="none" stroke="black" d="M1646.17,-366.94C1616.93,-328.76 1552.13,-244.12 1510.17,-189.33"/> -</g> -<!-- MEM_BOT->BOT --> -<g id="edge66" class="edge"> -<title>MEM_BOT->BOT</title> -<path fill="none" stroke="black" d="M1408.21,-129.12C1230.24,-104.98 730.92,-37.25 626.64,-23.11"/> -</g> -</g> -</svg> +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 12.2.0 (20241103.1931)
+ -->
+<!-- Title: Lattice Pages: 1 -->
+<svg width="1465pt" height="447pt"
+ viewBox="0.00 0.00 1465.07 446.70" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 442.7)">
+<title>Lattice</title>
+<polygon fill="white" stroke="none" points="-4,4 -4,-442.7 1461.07,-442.7 1461.07,4 -4,4"/>
+<!-- TOP -->
+<g id="node1" class="node">
+<title>TOP</title>
+<ellipse fill="black" stroke="black" cx="581.07" cy="-414.47" rx="24.23" ry="24.23"/>
+<text text-anchor="start" x="571.32" y="-410.42" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00" fill="white">⊤ </text>
+</g>
+<!-- XCTRL -->
+<g id="node3" class="node">
+<title>XCTRL</title>
+<ellipse fill="yellow" stroke="black" cx="39.07" cy="-327.75" rx="39.07" ry="18"/>
+<text text-anchor="start" x="18.44" y="-323.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊤ </text>
+<text text-anchor="start" x="37.94" y="-323.7" font-family="Times New Roman,serif" font-size="14.00">:ctrl</text>
+</g>
+<!-- TOP->XCTRL -->
+<g id="edge1" class="edge">
+<title>TOP->XCTRL</title>
+<path fill="none" stroke="black" d="M557.08,-409.72C474.17,-396.76 198.71,-353.7 86.88,-336.22"/>
+<polygon fill="black" stroke="black" points="87.55,-332.78 77.13,-334.7 86.47,-339.7 87.55,-332.78"/>
+</g>
+<!-- INT_TOP -->
+<g id="node5" class="node">
+<title>INT_TOP</title>
+<ellipse fill="lightblue" stroke="black" cx="273.07" cy="-327.75" rx="36.51" ry="18"/>
+<text text-anchor="start" x="254.32" y="-323.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊤ </text>
+<text text-anchor="start" x="273.82" y="-323.7" font-family="Times New Roman,serif" font-size="14.00">:int</text>
+</g>
+<!-- TOP->INT_TOP -->
+<g id="edge4" class="edge">
+<title>TOP->INT_TOP</title>
+<path fill="none" stroke="black" d="M557.67,-407.04C505.91,-392.8 381.13,-358.47 315.32,-340.37"/>
+<polygon fill="black" stroke="black" points="316.55,-337.08 305.98,-337.8 314.69,-343.83 316.55,-337.08"/>
+</g>
+<!-- PTR -->
+<g id="node12" class="node">
+<title>PTR</title>
+<polygon fill="none" stroke="none" points="551.07,-354.25 497.07,-354.25 497.07,-301.25 551.07,-301.25 551.07,-354.25"/>
+<polygon fill="green" stroke="none" points="506.07,-327.75 506.07,-350.25 542.07,-350.25 542.07,-327.75 506.07,-327.75"/>
+<polygon fill="none" stroke="black" points="506.07,-327.75 506.07,-350.25 542.07,-350.25 542.07,-327.75 506.07,-327.75"/>
+<text text-anchor="start" x="513.19" y="-333.95" font-family="Times New Roman,serif" font-size="14.00" fill="white">*ptr</text>
+<polygon fill="lightgreen" stroke="none" points="506.07,-305.25 506.07,-327.75 542.07,-327.75 542.07,-305.25 506.07,-305.25"/>
+<polygon fill="none" stroke="black" points="506.07,-305.25 506.07,-327.75 542.07,-327.75 542.07,-305.25 506.07,-305.25"/>
+<text text-anchor="start" x="509.07" y="-311.45" font-family="Times New Roman,serif" font-size="14.00">struct</text>
+</g>
+<!-- TOP->PTR -->
+<g id="edge20" class="edge">
+<title>TOP->PTR</title>
+<path fill="none" stroke="black" d="M567.85,-393.82C561.75,-384.77 554.34,-373.74 547.35,-363.36"/>
+<polygon fill="black" stroke="black" points="550.44,-361.68 541.96,-355.34 544.63,-365.59 550.44,-361.68"/>
+</g>
+<!-- STRUCT_TOP -->
+<g id="node14" class="node">
+<title>STRUCT_TOP</title>
+<ellipse fill="lightgreen" stroke="black" cx="700.07" cy="-327.75" rx="44.7" ry="18"/>
+<text text-anchor="start" x="675.32" y="-323.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊤</text>
+<text text-anchor="start" x="691.07" y="-323.7" font-family="Times New Roman,serif" font-size="14.00">:struct</text>
+</g>
+<!-- TOP->STRUCT_TOP -->
+<g id="edge23" class="edge">
+<title>TOP->STRUCT_TOP</title>
+<path fill="none" stroke="black" d="M600.72,-399.48C619.46,-386.14 647.98,-365.83 669.66,-350.4"/>
+<polygon fill="black" stroke="black" points="671.43,-353.43 677.55,-344.78 667.37,-347.73 671.43,-353.43"/>
+</g>
+<!-- MEM_TOP -->
+<g id="node19" class="node">
+<title>MEM_TOP</title>
+<ellipse fill="blue" stroke="black" cx="1011.07" cy="-327.75" rx="43.67" ry="18"/>
+<text text-anchor="start" x="987.07" y="-323.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00" fill="white">⊤</text>
+<text text-anchor="start" x="1002.82" y="-323.7" font-family="Times New Roman,serif" font-size="14.00" fill="white">:mem</text>
+</g>
+<!-- TOP->MEM_TOP -->
+<g id="edge33" class="edge">
+<title>TOP->MEM_TOP</title>
+<path fill="none" stroke="black" d="M605.11,-408.74C673.19,-395.32 868.38,-356.86 961.06,-338.6"/>
+<polygon fill="black" stroke="black" points="961.48,-342.09 970.62,-336.72 960.13,-335.22 961.48,-342.09"/>
+</g>
+<!-- TUPLE_TOP -->
+<g id="node24" class="node">
+<title>TUPLE_TOP</title>
+<ellipse fill="pink" stroke="black" cx="1284.07" cy="-327.75" rx="42.65" ry="18"/>
+<text text-anchor="start" x="1260.82" y="-323.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊤</text>
+<text text-anchor="start" x="1276.57" y="-323.7" font-family="Times New Roman,serif" font-size="14.00">:tuple</text>
+</g>
+<!-- TOP->TUPLE_TOP -->
+<g id="edge43" class="edge">
+<title>TOP->TUPLE_TOP</title>
+<path fill="none" stroke="black" d="M605.27,-410.56C705.78,-398.44 1091.6,-351.95 1232.32,-334.99"/>
+<polygon fill="black" stroke="black" points="1232.58,-338.48 1242.09,-333.81 1231.74,-331.53 1232.58,-338.48"/>
+</g>
+<!-- BOT -->
+<g id="node2" class="node">
+<title>BOT</title>
+<ellipse fill="black" stroke="black" cx="612.07" cy="-21.12" rx="21.12" ry="21.12"/>
+<text text-anchor="start" x="604.19" y="-16.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00" fill="white">⊥</text>
+</g>
+<!-- CTRL -->
+<g id="node4" class="node">
+<title>CTRL</title>
+<ellipse fill="yellow" stroke="black" cx="42.07" cy="-104.75" rx="36.51" ry="18"/>
+<text text-anchor="start" x="23.32" y="-100.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊥</text>
+<text text-anchor="start" x="39.07" y="-100.7" font-family="Times New Roman,serif" font-size="14.00">:ctrl</text>
+</g>
+<!-- XCTRL->CTRL -->
+<g id="edge2" class="edge">
+<title>XCTRL->CTRL</title>
+<path fill="none" stroke="black" d="M39.31,-309.5C39.83,-271.02 41.04,-181.25 41.67,-134.4"/>
+<polygon fill="black" stroke="black" points="45.17,-134.5 41.8,-124.45 38.17,-134.4 45.17,-134.5"/>
+</g>
+<!-- CTRL->BOT -->
+<g id="edge3" class="edge">
+<title>CTRL->BOT</title>
+<path fill="none" stroke="black" d="M76.87,-98.77C179.54,-84.06 480.24,-41 579.71,-26.76"/>
+<polygon fill="black" stroke="black" points="580.17,-30.23 589.57,-25.35 579.18,-23.3 580.17,-30.23"/>
+</g>
+<!-- INT_MIN -->
+<g id="node7" class="node">
+<title>INT_MIN</title>
+<ellipse fill="lightblue" stroke="black" cx="52.07" cy="-216.25" rx="18.6" ry="18.6"/>
+<text text-anchor="middle" x="52.07" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">-n</text>
+</g>
+<!-- INT_TOP->INT_MIN -->
+<g id="edge5" class="edge">
+<title>INT_TOP->INT_MIN</title>
+<path fill="none" stroke="black" d="M248.15,-314.4C206.3,-293.66 122.25,-252.02 79.06,-230.62"/>
+<polygon fill="black" stroke="black" points="80.63,-227.49 70.12,-226.19 77.52,-233.77 80.63,-227.49"/>
+</g>
+<!-- INT_MINDOTS -->
+<g id="node8" class="node">
+<title>INT_MINDOTS</title>
+<ellipse fill="lightblue" stroke="black" cx="141.07" cy="-216.25" rx="27" ry="18"/>
+<text text-anchor="middle" x="141.07" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">...</text>
+</g>
+<!-- INT_TOP->INT_MINDOTS -->
+<g id="edge6" class="edge">
+<title>INT_TOP->INT_MINDOTS</title>
+<path fill="none" stroke="black" d="M254.99,-311.75C231.87,-292.58 191.74,-259.28 165.8,-237.77"/>
+<polygon fill="black" stroke="black" points="168.37,-235.35 158.44,-231.66 163.9,-240.73 168.37,-235.35"/>
+</g>
+<!-- INT_ZERO -->
+<g id="node9" class="node">
+<title>INT_ZERO</title>
+<ellipse fill="lightblue" stroke="black" cx="229.07" cy="-216.25" rx="18" ry="18"/>
+<text text-anchor="middle" x="229.07" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">0</text>
+</g>
+<!-- INT_TOP->INT_ZERO -->
+<g id="edge7" class="edge">
+<title>INT_TOP->INT_ZERO</title>
+<path fill="none" stroke="black" d="M266.19,-309.64C259.14,-292.08 248.06,-264.51 239.84,-244.05"/>
+<polygon fill="black" stroke="black" points="243.15,-242.9 236.17,-234.93 236.65,-245.51 243.15,-242.9"/>
+</g>
+<!-- INT_MAXDOTS -->
+<g id="node10" class="node">
+<title>INT_MAXDOTS</title>
+<ellipse fill="lightblue" stroke="black" cx="317.07" cy="-216.25" rx="27" ry="18"/>
+<text text-anchor="middle" x="317.07" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">...</text>
+</g>
+<!-- INT_TOP->INT_MAXDOTS -->
+<g id="edge8" class="edge">
+<title>INT_TOP->INT_MAXDOTS</title>
+<path fill="none" stroke="black" d="M279.94,-309.64C286.96,-292.18 297.95,-264.82 306.16,-244.4"/>
+<polygon fill="black" stroke="black" points="309.34,-245.87 309.82,-235.28 302.84,-243.26 309.34,-245.87"/>
+</g>
+<!-- INT_MAX -->
+<g id="node11" class="node">
+<title>INT_MAX</title>
+<ellipse fill="lightblue" stroke="black" cx="408.07" cy="-216.25" rx="21.15" ry="21.15"/>
+<text text-anchor="middle" x="408.07" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">+n</text>
+</g>
+<!-- INT_TOP->INT_MAX -->
+<g id="edge9" class="edge">
+<title>INT_TOP->INT_MAX</title>
+<path fill="none" stroke="black" d="M291.56,-311.75C315.33,-292.47 356.7,-258.92 383.21,-237.41"/>
+<polygon fill="black" stroke="black" points="385.17,-240.33 390.73,-231.31 380.76,-234.89 385.17,-240.33"/>
+</g>
+<!-- INT_BOT -->
+<g id="node6" class="node">
+<title>INT_BOT</title>
+<ellipse fill="lightblue" stroke="black" cx="273.07" cy="-104.75" rx="33.95" ry="18"/>
+<text text-anchor="start" x="256.19" y="-100.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊥</text>
+<text text-anchor="start" x="271.94" y="-100.7" font-family="Times New Roman,serif" font-size="14.00">:int</text>
+</g>
+<!-- INT_BOT->BOT -->
+<g id="edge15" class="edge">
+<title>INT_BOT->BOT</title>
+<path fill="none" stroke="black" d="M303.75,-96.36C367.89,-80.92 515.56,-45.36 580.48,-29.73"/>
+<polygon fill="black" stroke="black" points="581.22,-33.15 590.12,-27.41 579.58,-26.35 581.22,-33.15"/>
+</g>
+<!-- INT_MIN->INT_BOT -->
+<g id="edge10" class="edge">
+<title>INT_MIN->INT_BOT</title>
+<path fill="none" stroke="black" d="M68.68,-207.02C104.61,-189.22 190.19,-146.81 238.44,-122.9"/>
+<polygon fill="black" stroke="black" points="239.95,-126.06 247.36,-118.49 236.84,-119.79 239.95,-126.06"/>
+</g>
+<!-- INT_MIN->INT_MINDOTS -->
+<!-- INT_MINDOTS->INT_BOT -->
+<g id="edge11" class="edge">
+<title>INT_MINDOTS->INT_BOT</title>
+<path fill="none" stroke="black" d="M157.52,-201.6C179.9,-183.04 220.19,-149.61 246.78,-127.55"/>
+<polygon fill="black" stroke="black" points="248.94,-130.31 254.4,-121.23 244.47,-124.92 248.94,-130.31"/>
+</g>
+<!-- INT_MINDOTS->INT_ZERO -->
+<!-- INT_ZERO->INT_BOT -->
+<g id="edge12" class="edge">
+<title>INT_ZERO->INT_BOT</title>
+<path fill="none" stroke="black" d="M235.56,-199.09C242.53,-181.74 253.73,-153.88 262.08,-133.1"/>
+<polygon fill="black" stroke="black" points="265.21,-134.68 265.7,-124.1 258.72,-132.07 265.21,-134.68"/>
+</g>
+<!-- INT_ZERO->INT_MAXDOTS -->
+<!-- INT_MAXDOTS->INT_BOT -->
+<g id="edge13" class="edge">
+<title>INT_MAXDOTS->INT_BOT</title>
+<path fill="none" stroke="black" d="M310.39,-198.62C303.41,-181.25 292.35,-153.73 284.08,-133.15"/>
+<polygon fill="black" stroke="black" points="287.35,-131.91 280.38,-123.94 280.86,-134.52 287.35,-131.91"/>
+</g>
+<!-- INT_MAXDOTS->INT_MAX -->
+<!-- INT_MAX->INT_BOT -->
+<g id="edge14" class="edge">
+<title>INT_MAX->INT_BOT</title>
+<path fill="none" stroke="black" d="M391.78,-202.04C368.98,-183.54 327.24,-149.69 299.83,-127.45"/>
+<polygon fill="black" stroke="black" points="302.28,-124.93 292.3,-121.35 297.87,-130.37 302.28,-124.93"/>
+</g>
+<!-- PTR0 -->
+<g id="node13" class="node">
+<title>PTR0</title>
+<polygon fill="none" stroke="none" points="551.07,-131.25 497.07,-131.25 497.07,-78.25 551.07,-78.25 551.07,-131.25"/>
+<polygon fill="green" stroke="none" points="506.07,-104.75 506.07,-127.25 542.07,-127.25 542.07,-104.75 506.07,-104.75"/>
+<polygon fill="none" stroke="black" points="506.07,-104.75 506.07,-127.25 542.07,-127.25 542.07,-104.75 506.07,-104.75"/>
+<text text-anchor="start" x="510.19" y="-110.95" font-family="Times New Roman,serif" font-size="14.00" fill="white">*ptr?</text>
+<polygon fill="lightgreen" stroke="none" points="506.07,-82.25 506.07,-104.75 542.07,-104.75 542.07,-82.25 506.07,-82.25"/>
+<polygon fill="none" stroke="black" points="506.07,-82.25 506.07,-104.75 542.07,-104.75 542.07,-82.25 506.07,-82.25"/>
+<text text-anchor="start" x="509.07" y="-88.45" font-family="Times New Roman,serif" font-size="14.00">struct</text>
+</g>
+<!-- PTR->PTR0 -->
+<g id="edge21" class="edge">
+<title>PTR->PTR0</title>
+<path fill="none" stroke="black" d="M524.07,-301.29C524.07,-261.89 524.07,-187.62 524.07,-142.52"/>
+<polygon fill="black" stroke="black" points="527.57,-142.68 524.07,-132.68 520.57,-142.68 527.57,-142.68"/>
+</g>
+<!-- PTR0->BOT -->
+<g id="edge22" class="edge">
+<title>PTR0->BOT</title>
+<path fill="none" stroke="black" d="M550.95,-78.81C562.95,-67.68 576.97,-54.68 588.55,-43.94"/>
+<polygon fill="black" stroke="black" points="590.79,-46.63 595.75,-37.26 586.03,-41.5 590.79,-46.63"/>
+</g>
+<!-- STRUCT_S1 -->
+<g id="node15" class="node">
+<title>STRUCT_S1</title>
+<polygon fill="none" stroke="none" points="644.94,-234.25 559.19,-234.25 559.19,-198.25 644.94,-198.25 644.94,-234.25"/>
+<polygon fill="lightgreen" stroke="none" points="567.19,-205 567.19,-227.5 597.94,-227.5 597.94,-205 567.19,-205"/>
+<polygon fill="none" stroke="black" points="567.19,-205 567.19,-227.5 597.94,-227.5 597.94,-205 567.19,-205"/>
+<text text-anchor="start" x="570.19" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">field</text>
+<defs>
+<linearGradient id="l_0" gradientUnits="userSpaceOnUse" x1="603.65" y1="-224.2" x2="631.23" y2="-208.29" >
+<stop offset="0" style="stop-color:lightblue;stop-opacity:1.;"/>
+<stop offset="1" style="stop-color:green;stop-opacity:1.;"/>
+</linearGradient>
+</defs>
+<polygon fill="url(#l_0)" stroke="none" points="597.94,-205 597.94,-227.5 636.94,-227.5 636.94,-205 597.94,-205"/>
+<polygon fill="none" stroke="black" points="597.94,-205 597.94,-227.5 636.94,-227.5 636.94,-205 597.94,-205"/>
+<text text-anchor="start" x="600.94" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">int:ptr</text>
+</g>
+<!-- STRUCT_TOP->STRUCT_S1 -->
+<g id="edge24" class="edge">
+<title>STRUCT_TOP->STRUCT_S1</title>
+<path fill="none" stroke="black" d="M685.61,-310.59C669.58,-292.68 643.53,-263.57 624.77,-242.62"/>
+<polygon fill="black" stroke="black" points="627.52,-240.44 618.24,-235.32 622.3,-245.11 627.52,-240.44"/>
+</g>
+<!-- STRUCT_S2 -->
+<g id="node16" class="node">
+<title>STRUCT_S2</title>
+<polygon fill="none" stroke="none" points="773.94,-242.75 688.19,-242.75 688.19,-189.75 773.94,-189.75 773.94,-242.75"/>
+<polygon fill="lightgreen" stroke="none" points="696.19,-216.25 696.19,-238.75 726.94,-238.75 726.94,-216.25 696.19,-216.25"/>
+<polygon fill="none" stroke="black" points="696.19,-216.25 696.19,-238.75 726.94,-238.75 726.94,-216.25 696.19,-216.25"/>
+<text text-anchor="start" x="699.19" y="-222.45" font-family="Times New Roman,serif" font-size="14.00">field</text>
+<defs>
+<linearGradient id="l_1" gradientUnits="userSpaceOnUse" x1="732.65" y1="-235.45" x2="760.23" y2="-219.54" >
+<stop offset="0" style="stop-color:lightblue;stop-opacity:1.;"/>
+<stop offset="1" style="stop-color:green;stop-opacity:1.;"/>
+</linearGradient>
+</defs>
+<polygon fill="url(#l_1)" stroke="none" points="726.94,-216.25 726.94,-238.75 765.94,-238.75 765.94,-216.25 726.94,-216.25"/>
+<polygon fill="none" stroke="black" points="726.94,-216.25 726.94,-238.75 765.94,-238.75 765.94,-216.25 726.94,-216.25"/>
+<text text-anchor="start" x="729.94" y="-222.45" font-family="Times New Roman,serif" font-size="14.00">int:ptr</text>
+<polygon fill="lightgreen" stroke="none" points="696.19,-193.75 696.19,-216.25 726.94,-216.25 726.94,-193.75 696.19,-193.75"/>
+<polygon fill="none" stroke="black" points="696.19,-193.75 696.19,-216.25 726.94,-216.25 726.94,-193.75 696.19,-193.75"/>
+<text text-anchor="start" x="699.19" y="-199.95" font-family="Times New Roman,serif" font-size="14.00">field</text>
+<defs>
+<linearGradient id="l_2" gradientUnits="userSpaceOnUse" x1="732.65" y1="-212.95" x2="760.23" y2="-197.04" >
+<stop offset="0" style="stop-color:lightblue;stop-opacity:1.;"/>
+<stop offset="1" style="stop-color:green;stop-opacity:1.;"/>
+</linearGradient>
+</defs>
+<polygon fill="url(#l_2)" stroke="none" points="726.94,-193.75 726.94,-216.25 765.94,-216.25 765.94,-193.75 726.94,-193.75"/>
+<polygon fill="none" stroke="black" points="726.94,-193.75 726.94,-216.25 765.94,-216.25 765.94,-193.75 726.94,-193.75"/>
+<text text-anchor="start" x="729.94" y="-199.95" font-family="Times New Roman,serif" font-size="14.00">int:ptr</text>
+</g>
+<!-- STRUCT_TOP->STRUCT_S2 -->
+<g id="edge25" class="edge">
+<title>STRUCT_TOP->STRUCT_S2</title>
+<path fill="none" stroke="black" d="M704.91,-309.64C709.16,-294.62 715.49,-272.29 720.85,-253.34"/>
+<polygon fill="black" stroke="black" points="724.19,-254.4 723.54,-243.83 717.45,-252.49 724.19,-254.4"/>
+</g>
+<!-- STRUCT_SN -->
+<g id="node17" class="node">
+<title>STRUCT_SN</title>
+<polygon fill="none" stroke="none" points="902.94,-254 817.19,-254 817.19,-178.5 902.94,-178.5 902.94,-254"/>
+<polygon fill="lightgreen" stroke="none" points="825.19,-227.5 825.19,-250 855.94,-250 855.94,-227.5 825.19,-227.5"/>
+<polygon fill="none" stroke="black" points="825.19,-227.5 825.19,-250 855.94,-250 855.94,-227.5 825.19,-227.5"/>
+<text text-anchor="start" x="828.19" y="-233.7" font-family="Times New Roman,serif" font-size="14.00">field</text>
+<defs>
+<linearGradient id="l_3" gradientUnits="userSpaceOnUse" x1="861.65" y1="-246.7" x2="889.23" y2="-230.79" >
+<stop offset="0" style="stop-color:lightblue;stop-opacity:1.;"/>
+<stop offset="1" style="stop-color:green;stop-opacity:1.;"/>
+</linearGradient>
+</defs>
+<polygon fill="url(#l_3)" stroke="none" points="855.94,-227.5 855.94,-250 894.94,-250 894.94,-227.5 855.94,-227.5"/>
+<polygon fill="none" stroke="black" points="855.94,-227.5 855.94,-250 894.94,-250 894.94,-227.5 855.94,-227.5"/>
+<text text-anchor="start" x="858.94" y="-233.7" font-family="Times New Roman,serif" font-size="14.00">int:ptr</text>
+<polygon fill="lightgreen" stroke="none" points="825.19,-205 825.19,-227.5 855.94,-227.5 855.94,-205 825.19,-205"/>
+<polygon fill="none" stroke="black" points="825.19,-205 825.19,-227.5 855.94,-227.5 855.94,-205 825.19,-205"/>
+<text text-anchor="start" x="831.19" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">...  </text>
+<defs>
+<linearGradient id="l_4" gradientUnits="userSpaceOnUse" x1="861.65" y1="-224.2" x2="889.23" y2="-208.29" >
+<stop offset="0" style="stop-color:lightblue;stop-opacity:1.;"/>
+<stop offset="1" style="stop-color:green;stop-opacity:1.;"/>
+</linearGradient>
+</defs>
+<polygon fill="url(#l_4)" stroke="none" points="855.94,-205 855.94,-227.5 894.94,-227.5 894.94,-205 855.94,-205"/>
+<polygon fill="none" stroke="black" points="855.94,-205 855.94,-227.5 894.94,-227.5 894.94,-205 855.94,-205"/>
+<text text-anchor="start" x="858.94" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">int:ptr</text>
+<polygon fill="lightgreen" stroke="none" points="825.19,-182.5 825.19,-205 855.94,-205 855.94,-182.5 825.19,-182.5"/>
+<polygon fill="none" stroke="black" points="825.19,-182.5 825.19,-205 855.94,-205 855.94,-182.5 825.19,-182.5"/>
+<text text-anchor="start" x="828.19" y="-188.7" font-family="Times New Roman,serif" font-size="14.00">field</text>
+<defs>
+<linearGradient id="l_5" gradientUnits="userSpaceOnUse" x1="861.65" y1="-201.7" x2="889.23" y2="-185.79" >
+<stop offset="0" style="stop-color:lightblue;stop-opacity:1.;"/>
+<stop offset="1" style="stop-color:green;stop-opacity:1.;"/>
+</linearGradient>
+</defs>
+<polygon fill="url(#l_5)" stroke="none" points="855.94,-182.5 855.94,-205 894.94,-205 894.94,-182.5 855.94,-182.5"/>
+<polygon fill="none" stroke="black" points="855.94,-182.5 855.94,-205 894.94,-205 894.94,-182.5 855.94,-182.5"/>
+<text text-anchor="start" x="858.94" y="-188.7" font-family="Times New Roman,serif" font-size="14.00">int:ptr</text>
+</g>
+<!-- STRUCT_TOP->STRUCT_SN -->
+<g id="edge26" class="edge">
+<title>STRUCT_TOP->STRUCT_SN</title>
+<path fill="none" stroke="black" d="M721.98,-311.75C744.07,-296.64 778.97,-272.75 808.16,-252.77"/>
+<polygon fill="black" stroke="black" points="809.89,-255.83 816.16,-247.3 805.93,-250.05 809.89,-255.83"/>
+</g>
+<!-- STRUCT_S1->STRUCT_S2 -->
+<!-- STRUCT_BOT -->
+<g id="node18" class="node">
+<title>STRUCT_BOT</title>
+<ellipse fill="lightgreen" stroke="black" cx="700.07" cy="-104.75" rx="44.7" ry="18"/>
+<text text-anchor="start" x="675.32" y="-100.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊥</text>
+<text text-anchor="start" x="691.07" y="-100.7" font-family="Times New Roman,serif" font-size="14.00">:struct</text>
+</g>
+<!-- STRUCT_S1->STRUCT_BOT -->
+<g id="edge27" class="edge">
+<title>STRUCT_S1->STRUCT_BOT</title>
+<path fill="none" stroke="black" d="M616.95,-198.62C633.16,-180.5 659.26,-151.34 677.89,-130.53"/>
+<polygon fill="black" stroke="black" points="680.29,-133.09 684.36,-123.3 675.08,-128.42 680.29,-133.09"/>
+</g>
+<!-- STRUCT_S2->STRUCT_SN -->
+<!-- STRUCT_S2->STRUCT_BOT -->
+<g id="edge28" class="edge">
+<title>STRUCT_S2->STRUCT_BOT</title>
+<path fill="none" stroke="black" d="M723.88,-189.85C719.09,-172.96 712.81,-150.77 707.9,-133.42"/>
+<polygon fill="black" stroke="black" points="711.41,-132.95 705.32,-124.28 704.67,-134.86 711.41,-132.95"/>
+</g>
+<!-- STRUCT_SN->STRUCT_BOT -->
+<g id="edge29" class="edge">
+<title>STRUCT_SN->STRUCT_BOT</title>
+<path fill="none" stroke="black" d="M817.61,-186.19C790.48,-167.62 755.89,-143.95 731.27,-127.11"/>
+<polygon fill="black" stroke="black" points="733.52,-124.4 723.29,-121.64 729.56,-130.18 733.52,-124.4"/>
+</g>
+<!-- STRUCT_BOT->BOT -->
+<g id="edge30" class="edge">
+<title>STRUCT_BOT->BOT</title>
+<path fill="none" stroke="black" d="M683.1,-88.01C669.57,-75.46 650.48,-57.75 635.5,-43.85"/>
+<polygon fill="black" stroke="black" points="638.04,-41.44 628.33,-37.21 633.28,-46.57 638.04,-41.44"/>
+</g>
+<!-- MEM_ALIAS1 -->
+<g id="node20" class="node">
+<title>MEM_ALIAS1</title>
+<ellipse fill="blue" stroke="black" cx="966.07" cy="-216.25" rx="20.13" ry="20.13"/>
+<text text-anchor="middle" x="966.07" y="-211.2" font-family="Times New Roman,serif" font-size="14.00" fill="white">#1</text>
+</g>
+<!-- MEM_TOP->MEM_ALIAS1 -->
+<g id="edge34" class="edge">
+<title>MEM_TOP->MEM_ALIAS1</title>
+<path fill="none" stroke="black" d="M1004.04,-309.64C997.03,-292.59 986.14,-266.09 977.82,-245.84"/>
+<polygon fill="black" stroke="black" points="981.11,-244.65 974.07,-236.73 974.64,-247.31 981.11,-244.65"/>
+</g>
+<!-- MEM_ALIASDOTS -->
+<g id="node21" class="node">
+<title>MEM_ALIASDOTS</title>
+<ellipse fill="blue" stroke="black" cx="1056.07" cy="-216.25" rx="27" ry="18"/>
+<text text-anchor="middle" x="1056.07" y="-211.2" font-family="Times New Roman,serif" font-size="14.00" fill="white">...</text>
+</g>
+<!-- MEM_TOP->MEM_ALIASDOTS -->
+<g id="edge35" class="edge">
+<title>MEM_TOP->MEM_ALIASDOTS</title>
+<path fill="none" stroke="black" d="M1018.1,-309.64C1025.27,-292.18 1036.52,-264.82 1044.91,-244.4"/>
+<polygon fill="black" stroke="black" points="1048.09,-245.86 1048.66,-235.28 1041.62,-243.2 1048.09,-245.86"/>
+</g>
+<!-- MEM_ALIASN -->
+<g id="node22" class="node">
+<title>MEM_ALIASN</title>
+<ellipse fill="blue" stroke="black" cx="1146.07" cy="-216.25" rx="20.13" ry="20.13"/>
+<text text-anchor="middle" x="1146.07" y="-211.2" font-family="Times New Roman,serif" font-size="14.00" fill="white">#n</text>
+</g>
+<!-- MEM_TOP->MEM_ALIASN -->
+<g id="edge36" class="edge">
+<title>MEM_TOP->MEM_ALIASN</title>
+<path fill="none" stroke="black" d="M1030.12,-311.29C1054.2,-291.76 1095.67,-258.13 1121.94,-236.82"/>
+<polygon fill="black" stroke="black" points="1124.13,-239.55 1129.69,-230.53 1119.72,-234.11 1124.13,-239.55"/>
+</g>
+<!-- MEM_ALIAS1->MEM_ALIASDOTS -->
+<!-- MEM_BOT -->
+<g id="node23" class="node">
+<title>MEM_BOT</title>
+<ellipse fill="blue" stroke="black" cx="1011.07" cy="-104.75" rx="43.67" ry="18"/>
+<text text-anchor="start" x="987.07" y="-100.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00" fill="white">⊥</text>
+<text text-anchor="start" x="1002.82" y="-100.7" font-family="Times New Roman,serif" font-size="14.00" fill="white">:mem</text>
+</g>
+<!-- MEM_ALIAS1->MEM_BOT -->
+<g id="edge37" class="edge">
+<title>MEM_ALIAS1->MEM_BOT</title>
+<path fill="none" stroke="black" d="M973.5,-197.17C980.63,-179.82 991.49,-153.39 999.7,-133.4"/>
+<polygon fill="black" stroke="black" points="1002.93,-134.75 1003.5,-124.17 996.46,-132.09 1002.93,-134.75"/>
+</g>
+<!-- MEM_ALIASDOTS->MEM_ALIASN -->
+<!-- MEM_ALIASDOTS->MEM_BOT -->
+<g id="edge38" class="edge">
+<title>MEM_ALIASDOTS->MEM_BOT</title>
+<path fill="none" stroke="black" d="M1049.23,-198.62C1042.14,-181.35 1030.92,-154.05 1022.48,-133.51"/>
+<polygon fill="black" stroke="black" points="1025.73,-132.22 1018.69,-124.3 1019.25,-134.88 1025.73,-132.22"/>
+</g>
+<!-- MEM_ALIASN->MEM_BOT -->
+<g id="edge39" class="edge">
+<title>MEM_ALIASN->MEM_BOT</title>
+<path fill="none" stroke="black" d="M1130.58,-202.69C1108.31,-184.62 1066.85,-151 1039.11,-128.49"/>
+<polygon fill="black" stroke="black" points="1041.42,-125.86 1031.45,-122.28 1037.01,-131.3 1041.42,-125.86"/>
+</g>
+<!-- MEM_BOT->BOT -->
+<g id="edge40" class="edge">
+<title>MEM_BOT->BOT</title>
+<path fill="none" stroke="black" d="M972.45,-95.85C893.9,-79.78 716.82,-43.55 644.13,-28.68"/>
+<polygon fill="black" stroke="black" points="644.98,-25.28 634.48,-26.71 643.58,-32.14 644.98,-25.28"/>
+</g>
+<!-- TUPLE1 -->
+<g id="node25" class="node">
+<title>TUPLE1</title>
+<polygon fill="none" stroke="none" points="1263.07,-242.75 1209.07,-242.75 1209.07,-189.75 1263.07,-189.75 1263.07,-242.75"/>
+<polygon fill="pink" stroke="none" points="1217.32,-216.25 1217.32,-238.75 1254.82,-238.75 1254.82,-216.25 1217.32,-216.25"/>
+<polygon fill="none" stroke="black" points="1217.32,-216.25 1217.32,-238.75 1254.82,-238.75 1254.82,-216.25 1217.32,-216.25"/>
+<text text-anchor="start" x="1220.32" y="-222.45" font-family="Times New Roman,serif" font-size="14.00">Tuple</text>
+<polygon fill="black" stroke="none" points="1217.32,-193.75 1217.32,-216.25 1254.82,-216.25 1254.82,-193.75 1217.32,-193.75"/>
+<polygon fill="none" stroke="black" points="1217.32,-193.75 1217.32,-216.25 1254.82,-216.25 1254.82,-193.75 1217.32,-193.75"/>
+<text text-anchor="start" x="1224.44" y="-199.95" font-family="Times New Roman,serif" font-size="14.00" fill="white">type</text>
+</g>
+<!-- TUPLE_TOP->TUPLE1 -->
+<g id="edge44" class="edge">
+<title>TUPLE_TOP->TUPLE1</title>
+<path fill="none" stroke="black" d="M1276.57,-309.64C1269.92,-294.48 1260.01,-271.87 1251.66,-252.81"/>
+<polygon fill="black" stroke="black" points="1254.91,-251.51 1247.69,-243.76 1248.5,-254.32 1254.91,-251.51"/>
+</g>
+<!-- TUPLE2 -->
+<g id="node26" class="node">
+<title>TUPLE2</title>
+<polygon fill="none" stroke="none" points="1360.07,-254 1306.07,-254 1306.07,-178.5 1360.07,-178.5 1360.07,-254"/>
+<polygon fill="pink" stroke="none" points="1314.32,-227.5 1314.32,-250 1351.82,-250 1351.82,-227.5 1314.32,-227.5"/>
+<polygon fill="none" stroke="black" points="1314.32,-227.5 1314.32,-250 1351.82,-250 1351.82,-227.5 1314.32,-227.5"/>
+<text text-anchor="start" x="1317.32" y="-233.7" font-family="Times New Roman,serif" font-size="14.00">Tuple</text>
+<polygon fill="black" stroke="none" points="1314.32,-205 1314.32,-227.5 1351.82,-227.5 1351.82,-205 1314.32,-205"/>
+<polygon fill="none" stroke="black" points="1314.32,-205 1314.32,-227.5 1351.82,-227.5 1351.82,-205 1314.32,-205"/>
+<text text-anchor="start" x="1321.44" y="-211.2" font-family="Times New Roman,serif" font-size="14.00" fill="white">type</text>
+<polygon fill="black" stroke="none" points="1314.32,-182.5 1314.32,-205 1351.82,-205 1351.82,-182.5 1314.32,-182.5"/>
+<polygon fill="none" stroke="black" points="1314.32,-182.5 1314.32,-205 1351.82,-205 1351.82,-182.5 1314.32,-182.5"/>
+<text text-anchor="start" x="1321.44" y="-188.7" font-family="Times New Roman,serif" font-size="14.00" fill="white">type</text>
+</g>
+<!-- TUPLE_TOP->TUPLE2 -->
+<g id="edge45" class="edge">
+<title>TUPLE_TOP->TUPLE2</title>
+<path fill="none" stroke="black" d="M1291.72,-309.64C1297.2,-297.4 1304.85,-280.3 1312.09,-264.14"/>
+<polygon fill="black" stroke="black" points="1315.24,-265.65 1316.13,-255.09 1308.85,-262.79 1315.24,-265.65"/>
+</g>
+<!-- TUPLEN -->
+<g id="node27" class="node">
+<title>TUPLEN</title>
+<polygon fill="none" stroke="none" points="1457.07,-265.25 1403.07,-265.25 1403.07,-167.25 1457.07,-167.25 1457.07,-265.25"/>
+<polygon fill="pink" stroke="none" points="1411.32,-238.75 1411.32,-261.25 1448.82,-261.25 1448.82,-238.75 1411.32,-238.75"/>
+<polygon fill="none" stroke="black" points="1411.32,-238.75 1411.32,-261.25 1448.82,-261.25 1448.82,-238.75 1411.32,-238.75"/>
+<text text-anchor="start" x="1414.32" y="-244.95" font-family="Times New Roman,serif" font-size="14.00">Tuple</text>
+<polygon fill="black" stroke="none" points="1411.32,-216.25 1411.32,-238.75 1448.82,-238.75 1448.82,-216.25 1411.32,-216.25"/>
+<polygon fill="none" stroke="black" points="1411.32,-216.25 1411.32,-238.75 1448.82,-238.75 1448.82,-216.25 1411.32,-216.25"/>
+<text text-anchor="start" x="1418.44" y="-222.45" font-family="Times New Roman,serif" font-size="14.00" fill="white">type</text>
+<polygon fill="black" stroke="none" points="1411.32,-193.75 1411.32,-216.25 1448.82,-216.25 1448.82,-193.75 1411.32,-193.75"/>
+<polygon fill="none" stroke="black" points="1411.32,-193.75 1411.32,-216.25 1448.82,-216.25 1448.82,-193.75 1411.32,-193.75"/>
+<text text-anchor="start" x="1424.44" y="-199.95" font-family="Times New Roman,serif" font-size="14.00" fill="white">...</text>
+<polygon fill="black" stroke="none" points="1411.32,-171.25 1411.32,-193.75 1448.82,-193.75 1448.82,-171.25 1411.32,-171.25"/>
+<polygon fill="none" stroke="black" points="1411.32,-171.25 1411.32,-193.75 1448.82,-193.75 1448.82,-171.25 1411.32,-171.25"/>
+<text text-anchor="start" x="1418.44" y="-177.45" font-family="Times New Roman,serif" font-size="14.00" fill="white">type</text>
+</g>
+<!-- TUPLE_TOP->TUPLEN -->
+<g id="edge46" class="edge">
+<title>TUPLE_TOP->TUPLEN</title>
+<path fill="none" stroke="black" d="M1304.37,-311.52C1327.53,-294.15 1365.84,-265.42 1394.09,-244.23"/>
+<polygon fill="black" stroke="black" points="1396.14,-247.07 1402.04,-238.27 1391.94,-241.47 1396.14,-247.07"/>
+</g>
+<!-- TUPLE_BOT -->
+<g id="node28" class="node">
+<title>TUPLE_BOT</title>
+<ellipse fill="pink" stroke="black" cx="1284.07" cy="-104.75" rx="42.65" ry="18"/>
+<text text-anchor="start" x="1260.82" y="-100.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊥</text>
+<text text-anchor="start" x="1276.57" y="-100.7" font-family="Times New Roman,serif" font-size="14.00">:tuple</text>
+</g>
+<!-- TUPLE1->TUPLE_BOT -->
+<g id="edge47" class="edge">
+<title>TUPLE1->TUPLE_BOT</title>
+<path fill="none" stroke="black" d="M1247.2,-189.85C1254.68,-172.8 1264.52,-150.34 1272.15,-132.93"/>
+<polygon fill="black" stroke="black" points="1275.16,-134.78 1275.97,-124.21 1268.75,-131.97 1275.16,-134.78"/>
+</g>
+<!-- TUPLE2->TUPLE_BOT -->
+<g id="edge48" class="edge">
+<title>TUPLE2->TUPLE_BOT</title>
+<path fill="none" stroke="black" d="M1316.75,-178.79C1310.07,-163.86 1302.48,-146.89 1296.29,-133.07"/>
+<polygon fill="black" stroke="black" points="1299.57,-131.83 1292.3,-124.13 1293.19,-134.69 1299.57,-131.83"/>
+</g>
+<!-- TUPLEN->TUPLE_BOT -->
+<g id="edge49" class="edge">
+<title>TUPLEN->TUPLE_BOT</title>
+<path fill="none" stroke="black" d="M1403.29,-195.16C1377.77,-176.03 1339.46,-147.29 1313.2,-127.59"/>
+<polygon fill="black" stroke="black" points="1315.42,-124.89 1305.32,-121.69 1311.22,-130.49 1315.42,-124.89"/>
+</g>
+<!-- TUPLE_BOT->BOT -->
+<g id="edge50" class="edge">
+<title>TUPLE_BOT->BOT</title>
+<path fill="none" stroke="black" d="M1243.29,-98.8C1120.5,-83.88 755.84,-39.59 644.63,-26.08"/>
+<polygon fill="black" stroke="black" points="645.07,-22.61 634.72,-24.88 644.23,-29.56 645.07,-22.61"/>
+</g>
+</g>
+</svg>
|
