summaryrefslogtreecommitdiff
path: root/docs/chapter06/lattice.gv
diff options
context:
space:
mode:
authorDibyendu Majumdar <mobile@majumdar.org.uk>2023-11-11 23:17:22 +0000
committerDibyendu Majumdar <mobile@majumdar.org.uk>2024-11-16 15:19:12 -0800
commit0a319b713d6f3479b381ceb1066f467db2d7a160 (patch)
treed0f0c198b0adc1bcc1f6b27e92056e296dcfc5ed /docs/chapter06/lattice.gv
parent1950e4db3f81d5b3ab07add23a1f697f90d3682b (diff)
downloadSimple-0a319b713d6f3479b381ceb1066f467db2d7a160.tar.gz
Simple-0a319b713d6f3479b381ceb1066f467db2d7a160.zip
Chapter 6: Peepholes for If
Co-authored-by: Cliff Click <cliffc@acm.org> Co-authored-by: Thalia Archibald <thalia@archibald.dev> Co-authored-by: Yichen Yan <oraluben@outlook.com> Co-authored-by: Tamas Hadhazy <helsgithub15@gmail.com> Co-authored-by: Robert Obkircher <robert.obkircher@gmail.com>
Diffstat (limited to 'docs/chapter06/lattice.gv')
-rw-r--r--docs/chapter06/lattice.gv64
1 files changed, 64 insertions, 0 deletions
diff --git a/docs/chapter06/lattice.gv b/docs/chapter06/lattice.gv
new file mode 100644
index 00000000..e533ad4a
--- /dev/null
+++ b/docs/chapter06/lattice.gv
@@ -0,0 +1,64 @@
+digraph Lattice {
+ // Define nodes
+ splines=false;
+ node [shape=circle, style=filled, fillcolor=lightblue];
+ 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_MINUS [label="-1"];
+ INT_ZERO [label="0"];
+ INT_PLUS [label="1"];
+ INT_MAXDOTS [label="..." shape=none style=none];
+ INT_MAX [label="+n"];
+
+ TUPLE [label="TUPLE"];
+
+ // Define edges
+ edge [arrowhead=none];
+
+ TOP -> INT_TOP;
+ INT_TOP -> INT_MIN;
+ INT_TOP -> INT_MINDOTS;
+ INT_TOP -> INT_MINUS;
+ INT_TOP -> INT_ZERO;
+ INT_TOP -> INT_PLUS;
+ INT_TOP -> INT_MAXDOTS;
+ INT_TOP -> INT_MAX;
+ INT_MIN -> INT_BOT;
+ INT_MINDOTS -> INT_BOT;
+ INT_MINUS -> INT_BOT;
+ INT_ZERO -> INT_BOT;
+ INT_PLUS -> INT_BOT;
+ INT_MAXDOTS -> INT_BOT;
+ INT_MAX -> INT_BOT;
+ INT_BOT -> BOT;
+
+ INT_MIN -> INT_MINDOTS -> INT_MINUS -> INT_ZERO -> INT_PLUS -> INT_MAXDOTS -> INT_MAX [style=invis];
+
+ TOP -> TUPLE;
+ TUPLE -> BOT;
+
+ TOP -> XCTRL;
+ XCTRL -> CTRL;
+ CTRL -> BOT;
+
+ // Additional customization
+ {rank=same; TOP}
+ {rank=same; INT_TOP; XCTRL}
+ {rank=same; INT_MIN; INT_MINDOTS;
+ INT_MINUS; INT_ZERO;
+ INT_PLUS; INT_MAXDOTS;
+ INT_MAX; TUPLE}
+ {rank=same; INT_BOT; CTRL}
+ {rank=same; BOT;}
+}