digraph InitialHeap {
  overlap=scale;
  start=1234;
  sep=0.5;
  center=true;
  splines=true;
  node[shape=record, height=.05, fontsize=12];
  node[style="bold"]

  empty [label = "-"]

  a     [label = "a"]

  ba    [label = "b"]

  cba   [label = "c"]

  ca    [label = "c"]

  node[style=""]

  emptyTable [label = "{ { a | <a> } }"]

  aTable [ label = "{ { b | <b> } | { c | <cc> }}"]

  baTable [ label = "{ { c | <cc> } }"]

  cbaTable [ label = " {{}}" ]

  caTable [ label = "{{}}"]

  edge[dir="both", arrowhead="dot", arrowtail="dot", style="bold", length="1.0"];
  empty -> emptyTable
  a -> aTable
  ba -> baTable
  cba -> cbaTable
  ca -> caTable

  edge[dir="fwd", arrowhead="vee", arrowtail="none", style="", label="Then"]

  a -> empty 
  ba -> a
  cba -> ba
  ca -> a

  edge[arrowhead="normal", label="", style="dashed"]

  emptyTable:a -> a
  aTable:b -> ba
  aTable:cc -> ca
  baTable:cc -> cba

}
