diff options
| author | Cliff Click <cliffc@acm.org> | 2024-11-27 11:29:33 -0800 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2025-01-15 15:07:30 -0800 |
| commit | 65454d77eba95d7f814336377f78d9f42c7455f9 (patch) | |
| tree | 976efed369498c7e976fe5098f6a406fed81cb53 /chapter12/docs | |
| parent | 34766f1a2e9e60626eb1bd5a08140fc41a3770c8 (diff) | |
| download | Simple-65454d77eba95d7f814336377f78d9f42c7455f9.tar.gz Simple-65454d77eba95d7f814336377f78d9f42c7455f9.zip | |
More lattice docs reworks
Diffstat (limited to 'chapter12/docs')
| -rw-r--r-- | chapter12/docs/lattice.gv | 182 | ||||
| -rw-r--r-- | chapter12/docs/lattice.svg | 598 |
2 files changed, 780 insertions, 0 deletions
diff --git a/chapter12/docs/lattice.gv b/chapter12/docs/lattice.gv new file mode 100644 index 00000000..eec7cc1d --- /dev/null +++ b/chapter12/docs/lattice.gv @@ -0,0 +1,182 @@ +digraph Lattice { + compound = true; + // Define nodes + splines=false; + node [shape=circle, style=filled]; + nodesep=0.6; + + 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; + + // ---------------------- + // Integers + INT_TOP [label=<<B>⊤</B >:int>, fillcolor=lightblue, shape=oval]; + INT_BOT [label=<<B>⊥</B>:int>, fillcolor=lightblue, shape=oval]; + + INT_MINDOTS [label="...", fillcolor=lightblue, shape=oval]; + INT_ZERO [label="0" , fillcolor=lightblue]; + INT_MAXDOTS [label="...", fillcolor=lightblue, shape=oval]; + + TOP -> INT_TOP; + INT_TOP -> INT_MINDOTS; + INT_TOP -> INT_ZERO; + INT_TOP -> INT_MAXDOTS; + INT_MINDOTS -> INT_BOT; + INT_ZERO -> INT_BOT; + INT_MAXDOTS -> INT_BOT; + INT_BOT -> BOT; + + INT_MINDOTS -> INT_ZERO -> INT_MAXDOTS [style=invis]; + + // ---------------------- + // Integers + FLT_TOP [label=<<B>⊤</B >:flt>, fillcolor=aqua, shape=oval]; + FLT_BOT [label=<<B>⊥</B>:flt>, fillcolor=aqua, shape=oval]; + + FLT_MINDOTS [label="...", fillcolor=aqua, shape=oval]; + FLT_ZERO [label="0" , fillcolor=aqua]; + FLT_MAXDOTS [label="...", fillcolor=aqua, shape=oval]; + + TOP -> FLT_TOP; + FLT_TOP -> FLT_MINDOTS; + FLT_TOP -> FLT_ZERO; + FLT_TOP -> FLT_MAXDOTS; + FLT_MINDOTS -> FLT_BOT; + FLT_ZERO -> FLT_BOT; + FLT_MAXDOTS -> FLT_BOT; + FLT_BOT -> BOT; + + FLT_MINDOTS -> FLT_ZERO -> FLT_MAXDOTS [style=invis]; + + // ---------------------- + // 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_BOT [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> + >]; + + + TOP -> STRUCT_TOP; + STRUCT_TOP -> STRUCT_S1; + STRUCT_TOP -> STRUCT_S2; + STRUCT_TOP -> STRUCT_SN; + STRUCT_S1 -> STRUCT_BOT; + STRUCT_S2 -> STRUCT_BOT; + STRUCT_SN -> STRUCT_BOT; + STRUCT_BOT -> BOT; + + STRUCT_S1 -> STRUCT_S2 -> STRUCT_SN [style=invis]; + + // ---------------------- + // Memory + MEM_TOP [label=<<B>⊤</B >:mem>, fillcolor=blue, fontcolor=white, shape=oval]; + MEM_BOT [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]; + + TOP -> MEM_TOP; + MEM_TOP -> MEM_ALIAS1; + MEM_TOP -> MEM_ALIASDOTS; + MEM_TOP -> MEM_ALIASN; + MEM_ALIAS1 -> MEM_BOT; + MEM_ALIASDOTS -> MEM_BOT; + MEM_ALIASN -> MEM_BOT; + MEM_BOT -> BOT; + + MEM_ALIAS1 -> MEM_ALIASDOTS -> MEM_ALIASN [style=invis]; + + // ---------------------- + // Tuples + + TUPLE_TOP [label=<<B>⊤</B >:tuple>, fillcolor=pink, shape=oval]; + TUPLE_BOT [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> + >]; + + + 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; FLT_TOP; XCTRL; STRUCT_TOP; MEM_TOP; TUPLE_TOP} + {rank=same; INT_MINDOTS; INT_ZERO; INT_MAXDOTS; + FLT_MINDOTS; FLT_ZERO; FLT_MAXDOTS; + STRUCT_S1; STRUCT_S2; STRUCT_SN; + MEM_ALIAS1; MEM_ALIASDOTS; MEM_ALIASN;} + {rank=same; INT_BOT; FLT_BOT; CTRL; STRUCT_BOT; MEM_BOT; TUPLE_BOT} + {rank=same; BOT;} +} diff --git a/chapter12/docs/lattice.svg b/chapter12/docs/lattice.svg new file mode 100644 index 00000000..1bb4f692 --- /dev/null +++ b/chapter12/docs/lattice.svg @@ -0,0 +1,598 @@ +<?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="1602pt" height="440pt"
+ viewBox="0.00 0.00 1601.51 440.50" 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 436.5)">
+<title>Lattice</title>
+<polygon fill="white" stroke="none" points="-4,4 -4,-436.5 1597.51,-436.5 1597.51,4 -4,4"/>
+<!-- TOP -->
+<g id="node1" class="node">
+<title>TOP</title>
+<ellipse fill="black" stroke="black" cx="630.51" cy="-411.37" rx="21.12" ry="21.12"/>
+<text text-anchor="start" x="622.63" y="-406.95" 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="36.51" cy="-327.75" rx="36.51" ry="18"/>
+<text text-anchor="start" x="17.76" y="-323.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊤</text>
+<text text-anchor="start" x="33.51" 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="M609.37,-407.47C523.96,-395.73 203.25,-351.66 82.7,-335.1"/>
+<polygon fill="black" stroke="black" points="83.22,-331.63 72.84,-333.74 82.27,-338.57 83.22,-331.63"/>
+</g>
+<!-- INT_TOP -->
+<g id="node5" class="node">
+<title>INT_TOP</title>
+<ellipse fill="lightblue" stroke="black" cx="226.51" cy="-327.75" rx="33.95" ry="18"/>
+<text text-anchor="start" x="209.63" y="-323.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊤</text>
+<text text-anchor="start" x="225.38" 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="M609.64,-406.16C546.23,-393.34 354.92,-354.69 269.04,-337.34"/>
+<polygon fill="black" stroke="black" points="269.87,-333.94 259.37,-335.39 268.48,-340.8 269.87,-333.94"/>
+</g>
+<!-- FLT_TOP -->
+<g id="node10" class="node">
+<title>FLT_TOP</title>
+<ellipse fill="aqua" stroke="black" cx="489.51" cy="-327.75" rx="32.41" ry="18"/>
+<text text-anchor="start" x="473.76" y="-323.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊤</text>
+<text text-anchor="start" x="489.51" y="-323.7" font-family="Times New Roman,serif" font-size="14.00">:flt</text>
+</g>
+<!-- TOP->FLT_TOP -->
+<g id="edge14" class="edge">
+<title>TOP->FLT_TOP</title>
+<path fill="none" stroke="black" d="M612.36,-399.87C589.31,-386.52 549.15,-363.27 521.04,-347"/>
+<polygon fill="black" stroke="black" points="523,-344.09 512.59,-342.11 519.49,-350.15 523,-344.09"/>
+</g>
+<!-- PTR -->
+<g id="node15" class="node">
+<title>PTR</title>
+<polygon fill="none" stroke="none" points="657.51,-354.25 603.51,-354.25 603.51,-301.25 657.51,-301.25 657.51,-354.25"/>
+<polygon fill="green" stroke="none" points="612.51,-327.75 612.51,-350.25 648.51,-350.25 648.51,-327.75 612.51,-327.75"/>
+<polygon fill="none" stroke="black" points="612.51,-327.75 612.51,-350.25 648.51,-350.25 648.51,-327.75 612.51,-327.75"/>
+<text text-anchor="start" x="619.63" y="-333.95" font-family="Times New Roman,serif" font-size="14.00" fill="white">*ptr</text>
+<polygon fill="lightgreen" stroke="none" points="612.51,-305.25 612.51,-327.75 648.51,-327.75 648.51,-305.25 612.51,-305.25"/>
+<polygon fill="none" stroke="black" points="612.51,-305.25 612.51,-327.75 648.51,-327.75 648.51,-305.25 612.51,-305.25"/>
+<text text-anchor="start" x="615.51" y="-311.45" font-family="Times New Roman,serif" font-size="14.00">struct</text>
+</g>
+<!-- TOP->PTR -->
+<g id="edge24" class="edge">
+<title>TOP->PTR</title>
+<path fill="none" stroke="black" d="M630.51,-389.78C630.51,-382.39 630.51,-373.83 630.51,-365.49"/>
+<polygon fill="black" stroke="black" points="634.01,-365.52 630.51,-355.52 627.01,-365.52 634.01,-365.52"/>
+</g>
+<!-- STRUCT_TOP -->
+<g id="node17" class="node">
+<title>STRUCT_TOP</title>
+<ellipse fill="lightgreen" stroke="black" cx="806.51" cy="-327.75" rx="44.7" ry="18"/>
+<text text-anchor="start" x="781.76" y="-323.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊤</text>
+<text text-anchor="start" x="797.51" y="-323.7" font-family="Times New Roman,serif" font-size="14.00">:struct</text>
+</g>
+<!-- TOP->STRUCT_TOP -->
+<g id="edge27" class="edge">
+<title>TOP->STRUCT_TOP</title>
+<path fill="none" stroke="black" d="M649.68,-401.48C677.9,-388.39 731.22,-363.66 767.79,-346.71"/>
+<polygon fill="black" stroke="black" points="769.12,-349.95 776.71,-342.57 766.17,-343.6 769.12,-349.95"/>
+</g>
+<!-- MEM_TOP -->
+<g id="node22" class="node">
+<title>MEM_TOP</title>
+<ellipse fill="blue" stroke="black" cx="1147.51" cy="-327.75" rx="43.67" ry="18"/>
+<text text-anchor="start" x="1123.51" y="-323.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00" fill="white">⊤</text>
+<text text-anchor="start" x="1139.26" y="-323.7" font-family="Times New Roman,serif" font-size="14.00" fill="white">:mem</text>
+</g>
+<!-- TOP->MEM_TOP -->
+<g id="edge37" class="edge">
+<title>TOP->MEM_TOP</title>
+<path fill="none" stroke="black" d="M651.42,-407.07C726.59,-395.2 984.56,-354.47 1095.79,-336.91"/>
+<polygon fill="black" stroke="black" points="1096.21,-340.39 1105.54,-335.37 1095.12,-333.48 1096.21,-340.39"/>
+</g>
+<!-- TUPLE_TOP -->
+<g id="node27" class="node">
+<title>TUPLE_TOP</title>
+<ellipse fill="pink" stroke="black" cx="1420.51" cy="-327.75" rx="42.65" ry="18"/>
+<text text-anchor="start" x="1397.26" y="-323.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊤</text>
+<text text-anchor="start" x="1413.01" y="-323.7" font-family="Times New Roman,serif" font-size="14.00">:tuple</text>
+</g>
+<!-- TOP->TUPLE_TOP -->
+<g id="edge47" class="edge">
+<title>TOP->TUPLE_TOP</title>
+<path fill="none" stroke="black" d="M651.64,-408.19C755.41,-397.47 1212.34,-350.26 1368.21,-334.15"/>
+<polygon fill="black" stroke="black" points="1368.24,-337.67 1377.83,-333.16 1367.52,-330.7 1368.24,-337.67"/>
+</g>
+<!-- BOT -->
+<g id="node2" class="node">
+<title>BOT</title>
+<ellipse fill="black" stroke="black" cx="630.51" cy="-21.12" rx="21.12" ry="21.12"/>
+<text text-anchor="start" x="622.63" 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="36.51" cy="-104.75" rx="36.51" ry="18"/>
+<text text-anchor="start" x="17.76" y="-100.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊥</text>
+<text text-anchor="start" x="33.51" 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="M36.51,-309.5C36.51,-271.02 36.51,-181.25 36.51,-134.4"/>
+<polygon fill="black" stroke="black" points="40.01,-134.45 36.51,-124.45 33.01,-134.45 40.01,-134.45"/>
+</g>
+<!-- CTRL->BOT -->
+<g id="edge3" class="edge">
+<title>CTRL->BOT</title>
+<path fill="none" stroke="black" d="M71.45,-98.95C177.66,-84.35 495.68,-40.65 598.24,-26.56"/>
+<polygon fill="black" stroke="black" points="598.46,-30.06 607.89,-25.23 597.5,-23.13 598.46,-30.06"/>
+</g>
+<!-- INT_MINDOTS -->
+<g id="node7" class="node">
+<title>INT_MINDOTS</title>
+<ellipse fill="lightblue" stroke="black" cx="89.51" cy="-216.25" rx="27" ry="18"/>
+<text text-anchor="middle" x="89.51" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">...</text>
+</g>
+<!-- INT_TOP->INT_MINDOTS -->
+<g id="edge5" class="edge">
+<title>INT_TOP->INT_MINDOTS</title>
+<path fill="none" stroke="black" d="M208.32,-312.21C184.36,-293.06 142.09,-259.28 114.97,-237.6"/>
+<polygon fill="black" stroke="black" points="117.24,-234.93 107.24,-231.42 112.87,-240.4 117.24,-234.93"/>
+</g>
+<!-- INT_ZERO -->
+<g id="node8" class="node">
+<title>INT_ZERO</title>
+<ellipse fill="lightblue" stroke="black" cx="177.51" cy="-216.25" rx="18" ry="18"/>
+<text text-anchor="middle" x="177.51" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">0</text>
+</g>
+<!-- INT_TOP->INT_ZERO -->
+<g id="edge6" class="edge">
+<title>INT_TOP->INT_ZERO</title>
+<path fill="none" stroke="black" d="M219.07,-310.12C211.12,-292.37 198.43,-264.01 189.16,-243.29"/>
+<polygon fill="black" stroke="black" points="192.44,-242.05 185.16,-234.35 186.05,-244.91 192.44,-242.05"/>
+</g>
+<!-- INT_MAXDOTS -->
+<g id="node9" class="node">
+<title>INT_MAXDOTS</title>
+<ellipse fill="lightblue" stroke="black" cx="265.51" cy="-216.25" rx="27" ry="18"/>
+<text text-anchor="middle" x="265.51" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">...</text>
+</g>
+<!-- INT_TOP->INT_MAXDOTS -->
+<g id="edge7" class="edge">
+<title>INT_TOP->INT_MAXDOTS</title>
+<path fill="none" stroke="black" d="M232.6,-309.64C238.76,-292.36 248.36,-265.39 255.61,-245.04"/>
+<polygon fill="black" stroke="black" points="258.89,-246.26 258.95,-235.66 252.3,-243.91 258.89,-246.26"/>
+</g>
+<!-- INT_BOT -->
+<g id="node6" class="node">
+<title>INT_BOT</title>
+<ellipse fill="lightblue" stroke="black" cx="226.51" cy="-104.75" rx="33.95" ry="18"/>
+<text text-anchor="start" x="209.63" y="-100.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊥</text>
+<text text-anchor="start" x="225.38" y="-100.7" font-family="Times New Roman,serif" font-size="14.00">:int</text>
+</g>
+<!-- INT_BOT->BOT -->
+<g id="edge11" class="edge">
+<title>INT_BOT->BOT</title>
+<path fill="none" stroke="black" d="M257.87,-97.41C333.02,-82.23 522.71,-43.9 598.5,-28.59"/>
+<polygon fill="black" stroke="black" points="599.06,-32.05 608.17,-26.64 597.68,-25.19 599.06,-32.05"/>
+</g>
+<!-- INT_MINDOTS->INT_BOT -->
+<g id="edge8" class="edge">
+<title>INT_MINDOTS->INT_BOT</title>
+<path fill="none" stroke="black" d="M106.31,-201.82C129.55,-183.25 171.76,-149.5 199.47,-127.36"/>
+<polygon fill="black" stroke="black" points="201.45,-130.25 207.08,-121.28 197.08,-124.79 201.45,-130.25"/>
+</g>
+<!-- INT_MINDOTS->INT_ZERO -->
+<!-- INT_ZERO->INT_BOT -->
+<g id="edge9" class="edge">
+<title>INT_ZERO->INT_BOT</title>
+<path fill="none" stroke="black" d="M184.53,-199.56C192.29,-182.22 204.94,-153.96 214.32,-132.98"/>
+<polygon fill="black" stroke="black" points="217.51,-134.42 218.4,-123.87 211.12,-131.56 217.51,-134.42"/>
+</g>
+<!-- INT_ZERO->INT_MAXDOTS -->
+<!-- INT_MAXDOTS->INT_BOT -->
+<g id="edge10" class="edge">
+<title>INT_MAXDOTS->INT_BOT</title>
+<path fill="none" stroke="black" d="M259.59,-198.62C253.44,-181.35 243.71,-154.05 236.4,-133.51"/>
+<polygon fill="black" stroke="black" points="239.78,-132.57 233.12,-124.32 233.18,-134.92 239.78,-132.57"/>
+</g>
+<!-- FLT_MINDOTS -->
+<g id="node12" class="node">
+<title>FLT_MINDOTS</title>
+<ellipse fill="aqua" stroke="black" cx="362.51" cy="-216.25" rx="27" ry="18"/>
+<text text-anchor="middle" x="362.51" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">...</text>
+</g>
+<!-- FLT_TOP->FLT_MINDOTS -->
+<g id="edge15" class="edge">
+<title>FLT_TOP->FLT_MINDOTS</title>
+<path fill="none" stroke="black" d="M472.38,-311.98C450.43,-293.06 412.23,-260.12 387.15,-238.5"/>
+<polygon fill="black" stroke="black" points="389.57,-235.96 379.71,-232.08 385,-241.26 389.57,-235.96"/>
+</g>
+<!-- FLT_ZERO -->
+<g id="node13" class="node">
+<title>FLT_ZERO</title>
+<ellipse fill="aqua" stroke="black" cx="450.51" cy="-216.25" rx="18" ry="18"/>
+<text text-anchor="middle" x="450.51" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">0</text>
+</g>
+<!-- FLT_TOP->FLT_ZERO -->
+<g id="edge16" class="edge">
+<title>FLT_TOP->FLT_ZERO</title>
+<path fill="none" stroke="black" d="M483.42,-309.64C477.19,-292.16 467.43,-264.76 460.16,-244.33"/>
+<polygon fill="black" stroke="black" points="463.47,-243.2 456.81,-234.95 456.87,-245.54 463.47,-243.2"/>
+</g>
+<!-- FLT_MAXDOTS -->
+<g id="node14" class="node">
+<title>FLT_MAXDOTS</title>
+<ellipse fill="aqua" stroke="black" cx="538.51" cy="-216.25" rx="27" ry="18"/>
+<text text-anchor="middle" x="538.51" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">...</text>
+</g>
+<!-- FLT_TOP->FLT_MAXDOTS -->
+<g id="edge17" class="edge">
+<title>FLT_TOP->FLT_MAXDOTS</title>
+<path fill="none" stroke="black" d="M496.95,-310.12C504.76,-292.67 517.15,-264.98 526.38,-244.36"/>
+<polygon fill="black" stroke="black" points="529.49,-245.97 530.38,-235.42 523.1,-243.12 529.49,-245.97"/>
+</g>
+<!-- FLT_BOT -->
+<g id="node11" class="node">
+<title>FLT_BOT</title>
+<ellipse fill="aqua" stroke="black" cx="489.51" cy="-104.75" rx="32.41" ry="18"/>
+<text text-anchor="start" x="473.76" y="-100.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊥</text>
+<text text-anchor="start" x="489.51" y="-100.7" font-family="Times New Roman,serif" font-size="14.00">:flt</text>
+</g>
+<!-- FLT_BOT->BOT -->
+<g id="edge21" class="edge">
+<title>FLT_BOT->BOT</title>
+<path fill="none" stroke="black" d="M511.23,-91.17C535.78,-76.96 575.81,-53.79 602.65,-38.25"/>
+<polygon fill="black" stroke="black" points="604.36,-41.31 611.26,-33.27 600.85,-35.25 604.36,-41.31"/>
+</g>
+<!-- FLT_MINDOTS->FLT_BOT -->
+<g id="edge18" class="edge">
+<title>FLT_MINDOTS->FLT_BOT</title>
+<path fill="none" stroke="black" d="M378.59,-201.38C400.21,-182.74 438.85,-149.43 464.33,-127.46"/>
+<polygon fill="black" stroke="black" points="466.31,-130.37 471.6,-121.19 461.74,-125.07 466.31,-130.37"/>
+</g>
+<!-- FLT_MINDOTS->FLT_ZERO -->
+<!-- FLT_ZERO->FLT_BOT -->
+<g id="edge19" class="edge">
+<title>FLT_ZERO->FLT_BOT</title>
+<path fill="none" stroke="black" d="M456.26,-199.09C462.41,-181.82 472.27,-154.14 479.66,-133.39"/>
+<polygon fill="black" stroke="black" points="482.91,-134.71 482.97,-124.12 476.31,-132.36 482.91,-134.71"/>
+</g>
+<!-- FLT_ZERO->FLT_MAXDOTS -->
+<!-- FLT_MAXDOTS->FLT_BOT -->
+<g id="edge20" class="edge">
+<title>FLT_MAXDOTS->FLT_BOT</title>
+<path fill="none" stroke="black" d="M531.07,-198.62C523.26,-181.17 510.87,-153.48 501.64,-132.86"/>
+<polygon fill="black" stroke="black" points="504.92,-131.62 497.64,-123.92 498.53,-134.47 504.92,-131.62"/>
+</g>
+<!-- PTR0 -->
+<g id="node16" class="node">
+<title>PTR0</title>
+<polygon fill="none" stroke="none" points="657.51,-131.25 603.51,-131.25 603.51,-78.25 657.51,-78.25 657.51,-131.25"/>
+<polygon fill="green" stroke="none" points="612.51,-104.75 612.51,-127.25 648.51,-127.25 648.51,-104.75 612.51,-104.75"/>
+<polygon fill="none" stroke="black" points="612.51,-104.75 612.51,-127.25 648.51,-127.25 648.51,-104.75 612.51,-104.75"/>
+<text text-anchor="start" x="616.63" y="-110.95" font-family="Times New Roman,serif" font-size="14.00" fill="white">*ptr?</text>
+<polygon fill="lightgreen" stroke="none" points="612.51,-82.25 612.51,-104.75 648.51,-104.75 648.51,-82.25 612.51,-82.25"/>
+<polygon fill="none" stroke="black" points="612.51,-82.25 612.51,-104.75 648.51,-104.75 648.51,-82.25 612.51,-82.25"/>
+<text text-anchor="start" x="615.51" y="-88.45" font-family="Times New Roman,serif" font-size="14.00">struct</text>
+</g>
+<!-- PTR->PTR0 -->
+<g id="edge25" class="edge">
+<title>PTR->PTR0</title>
+<path fill="none" stroke="black" d="M630.51,-301.29C630.51,-261.89 630.51,-187.62 630.51,-142.52"/>
+<polygon fill="black" stroke="black" points="634.01,-142.68 630.51,-132.68 627.01,-142.68 634.01,-142.68"/>
+</g>
+<!-- PTR0->BOT -->
+<g id="edge26" class="edge">
+<title>PTR0->BOT</title>
+<path fill="none" stroke="black" d="M630.51,-78.37C630.51,-70.63 630.51,-62.03 630.51,-53.93"/>
+<polygon fill="black" stroke="black" points="634.01,-54.09 630.51,-44.09 627.01,-54.09 634.01,-54.09"/>
+</g>
+<!-- STRUCT_S1 -->
+<g id="node19" class="node">
+<title>STRUCT_S1</title>
+<polygon fill="none" stroke="none" points="781.38,-234.25 695.63,-234.25 695.63,-198.25 781.38,-198.25 781.38,-234.25"/>
+<polygon fill="lightgreen" stroke="none" points="703.63,-205 703.63,-227.5 734.38,-227.5 734.38,-205 703.63,-205"/>
+<polygon fill="none" stroke="black" points="703.63,-205 703.63,-227.5 734.38,-227.5 734.38,-205 703.63,-205"/>
+<text text-anchor="start" x="706.63" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">field</text>
+<defs>
+<linearGradient id="l_0" gradientUnits="userSpaceOnUse" x1="740.1" y1="-224.2" x2="767.67" 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="734.38,-205 734.38,-227.5 773.38,-227.5 773.38,-205 734.38,-205"/>
+<polygon fill="none" stroke="black" points="734.38,-205 734.38,-227.5 773.38,-227.5 773.38,-205 734.38,-205"/>
+<text text-anchor="start" x="737.38" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">int/ptr</text>
+</g>
+<!-- STRUCT_TOP->STRUCT_S1 -->
+<g id="edge28" class="edge">
+<title>STRUCT_TOP->STRUCT_S1</title>
+<path fill="none" stroke="black" d="M796.18,-310.12C785.25,-292.51 767.83,-264.46 754.99,-243.79"/>
+<polygon fill="black" stroke="black" points="757.98,-241.97 749.73,-235.32 752.03,-245.66 757.98,-241.97"/>
+</g>
+<!-- STRUCT_S2 -->
+<g id="node20" class="node">
+<title>STRUCT_S2</title>
+<polygon fill="none" stroke="none" points="910.38,-242.75 824.63,-242.75 824.63,-189.75 910.38,-189.75 910.38,-242.75"/>
+<polygon fill="lightgreen" stroke="none" points="832.63,-216.25 832.63,-238.75 863.38,-238.75 863.38,-216.25 832.63,-216.25"/>
+<polygon fill="none" stroke="black" points="832.63,-216.25 832.63,-238.75 863.38,-238.75 863.38,-216.25 832.63,-216.25"/>
+<text text-anchor="start" x="835.63" y="-222.45" font-family="Times New Roman,serif" font-size="14.00">field</text>
+<defs>
+<linearGradient id="l_1" gradientUnits="userSpaceOnUse" x1="869.1" y1="-235.45" x2="896.67" 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="863.38,-216.25 863.38,-238.75 902.38,-238.75 902.38,-216.25 863.38,-216.25"/>
+<polygon fill="none" stroke="black" points="863.38,-216.25 863.38,-238.75 902.38,-238.75 902.38,-216.25 863.38,-216.25"/>
+<text text-anchor="start" x="866.38" y="-222.45" font-family="Times New Roman,serif" font-size="14.00">int/ptr</text>
+<polygon fill="lightgreen" stroke="none" points="832.63,-193.75 832.63,-216.25 863.38,-216.25 863.38,-193.75 832.63,-193.75"/>
+<polygon fill="none" stroke="black" points="832.63,-193.75 832.63,-216.25 863.38,-216.25 863.38,-193.75 832.63,-193.75"/>
+<text text-anchor="start" x="835.63" y="-199.95" font-family="Times New Roman,serif" font-size="14.00">field</text>
+<defs>
+<linearGradient id="l_2" gradientUnits="userSpaceOnUse" x1="869.1" y1="-212.95" x2="896.67" 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="863.38,-193.75 863.38,-216.25 902.38,-216.25 902.38,-193.75 863.38,-193.75"/>
+<polygon fill="none" stroke="black" points="863.38,-193.75 863.38,-216.25 902.38,-216.25 902.38,-193.75 863.38,-193.75"/>
+<text text-anchor="start" x="866.38" y="-199.95" font-family="Times New Roman,serif" font-size="14.00">int/ptr</text>
+</g>
+<!-- STRUCT_TOP->STRUCT_S2 -->
+<g id="edge29" class="edge">
+<title>STRUCT_TOP->STRUCT_S2</title>
+<path fill="none" stroke="black" d="M815.77,-310.12C824.25,-294.9 837.07,-271.89 847.82,-252.58"/>
+<polygon fill="black" stroke="black" points="850.84,-254.36 852.65,-243.92 844.73,-250.95 850.84,-254.36"/>
+</g>
+<!-- STRUCT_SN -->
+<g id="node21" class="node">
+<title>STRUCT_SN</title>
+<polygon fill="none" stroke="none" points="1039.38,-254 953.63,-254 953.63,-178.5 1039.38,-178.5 1039.38,-254"/>
+<polygon fill="lightgreen" stroke="none" points="961.63,-227.5 961.63,-250 992.38,-250 992.38,-227.5 961.63,-227.5"/>
+<polygon fill="none" stroke="black" points="961.63,-227.5 961.63,-250 992.38,-250 992.38,-227.5 961.63,-227.5"/>
+<text text-anchor="start" x="964.63" y="-233.7" font-family="Times New Roman,serif" font-size="14.00">field</text>
+<defs>
+<linearGradient id="l_3" gradientUnits="userSpaceOnUse" x1="998.1" y1="-246.7" x2="1025.67" 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="992.38,-227.5 992.38,-250 1031.38,-250 1031.38,-227.5 992.38,-227.5"/>
+<polygon fill="none" stroke="black" points="992.38,-227.5 992.38,-250 1031.38,-250 1031.38,-227.5 992.38,-227.5"/>
+<text text-anchor="start" x="995.38" y="-233.7" font-family="Times New Roman,serif" font-size="14.00">int/ptr</text>
+<polygon fill="lightgreen" stroke="none" points="961.63,-205 961.63,-227.5 992.38,-227.5 992.38,-205 961.63,-205"/>
+<polygon fill="none" stroke="black" points="961.63,-205 961.63,-227.5 992.38,-227.5 992.38,-205 961.63,-205"/>
+<text text-anchor="start" x="967.63" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">...  </text>
+<defs>
+<linearGradient id="l_4" gradientUnits="userSpaceOnUse" x1="998.1" y1="-224.2" x2="1025.67" 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="992.38,-205 992.38,-227.5 1031.38,-227.5 1031.38,-205 992.38,-205"/>
+<polygon fill="none" stroke="black" points="992.38,-205 992.38,-227.5 1031.38,-227.5 1031.38,-205 992.38,-205"/>
+<text text-anchor="start" x="995.38" y="-211.2" font-family="Times New Roman,serif" font-size="14.00">int/ptr</text>
+<polygon fill="lightgreen" stroke="none" points="961.63,-182.5 961.63,-205 992.38,-205 992.38,-182.5 961.63,-182.5"/>
+<polygon fill="none" stroke="black" points="961.63,-182.5 961.63,-205 992.38,-205 992.38,-182.5 961.63,-182.5"/>
+<text text-anchor="start" x="964.63" y="-188.7" font-family="Times New Roman,serif" font-size="14.00">field</text>
+<defs>
+<linearGradient id="l_5" gradientUnits="userSpaceOnUse" x1="998.1" y1="-201.7" x2="1025.67" 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="992.38,-182.5 992.38,-205 1031.38,-205 1031.38,-182.5 992.38,-182.5"/>
+<polygon fill="none" stroke="black" points="992.38,-182.5 992.38,-205 1031.38,-205 1031.38,-182.5 992.38,-182.5"/>
+<text text-anchor="start" x="995.38" y="-188.7" font-family="Times New Roman,serif" font-size="14.00">int/ptr</text>
+</g>
+<!-- STRUCT_TOP->STRUCT_SN -->
+<g id="edge30" class="edge">
+<title>STRUCT_TOP->STRUCT_SN</title>
+<path fill="none" stroke="black" d="M831.35,-312.43C859.88,-295.99 907.49,-268.55 944.28,-247.35"/>
+<polygon fill="black" stroke="black" points="945.64,-250.61 952.55,-242.58 942.14,-244.54 945.64,-250.61"/>
+</g>
+<!-- STRUCT_BOT -->
+<g id="node18" class="node">
+<title>STRUCT_BOT</title>
+<ellipse fill="lightgreen" stroke="black" cx="806.51" cy="-104.75" rx="44.7" ry="18"/>
+<text text-anchor="start" x="781.76" y="-100.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊥</text>
+<text text-anchor="start" x="797.51" y="-100.7" font-family="Times New Roman,serif" font-size="14.00">:struct</text>
+</g>
+<!-- STRUCT_BOT->BOT -->
+<g id="edge34" class="edge">
+<title>STRUCT_BOT->BOT</title>
+<path fill="none" stroke="black" d="M777.84,-90.45C745.37,-75.39 692.74,-50.98 659.95,-35.78"/>
+<polygon fill="black" stroke="black" points="661.57,-32.67 651.03,-31.64 658.63,-39.02 661.57,-32.67"/>
+</g>
+<!-- STRUCT_S1->STRUCT_BOT -->
+<g id="edge31" class="edge">
+<title>STRUCT_S1->STRUCT_BOT</title>
+<path fill="none" stroke="black" d="M748.84,-198.62C759.77,-181.01 777.19,-152.96 790.02,-132.29"/>
+<polygon fill="black" stroke="black" points="792.98,-134.16 795.29,-123.82 787.04,-130.47 792.98,-134.16"/>
+</g>
+<!-- STRUCT_S1->STRUCT_S2 -->
+<!-- STRUCT_S2->STRUCT_BOT -->
+<g id="edge32" class="edge">
+<title>STRUCT_S2->STRUCT_BOT</title>
+<path fill="none" stroke="black" d="M853.36,-189.85C843.77,-172.63 831.12,-149.92 821.38,-132.44"/>
+<polygon fill="black" stroke="black" points="824.68,-131.18 816.76,-124.15 818.57,-134.59 824.68,-131.18"/>
+</g>
+<!-- STRUCT_S2->STRUCT_SN -->
+<!-- STRUCT_SN->STRUCT_BOT -->
+<g id="edge33" class="edge">
+<title>STRUCT_SN->STRUCT_BOT</title>
+<path fill="none" stroke="black" d="M953.87,-190.67C919.81,-171.04 872.69,-143.89 840.98,-125.62"/>
+<polygon fill="black" stroke="black" points="842.99,-122.73 832.58,-120.77 839.49,-128.8 842.99,-122.73"/>
+</g>
+<!-- MEM_ALIAS1 -->
+<g id="node24" class="node">
+<title>MEM_ALIAS1</title>
+<ellipse fill="blue" stroke="black" cx="1102.51" cy="-216.25" rx="20.13" ry="20.13"/>
+<text text-anchor="middle" x="1102.51" y="-211.2" font-family="Times New Roman,serif" font-size="14.00" fill="white">#1</text>
+</g>
+<!-- MEM_TOP->MEM_ALIAS1 -->
+<g id="edge38" class="edge">
+<title>MEM_TOP->MEM_ALIAS1</title>
+<path fill="none" stroke="black" d="M1140.48,-309.64C1133.47,-292.59 1122.58,-266.09 1114.26,-245.84"/>
+<polygon fill="black" stroke="black" points="1117.55,-244.65 1110.52,-236.73 1111.08,-247.31 1117.55,-244.65"/>
+</g>
+<!-- MEM_ALIASDOTS -->
+<g id="node25" class="node">
+<title>MEM_ALIASDOTS</title>
+<ellipse fill="blue" stroke="black" cx="1192.51" cy="-216.25" rx="27" ry="18"/>
+<text text-anchor="middle" x="1192.51" y="-211.2" font-family="Times New Roman,serif" font-size="14.00" fill="white">...</text>
+</g>
+<!-- MEM_TOP->MEM_ALIASDOTS -->
+<g id="edge39" class="edge">
+<title>MEM_TOP->MEM_ALIASDOTS</title>
+<path fill="none" stroke="black" d="M1154.54,-309.64C1161.71,-292.18 1172.96,-264.82 1181.35,-244.4"/>
+<polygon fill="black" stroke="black" points="1184.54,-245.86 1185.1,-235.28 1178.06,-243.2 1184.54,-245.86"/>
+</g>
+<!-- MEM_ALIASN -->
+<g id="node26" class="node">
+<title>MEM_ALIASN</title>
+<ellipse fill="blue" stroke="black" cx="1282.51" cy="-216.25" rx="20.13" ry="20.13"/>
+<text text-anchor="middle" x="1282.51" y="-211.2" font-family="Times New Roman,serif" font-size="14.00" fill="white">#n</text>
+</g>
+<!-- MEM_TOP->MEM_ALIASN -->
+<g id="edge40" class="edge">
+<title>MEM_TOP->MEM_ALIASN</title>
+<path fill="none" stroke="black" d="M1166.56,-311.29C1190.65,-291.76 1232.11,-258.13 1258.38,-236.82"/>
+<polygon fill="black" stroke="black" points="1260.57,-239.55 1266.13,-230.53 1256.16,-234.11 1260.57,-239.55"/>
+</g>
+<!-- MEM_BOT -->
+<g id="node23" class="node">
+<title>MEM_BOT</title>
+<ellipse fill="blue" stroke="black" cx="1147.51" cy="-104.75" rx="43.67" ry="18"/>
+<text text-anchor="start" x="1123.51" y="-100.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00" fill="white">⊥</text>
+<text text-anchor="start" x="1139.26" y="-100.7" font-family="Times New Roman,serif" font-size="14.00" fill="white">:mem</text>
+</g>
+<!-- MEM_BOT->BOT -->
+<g id="edge44" class="edge">
+<title>MEM_BOT->BOT</title>
+<path fill="none" stroke="black" d="M1107.37,-97.41C1008.15,-81.75 752.85,-41.44 662.66,-27.2"/>
+<polygon fill="black" stroke="black" points="663.45,-23.78 653.03,-25.68 662.36,-30.7 663.45,-23.78"/>
+</g>
+<!-- MEM_ALIAS1->MEM_BOT -->
+<g id="edge41" class="edge">
+<title>MEM_ALIAS1->MEM_BOT</title>
+<path fill="none" stroke="black" d="M1109.94,-197.17C1117.07,-179.82 1127.93,-153.39 1136.15,-133.4"/>
+<polygon fill="black" stroke="black" points="1139.37,-134.75 1139.94,-124.17 1132.9,-132.09 1139.37,-134.75"/>
+</g>
+<!-- MEM_ALIAS1->MEM_ALIASDOTS -->
+<!-- MEM_ALIASDOTS->MEM_BOT -->
+<g id="edge42" class="edge">
+<title>MEM_ALIASDOTS->MEM_BOT</title>
+<path fill="none" stroke="black" d="M1185.67,-198.62C1178.58,-181.35 1167.36,-154.05 1158.92,-133.51"/>
+<polygon fill="black" stroke="black" points="1162.17,-132.22 1155.13,-124.3 1155.7,-134.88 1162.17,-132.22"/>
+</g>
+<!-- MEM_ALIASDOTS->MEM_ALIASN -->
+<!-- MEM_ALIASN->MEM_BOT -->
+<g id="edge43" class="edge">
+<title>MEM_ALIASN->MEM_BOT</title>
+<path fill="none" stroke="black" d="M1267.02,-202.69C1244.75,-184.62 1203.29,-151 1175.55,-128.49"/>
+<polygon fill="black" stroke="black" points="1177.86,-125.86 1167.89,-122.28 1173.45,-131.3 1177.86,-125.86"/>
+</g>
+<!-- TUPLE1 -->
+<g id="node29" class="node">
+<title>TUPLE1</title>
+<polygon fill="none" stroke="none" points="1399.51,-242.75 1345.51,-242.75 1345.51,-189.75 1399.51,-189.75 1399.51,-242.75"/>
+<polygon fill="pink" stroke="none" points="1353.76,-216.25 1353.76,-238.75 1391.26,-238.75 1391.26,-216.25 1353.76,-216.25"/>
+<polygon fill="none" stroke="black" points="1353.76,-216.25 1353.76,-238.75 1391.26,-238.75 1391.26,-216.25 1353.76,-216.25"/>
+<text text-anchor="start" x="1356.76" y="-222.45" font-family="Times New Roman,serif" font-size="14.00">Tuple</text>
+<polygon fill="black" stroke="none" points="1353.76,-193.75 1353.76,-216.25 1391.26,-216.25 1391.26,-193.75 1353.76,-193.75"/>
+<polygon fill="none" stroke="black" points="1353.76,-193.75 1353.76,-216.25 1391.26,-216.25 1391.26,-193.75 1353.76,-193.75"/>
+<text text-anchor="start" x="1360.88" y="-199.95" font-family="Times New Roman,serif" font-size="14.00" fill="white">type</text>
+</g>
+<!-- TUPLE_TOP->TUPLE1 -->
+<g id="edge48" class="edge">
+<title>TUPLE_TOP->TUPLE1</title>
+<path fill="none" stroke="black" d="M1413.01,-309.64C1406.37,-294.48 1396.45,-271.87 1388.1,-252.81"/>
+<polygon fill="black" stroke="black" points="1391.35,-251.51 1384.13,-243.76 1384.94,-254.32 1391.35,-251.51"/>
+</g>
+<!-- TUPLE2 -->
+<g id="node30" class="node">
+<title>TUPLE2</title>
+<polygon fill="none" stroke="none" points="1496.51,-254 1442.51,-254 1442.51,-178.5 1496.51,-178.5 1496.51,-254"/>
+<polygon fill="pink" stroke="none" points="1450.76,-227.5 1450.76,-250 1488.26,-250 1488.26,-227.5 1450.76,-227.5"/>
+<polygon fill="none" stroke="black" points="1450.76,-227.5 1450.76,-250 1488.26,-250 1488.26,-227.5 1450.76,-227.5"/>
+<text text-anchor="start" x="1453.76" y="-233.7" font-family="Times New Roman,serif" font-size="14.00">Tuple</text>
+<polygon fill="black" stroke="none" points="1450.76,-205 1450.76,-227.5 1488.26,-227.5 1488.26,-205 1450.76,-205"/>
+<polygon fill="none" stroke="black" points="1450.76,-205 1450.76,-227.5 1488.26,-227.5 1488.26,-205 1450.76,-205"/>
+<text text-anchor="start" x="1457.88" y="-211.2" font-family="Times New Roman,serif" font-size="14.00" fill="white">type</text>
+<polygon fill="black" stroke="none" points="1450.76,-182.5 1450.76,-205 1488.26,-205 1488.26,-182.5 1450.76,-182.5"/>
+<polygon fill="none" stroke="black" points="1450.76,-182.5 1450.76,-205 1488.26,-205 1488.26,-182.5 1450.76,-182.5"/>
+<text text-anchor="start" x="1457.88" y="-188.7" font-family="Times New Roman,serif" font-size="14.00" fill="white">type</text>
+</g>
+<!-- TUPLE_TOP->TUPLE2 -->
+<g id="edge49" class="edge">
+<title>TUPLE_TOP->TUPLE2</title>
+<path fill="none" stroke="black" d="M1428.17,-309.64C1433.64,-297.4 1441.29,-280.3 1448.53,-264.14"/>
+<polygon fill="black" stroke="black" points="1451.68,-265.65 1452.57,-255.09 1445.3,-262.79 1451.68,-265.65"/>
+</g>
+<!-- TUPLEN -->
+<g id="node31" class="node">
+<title>TUPLEN</title>
+<polygon fill="none" stroke="none" points="1593.51,-265.25 1539.51,-265.25 1539.51,-167.25 1593.51,-167.25 1593.51,-265.25"/>
+<polygon fill="pink" stroke="none" points="1547.76,-238.75 1547.76,-261.25 1585.26,-261.25 1585.26,-238.75 1547.76,-238.75"/>
+<polygon fill="none" stroke="black" points="1547.76,-238.75 1547.76,-261.25 1585.26,-261.25 1585.26,-238.75 1547.76,-238.75"/>
+<text text-anchor="start" x="1550.76" y="-244.95" font-family="Times New Roman,serif" font-size="14.00">Tuple</text>
+<polygon fill="black" stroke="none" points="1547.76,-216.25 1547.76,-238.75 1585.26,-238.75 1585.26,-216.25 1547.76,-216.25"/>
+<polygon fill="none" stroke="black" points="1547.76,-216.25 1547.76,-238.75 1585.26,-238.75 1585.26,-216.25 1547.76,-216.25"/>
+<text text-anchor="start" x="1554.88" y="-222.45" font-family="Times New Roman,serif" font-size="14.00" fill="white">type</text>
+<polygon fill="black" stroke="none" points="1547.76,-193.75 1547.76,-216.25 1585.26,-216.25 1585.26,-193.75 1547.76,-193.75"/>
+<polygon fill="none" stroke="black" points="1547.76,-193.75 1547.76,-216.25 1585.26,-216.25 1585.26,-193.75 1547.76,-193.75"/>
+<text text-anchor="start" x="1560.88" y="-199.95" font-family="Times New Roman,serif" font-size="14.00" fill="white">...</text>
+<polygon fill="black" stroke="none" points="1547.76,-171.25 1547.76,-193.75 1585.26,-193.75 1585.26,-171.25 1547.76,-171.25"/>
+<polygon fill="none" stroke="black" points="1547.76,-171.25 1547.76,-193.75 1585.26,-193.75 1585.26,-171.25 1547.76,-171.25"/>
+<text text-anchor="start" x="1554.88" y="-177.45" font-family="Times New Roman,serif" font-size="14.00" fill="white">type</text>
+</g>
+<!-- TUPLE_TOP->TUPLEN -->
+<g id="edge50" class="edge">
+<title>TUPLE_TOP->TUPLEN</title>
+<path fill="none" stroke="black" d="M1440.81,-311.52C1463.97,-294.15 1502.28,-265.42 1530.53,-244.23"/>
+<polygon fill="black" stroke="black" points="1532.58,-247.07 1538.48,-238.27 1528.38,-241.47 1532.58,-247.07"/>
+</g>
+<!-- TUPLE_BOT -->
+<g id="node28" class="node">
+<title>TUPLE_BOT</title>
+<ellipse fill="pink" stroke="black" cx="1420.51" cy="-104.75" rx="42.65" ry="18"/>
+<text text-anchor="start" x="1397.26" y="-100.7" font-family="Times New Roman,serif" font-weight="bold" font-size="14.00">⊥</text>
+<text text-anchor="start" x="1413.01" y="-100.7" font-family="Times New Roman,serif" font-size="14.00">:tuple</text>
+</g>
+<!-- TUPLE_BOT->BOT -->
+<g id="edge54" class="edge">
+<title>TUPLE_BOT->BOT</title>
+<path fill="none" stroke="black" d="M1379.42,-99.5C1240.27,-85.13 788.44,-38.44 663.04,-25.49"/>
+<polygon fill="black" stroke="black" points="663.44,-22.01 653.13,-24.46 662.72,-28.97 663.44,-22.01"/>
+</g>
+<!-- TUPLE1->TUPLE_BOT -->
+<g id="edge51" class="edge">
+<title>TUPLE1->TUPLE_BOT</title>
+<path fill="none" stroke="black" d="M1383.64,-189.85C1391.12,-172.8 1400.96,-150.34 1408.59,-132.93"/>
+<polygon fill="black" stroke="black" points="1411.61,-134.78 1412.41,-124.21 1405.19,-131.97 1411.61,-134.78"/>
+</g>
+<!-- TUPLE2->TUPLE_BOT -->
+<g id="edge52" class="edge">
+<title>TUPLE2->TUPLE_BOT</title>
+<path fill="none" stroke="black" d="M1453.19,-178.79C1446.51,-163.86 1438.92,-146.89 1432.73,-133.07"/>
+<polygon fill="black" stroke="black" points="1436.02,-131.83 1428.74,-124.13 1429.63,-134.69 1436.02,-131.83"/>
+</g>
+<!-- TUPLEN->TUPLE_BOT -->
+<g id="edge53" class="edge">
+<title>TUPLEN->TUPLE_BOT</title>
+<path fill="none" stroke="black" d="M1539.73,-195.16C1514.22,-176.03 1475.9,-147.29 1449.64,-127.59"/>
+<polygon fill="black" stroke="black" points="1451.86,-124.89 1441.76,-121.69 1447.66,-130.49 1451.86,-124.89"/>
+</g>
+</g>
+</svg>
|
