digraph "rule-network" {
  rankdir=LR;
  "rule : initialize";
  "join1305" [label="join : no\l"];
  "join1305" -> "rule : initialize";
  "match1306" [shape=box,label="match : (cell . ?)\l"];
  "match1306" -> "join1305";
  "join1307" [label="join\l"];
  "join1307" -> "join1305";
  "match1308" [shape=box,label="match : (board ?board)\l"];
  "match1308" -> "join1307";
  "join1309" [label="join\l"];
  "join1309" -> "join1307";
  "rule : rule-1";
  "join1310" [label="join\l"];
  "join1310" -> "rule : rule-1";
  "match1308" [shape=box,label="match : (board ?board)\l"];
  "match1308" -> "join1310";
  "join1311" [label="join : all\l"];
  "join1311" -> "join1310";
  "match1312" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(number? ?value)\l"];
  "match1312" -> "join1311";
  "join1309" [label="join\l"];
  "join1309" -> "join1311";
  "rule : rule-2";
  "join1313" [label="join\l"];
  "join1313" -> "rule : rule-2";
  "match1314" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(eq? ?value (quote ()))\l"];
  "match1314" -> "join1313";
  "join1309" [label="join\l"];
  "join1309" -> "join1313";
  "rule : rule-3";
  "join1315" [label="join\l"];
  "join1315" -> "rule : rule-3";
  "match1308" [shape=box,label="match : (board ?board)\l"];
  "match1308" -> "join1315";
  "join1316" [label="join\l"];
  "join1316" -> "join1315";
  "match1317" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(and (pair? ?value) (null? (cdr ?value)))\l"];
  "match1317" -> "join1316";
  "join1309" [label="join\l"];
  "join1309" -> "join1316";
  "rule : rule-4a";
  "join1318" [label="join\l(not (= ?column-1 ?column))\l(and (number? ?value-1) (= ?value-1 ?value))\l"];
  "join1318" -> "rule : rule-4a";
  "match1319" [shape=box,label="match : (cell ?row ?column-1 ?box-1 ?value-1)\l"];
  "match1319" -> "join1318";
  "join1320" [label="join\l"];
  "join1320" -> "join1318";
  "match1312" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(number? ?value)\l"];
  "match1312" -> "join1320";
  "join1309" [label="join\l"];
  "join1309" -> "join1320";
  "rule : rule-4b";
  "join1321" [label="join\l(not (= ?row-1 ?row))\l(and (number? ?value-1) (= ?value-1 ?value))\l"];
  "join1321" -> "rule : rule-4b";
  "match1322" [shape=box,label="match : (cell ?row-1 ?column ?box-1 ?value-1)\l"];
  "match1322" -> "join1321";
  "join1320" [label="join\l"];
  "join1320" -> "join1321";
  "match1312" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(number? ?value)\l"];
  "match1312" -> "join1320";
  "join1309" [label="join\l"];
  "join1309" -> "join1320";
  "rule : rule-4c";
  "join1323" [label="join\l(or (not (= ?row-1 ?row)) (not (= ?column-1 ?column)))\l(and (number? ?value-1) (= ?value-1 ?value))\l"];
  "join1323" -> "rule : rule-4c";
  "match1324" [shape=box,label="match : (cell ?row-1 ?column-1 ?box ?value-1)\l"];
  "match1324" -> "join1323";
  "join1320" [label="join\l"];
  "join1320" -> "join1323";
  "match1312" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(number? ?value)\l"];
  "match1312" -> "join1320";
  "join1309" [label="join\l"];
  "join1309" -> "join1320";
  "rule : rule-5a";
  "join1325" [label="join\l(not (= ?column-1 ?column))\l(and (pair? ?value-1) (memv ?value ?value-1))\l"];
  "join1325" -> "rule : rule-5a";
  "match1326" [shape=box,label="match : (cell ?row ?column-1 ?box-1 ?value-1)\l"];
  "match1326" -> "join1325";
  "join1320" [label="join\l"];
  "join1320" -> "join1325";
  "match1312" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(number? ?value)\l"];
  "match1312" -> "join1320";
  "join1309" [label="join\l"];
  "join1309" -> "join1320";
  "rule : rule-5b";
  "join1327" [label="join\l(not (= ?row-1 ?row))\l(and (pair? ?value-1) (memv ?value ?value-1))\l"];
  "join1327" -> "rule : rule-5b";
  "match1328" [shape=box,label="match : (cell ?row-1 ?column ?box-1 ?value-1)\l"];
  "match1328" -> "join1327";
  "join1320" [label="join\l"];
  "join1320" -> "join1327";
  "match1312" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(number? ?value)\l"];
  "match1312" -> "join1320";
  "join1309" [label="join\l"];
  "join1309" -> "join1320";
  "rule : rule-5c";
  "join1329" [label="join\l(or (not (= ?row-1 ?row)) (not (= ?column-1 ?column)))\l(and (pair? ?value-1) (memv ?value ?value-1))\l"];
  "join1329" -> "rule : rule-5c";
  "match1330" [shape=box,label="match : (cell ?row-1 ?column-1 ?box ?value-1)\l"];
  "match1330" -> "join1329";
  "join1320" [label="join\l"];
  "join1320" -> "join1329";
  "match1312" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(number? ?value)\l"];
  "match1312" -> "join1320";
  "join1309" [label="join\l"];
  "join1309" -> "join1320";
  "rule : rule-6a";
  "join1331" [label="join : no\l(not (= ?column-1 ?column))\l(or (and (number? ?value-1) (= ?value-1 ?digit)) (and (pair? ?value-1) (memv ?digit ?value-1)))\l"];
  "join1331" -> "rule : rule-6a";
  "match1332" [shape=box,label="match : (cell ?row ?column-1 ? ?value-1)\l"];
  "match1332" -> "join1331";
  "join1333" [label="join\l(and (pair? ?value) (memv ?digit ?value))\l"];
  "join1333" -> "join1331";
  "match1334" [shape=box,label="match : (cell ?row ?column ?box ?value)\l"];
  "match1334" -> "join1333";
  "join1335" [label="join\l"];
  "join1335" -> "join1333";
  "match1336" [shape=box,label="match : (digit ?digit)\l"];
  "match1336" -> "join1335";
  "join1309" [label="join\l"];
  "join1309" -> "join1335";
  "rule : rule-6b";
  "join1337" [label="join : no\l(not (= ?row-1 ?row))\l(or (and (number? ?value-1) (= ?value-1 ?digit)) (and (pair? ?value-1) (memv ?digit ?value-1)))\l"];
  "join1337" -> "rule : rule-6b";
  "match1338" [shape=box,label="match : (cell ?row-1 ?column ? ?value-1)\l"];
  "match1338" -> "join1337";
  "join1333" [label="join\l(and (pair? ?value) (memv ?digit ?value))\l"];
  "join1333" -> "join1337";
  "match1334" [shape=box,label="match : (cell ?row ?column ?box ?value)\l"];
  "match1334" -> "join1333";
  "join1335" [label="join\l"];
  "join1335" -> "join1333";
  "match1336" [shape=box,label="match : (digit ?digit)\l"];
  "match1336" -> "join1335";
  "join1309" [label="join\l"];
  "join1309" -> "join1335";
  "rule : rule-6c";
  "join1339" [label="join : no\l(or (not (= ?row-1 ?row)) (not (= ?column-1 ?column)))\l(or (and (number? ?value-1) (= ?value-1 ?digit)) (and (pair? ?value-1) (memv ?digit ?value-1)))\l"];
  "join1339" -> "rule : rule-6c";
  "match1324" [shape=box,label="match : (cell ?row-1 ?column-1 ?box ?value-1)\l"];
  "match1324" -> "join1339";
  "join1333" [label="join\l(and (pair? ?value) (memv ?digit ?value))\l"];
  "join1333" -> "join1339";
  "match1334" [shape=box,label="match : (cell ?row ?column ?box ?value)\l"];
  "match1334" -> "join1333";
  "join1335" [label="join\l"];
  "join1335" -> "join1333";
  "match1336" [shape=box,label="match : (digit ?digit)\l"];
  "match1336" -> "join1335";
  "join1309" [label="join\l"];
  "join1309" -> "join1335";
  "rule : search";
  "join1340" [label="join : no\l(and (pair? ?value-1) (< (length ?value-1) (length ?value)))\l"];
  "join1340" -> "rule : search";
  "match1341" [shape=box,label="match : (cell ? ? ? ?value-1)\l"];
  "match1341" -> "join1340";
  "join1342" [label="join\l"];
  "join1342" -> "join1340";
  "match1343" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(and (pair? ?value) (> (length ?value) 1))\l"];
  "match1343" -> "join1342";
  "join1307" [label="join\l"];
  "join1307" -> "join1342";
  "match1308" [shape=box,label="match : (board ?board)\l"];
  "match1308" -> "join1307";
  "join1309" [label="join\l"];
  "join1309" -> "join1307";
}
