summaryrefslogtreecommitdiff
path: root/docs/lattice_if.gv
blob: 445afd625a58adb3d034ad90d1d41b65e634e268 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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];

    // ----------------------
    // Integers
    INT_TOP [label=<<B>⊤</B >:int>, fillcolor=lightblue, shape=oval];
    INT_BOT [label=<<B>⊥</B>:int>, fillcolor=lightblue, shape=oval];

    INT_HI    [label="max < min" , fillcolor=lightblue, shape=oval];
    INT_XBOOL [label="1...0", fillcolor=lightblue, shape=oval];
    INT_CON   [label="constants...", fillcolor=lightblue, shape=oval];
    INT_CON0  [label="0", fillcolor=lightblue];
    INT_CON1  [label="1", fillcolor=lightblue];
    INT_BOOL  [label="0...1", fillcolor=lightblue,shape=oval];
    INT_LO    [label="max > min" , fillcolor=lightblue, shape=oval];

    TOP        -> INT_TOP;
    INT_TOP    -> INT_HI;
    INT_HI     -> INT_XBOOL;
    INT_XBOOL  -> INT_CON0;
    INT_XBOOL  -> INT_CON1;
    INT_HI     -> INT_CON;
    INT_CON0   -> INT_BOOL;
    INT_CON1   -> INT_BOOL;
    INT_BOOL   -> INT_LO;
    INT_CON    -> INT_LO;
    INT_LO     -> INT_BOT;
    INT_BOT    -> BOT;

    INT_CON0 -> INT_CON1 -> INT_CON [style=invis];

    // ----------------------
    // Floats
    FLT_TOP [label=<<B>⊤</B >:flt>, fillcolor=aqua, shape=oval];
    FLT_BOT [label=<<B>⊥</B>:flt>, fillcolor=aqua, shape=oval];

    FLT_CON64  [label="64b consts\n[excludes\n32b consts]" , fillcolor=aqua, shape=oval];
    FLT_CON32  [label="32b consts", fillcolor=aqua, shape=oval];
    FLT_CONPI  [label="3.14159...", fillcolor=aqua, shape=oval];
    FLT_X32    [label="~f32", fillcolor=aqua];
    FLT_CON0   [label="0."  , fillcolor=aqua];
    FLT_32     [label="f32" , fillcolor=aqua];

    TOP       -> FLT_TOP;
    FLT_TOP   -> FLT_CON64
    FLT_TOP   -> FLT_CONPI
    FLT_CON64 -> FLT_BOT
    FLT_CONPI -> FLT_BOT
    
    FLT_TOP   -> FLT_X32;
    FLT_X32   -> FLT_CON0;
    FLT_X32   -> FLT_CON32;
    FLT_CON0  -> FLT_32;
    FLT_CON32 -> FLT_32;
    FLT_32    -> FLT_BOT
    
    FLT_BOT   -> BOT;

    FLT_CON0 -> FLT_CON32 -> FLT_CONPI -> FLT_CON64 [style=invis];

    // Additional customization
    {rank=same; TOP}
    {rank=same; INT_TOP; FLT_TOP; }
    {rank=same; INT_CON; INT_CON0; INT_CON1;
                FLT_CON32; FLT_CON64;  FLT_CON0; FLT_CONPI;
    }
    {rank=same; INT_BOT; FLT_BOT; }
    {rank=same; BOT;}
}