
digraph G {
  graph [
    bgcolor="white", pad="0.28", nodesep="0.38", ranksep="0.58",
    fontname="WenQuanYi Zen Hei", fontcolor="#17212B", fontsize=24,
    labelloc="t", labeljust="l"
  ];
  node [
    shape=box, style="rounded,filled", margin="0.18,0.12",
    fontname="WenQuanYi Zen Hei", fontcolor="#17212B", fontsize=12,
    color="#CBD5E1", penwidth=1.3, fillcolor="#F8FAFC"
  ];
  edge [
    fontname="WenQuanYi Zen Hei", fontcolor="#64748B", fontsize=10,
    color="#64748B", penwidth=1.5, arrowsize=0.75
  ];

  label="图 2-2  8 字节 little-endian load 的 Concat 表达式树";
  rankdir=TB;

  cmp [label="Equal(Concat(Read7…Read0), 0xaaaabbbbccccdddd)", fillcolor="#FEF3C7", color="#D97706"];
  c7 [label="Concat", fillcolor="#CCFBF1", color="#0F766E"];
  r7 [label="Read(7)\n输入偏移 7", fillcolor="#DBEAFE", color="#2563EB"];
  c6 [label="Concat", fillcolor="#CCFBF1", color="#0F766E"];
  r6 [label="Read(6)", fillcolor="#DBEAFE", color="#2563EB"];
  c5 [label="Concat", fillcolor="#CCFBF1", color="#0F766E"];
  r5 [label="Read(5)", fillcolor="#DBEAFE", color="#2563EB"];
  rest [label="… 继续右倾 …\nRead(4)…Read(0)", fillcolor="#F1F5F9"];
  z3 [label="一次 check-sat\n可同时确定 8 个符号字节", fillcolor="#DCFCE7", color="#15803D"];
  risk [shape=note, label="N 字节读形成深度 O(N) 的右倾链\n大 N 会放大递归遍历成本", fillcolor="#FEE2E2", color="#B91C1C"];

  cmp -> c7;
  c7 -> r7; c7 -> c6;
  c6 -> r6; c6 -> c5;
  c5 -> r5; c5 -> rest;
  cmp -> z3 [style=dashed, color="#15803D"];
  rest -> risk [style=dashed, color="#B91C1C"];

}
