From 65454d77eba95d7f814336377f78d9f42c7455f9 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Wed, 27 Nov 2024 11:29:33 -0800 Subject: More lattice docs reworks --- chapter06/docs/lattice.gv | 86 +++++++++---- chapter06/docs/lattice.svg | 293 +++++++++++++++++++++++++++++++-------------- 2 files changed, 264 insertions(+), 115 deletions(-) (limited to 'chapter06') diff --git a/chapter06/docs/lattice.gv b/chapter06/docs/lattice.gv index 782c2253..e5cc59be 100644 --- a/chapter06/docs/lattice.gv +++ b/chapter06/docs/lattice.gv @@ -4,27 +4,30 @@ digraph Lattice { node [shape=circle, style=filled, fillcolor=lightblue]; nodesep=0.6; - TOP [label="⊤" , fillcolor=black, fontcolor=white]; - BOT [label="⊥", fillcolor=black, fontcolor=white]; + TOP [label=<⊤>, fillcolor=black, fontcolor=white]; + BOT [label=<⊥>, fillcolor=black, fontcolor=white]; - XCTRL [label="⊤ :Ctrl", fillcolor=yellow]; - CTRL [label="⊥ :Ctrl", fillcolor=yellow]; + // ---------------------- + // Control + XCTRL [label=<⊤:ctrl>, fillcolor=yellow, shape=oval]; + CTRL [label=<⊥:ctrl>, fillcolor=yellow, shape=oval]; - INT_TOP [label="⊤ :Int"]; - INT_BOT [label="⊥ :Int"]; - - INT_MIN [label="-n"]; - INT_MINUS [label="-1"]; - INT_MINDOTS [label="..." shape=none style=none]; - INT_ZERO [label="0"]; - INT_PLUS [label="1"]; - INT_MAXDOTS [label="..." shape=none style=none]; - INT_MAX [label="+n"]; + TOP -> XCTRL; + XCTRL -> CTRL; + CTRL -> BOT; - TUPLE [label="TUPLE", fillcolor=pink]; + // ---------------------- + // Integers + INT_TOP [label=<⊤:int>, fillcolor=lightblue, shape=oval]; + INT_BOT [label=<⊥:int>, fillcolor=lightblue, shape=oval]; - // Define edges - edge [arrowhead=none]; + INT_MIN [label="-n" , fillcolor=lightblue]; + INT_MINDOTS [label="...", fillcolor=lightblue shape=oval]; + INT_MINUS [label="-1" , fillcolor=lightblue]; + INT_ZERO [label="0" , fillcolor=lightblue]; + INT_PLUS [label="1" , fillcolor=lightblue]; + INT_MAXDOTS [label="...", fillcolor=lightblue, shape=oval]; + INT_MAX [label="+n" , fillcolor=lightblue]; TOP -> INT_TOP; INT_TOP -> INT_MIN; @@ -44,18 +47,51 @@ digraph Lattice { INT_BOT -> BOT; INT_MIN -> INT_MINDOTS -> INT_MINUS -> INT_ZERO -> INT_PLUS -> INT_MAXDOTS -> INT_MAX [style=invis]; + + // ---------------------- + // Tuples - TOP -> TUPLE; - TUPLE -> BOT; + TUPLE_TOP [label=<⊤:tuple>, fillcolor=pink, shape=oval]; + TUPLE_BOT [label=<⊥:tuple>, fillcolor=pink, shape=oval]; - TOP -> XCTRL; - XCTRL -> CTRL; - CTRL -> BOT; + TUPLE1 [shape=none, fillcolor=none, label=< + + + +
tuple
type
+ >]; + TUPLE2 [shape=none, fillcolor=none, label=< + + + + +
tuple
type
type
+ >]; + TUPLEN [shape=none, fillcolor=none, label=< + + + + + +
tuple
type
...
type
+ >]; + + + 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} - {rank=same; INT_MIN; INT_MINDOTS; INT_MINUS; INT_ZERO; INT_PLUS; INT_MAXDOTS; INT_MAX; TUPLE } - {rank=same; INT_BOT; CTRL} + {rank=same; XCTRL; INT_TOP; TUPLE_TOP} + {rank=same; + INT_MIN; INT_MINDOTS; INT_MINUS; INT_ZERO; INT_PLUS; INT_MAXDOTS; INT_MAX; + } + {rank=same; CTRL; INT_BOT, TUPLE_BOT} {rank=same; BOT;} } diff --git a/chapter06/docs/lattice.svg b/chapter06/docs/lattice.svg index f4929b41..86371c93 100644 --- a/chapter06/docs/lattice.svg +++ b/chapter06/docs/lattice.svg @@ -4,203 +4,316 @@ - - + + Lattice - + TOP - -⊤ + +⊤ XCTRL - -⊤ :Ctrl + +⊤ +:ctrl - + TOP->XCTRL - + + INT_TOP - -⊤ :Int + +⊤ +:int - + TOP->INT_TOP - + + - + -TUPLE - -TUPLE +TUPLE_TOP + +⊤ +:tuple - - -TOP->TUPLE - + + +TOP->TUPLE_TOP + + BOT -⊥ +⊥ CTRL - -⊥ :Ctrl + +⊥ +:ctrl - + XCTRL->CTRL - + + - + CTRL->BOT - + + INT_MIN - --n + +-n - + INT_TOP->INT_MIN - - - - -INT_MINUS - --1 - - - -INT_TOP->INT_MINUS - + + - + INT_MINDOTS -... + +... - + INT_TOP->INT_MINDOTS - + + + + + +INT_MINUS + +-1 + + + +INT_TOP->INT_MINUS + + INT_ZERO - -0 + +0 - + INT_TOP->INT_ZERO - + + INT_PLUS - -1 + +1 - + INT_TOP->INT_PLUS - + + INT_MAXDOTS -... + +... - + INT_TOP->INT_MAXDOTS - + + INT_MAX - -+n + ++n - + INT_TOP->INT_MAX - + + INT_BOT - -⊥ :Int + +⊥ +:int - + INT_BOT->BOT - + + - + INT_MIN->INT_BOT - + + - - -INT_MINUS->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 - - - - -TUPLE->BOT - + + + + + +TUPLE1 + + + +tuple + + +type + + + +TUPLE_TOP->TUPLE1 + + + + + +TUPLE2 + + + +tuple + + +type + + +type + + + +TUPLE_TOP->TUPLE2 + + + + + +TUPLEN + + + +tuple + + +type + + +... + + +type + + + +TUPLE_TOP->TUPLEN + + + + + +TUPLE_BOT + +⊥ +:tuple + + + +TUPLE_BOT->BOT + + + + + +TUPLE1->TUPLE_BOT + + + + + +TUPLE2->TUPLE_BOT + + + + + +TUPLEN->TUPLE_BOT + + -- cgit v1.2.3