digraph "rule-network" {
  rankdir=LR;
  "rule : initialize";
  "join1969" [label="join : no\l"];
  "join1969" -> "rule : initialize";
  "match1970" [shape=box,label="match : (cell . ?)\l"];
  "match1970" -> "join1969";
  "join1971" [label="join\l"];
  "join1971" -> "join1969";
  "match1972" [shape=box,label="match : (board ?board)\l"];
  "match1972" -> "join1971";
  "join1973" [label="join\l"];
  "join1973" -> "join1971";
  "rule : rule-1";
  "join1974" [label="join\l"];
  "join1974" -> "rule : rule-1";
  "match1972" [shape=box,label="match : (board ?board)\l"];
  "match1972" -> "join1974";
  "join1975" [label="join : all\l"];
  "join1975" -> "join1974";
  "match1976" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(number? ?value)\l"];
  "match1976" -> "join1975";
  "join1973" [label="join\l"];
  "join1973" -> "join1975";
  "rule : rule-2";
  "join1977" [label="join\l"];
  "join1977" -> "rule : rule-2";
  "match1978" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(eq? ?value (quote ()))\l"];
  "match1978" -> "join1977";
  "join1973" [label="join\l"];
  "join1973" -> "join1977";
  "rule : rule-3";
  "join1979" [label="join\l"];
  "join1979" -> "rule : rule-3";
  "match1972" [shape=box,label="match : (board ?board)\l"];
  "match1972" -> "join1979";
  "join1980" [label="join\l"];
  "join1980" -> "join1979";
  "match1981" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(and (pair? ?value) (null? (cdr ?value)))\l"];
  "match1981" -> "join1980";
  "join1973" [label="join\l"];
  "join1973" -> "join1980";
  "rule : rule-4a";
  "join1982" [label="join\l(not (= ?column-1 ?column))\l(and (number? ?value-1) (= ?value-1 ?value))\l"];
  "join1982" -> "rule : rule-4a";
  "match1983" [shape=box,label="match : (cell ?row ?column-1 ?box-1 ?value-1)\l"];
  "match1983" -> "join1982";
  "join1984" [label="join\l"];
  "join1984" -> "join1982";
  "match1976" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(number? ?value)\l"];
  "match1976" -> "join1984";
  "join1973" [label="join\l"];
  "join1973" -> "join1984";
  "rule : rule-4b";
  "join1985" [label="join\l(not (= ?row-1 ?row))\l(and (number? ?value-1) (= ?value-1 ?value))\l"];
  "join1985" -> "rule : rule-4b";
  "match1986" [shape=box,label="match : (cell ?row-1 ?column ?box-1 ?value-1)\l"];
  "match1986" -> "join1985";
  "join1984" [label="join\l"];
  "join1984" -> "join1985";
  "match1976" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(number? ?value)\l"];
  "match1976" -> "join1984";
  "join1973" [label="join\l"];
  "join1973" -> "join1984";
  "rule : rule-4c";
  "join1987" [label="join\l(or (not (= ?row-1 ?row)) (not (= ?column-1 ?column)))\l(and (number? ?value-1) (= ?value-1 ?value))\l"];
  "join1987" -> "rule : rule-4c";
  "match1988" [shape=box,label="match : (cell ?row-1 ?column-1 ?box ?value-1)\l"];
  "match1988" -> "join1987";
  "join1984" [label="join\l"];
  "join1984" -> "join1987";
  "match1976" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(number? ?value)\l"];
  "match1976" -> "join1984";
  "join1973" [label="join\l"];
  "join1973" -> "join1984";
  "rule : rule-5a";
  "join1989" [label="join\l(not (= ?column-1 ?column))\l(and (pair? ?value-1) (memv ?value ?value-1))\l"];
  "join1989" -> "rule : rule-5a";
  "match1990" [shape=box,label="match : (cell ?row ?column-1 ?box-1 ?value-1)\l"];
  "match1990" -> "join1989";
  "join1984" [label="join\l"];
  "join1984" -> "join1989";
  "match1976" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(number? ?value)\l"];
  "match1976" -> "join1984";
  "join1973" [label="join\l"];
  "join1973" -> "join1984";
  "rule : rule-5b";
  "join1991" [label="join\l(not (= ?row-1 ?row))\l(and (pair? ?value-1) (memv ?value ?value-1))\l"];
  "join1991" -> "rule : rule-5b";
  "match1992" [shape=box,label="match : (cell ?row-1 ?column ?box-1 ?value-1)\l"];
  "match1992" -> "join1991";
  "join1984" [label="join\l"];
  "join1984" -> "join1991";
  "match1976" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(number? ?value)\l"];
  "match1976" -> "join1984";
  "join1973" [label="join\l"];
  "join1973" -> "join1984";
  "rule : rule-5c";
  "join1993" [label="join\l(or (not (= ?row-1 ?row)) (not (= ?column-1 ?column)))\l(and (pair? ?value-1) (memv ?value ?value-1))\l"];
  "join1993" -> "rule : rule-5c";
  "match1994" [shape=box,label="match : (cell ?row-1 ?column-1 ?box ?value-1)\l"];
  "match1994" -> "join1993";
  "join1984" [label="join\l"];
  "join1984" -> "join1993";
  "match1976" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(number? ?value)\l"];
  "match1976" -> "join1984";
  "join1973" [label="join\l"];
  "join1973" -> "join1984";
  "rule : rule-6a";
  "join1995" [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"];
  "join1995" -> "rule : rule-6a";
  "match1996" [shape=box,label="match : (cell ?row ?column-1 ? ?value-1)\l"];
  "match1996" -> "join1995";
  "join1997" [label="join\l(and (pair? ?value) (memv ?digit ?value))\l"];
  "join1997" -> "join1995";
  "match1998" [shape=box,label="match : (cell ?row ?column ?box ?value)\l"];
  "match1998" -> "join1997";
  "join1999" [label="join\l"];
  "join1999" -> "join1997";
  "match2000" [shape=box,label="match : (digit ?digit)\l"];
  "match2000" -> "join1999";
  "join1973" [label="join\l"];
  "join1973" -> "join1999";
  "rule : rule-6b";
  "join2001" [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"];
  "join2001" -> "rule : rule-6b";
  "match2002" [shape=box,label="match : (cell ?row-1 ?column ? ?value-1)\l"];
  "match2002" -> "join2001";
  "join1997" [label="join\l(and (pair? ?value) (memv ?digit ?value))\l"];
  "join1997" -> "join2001";
  "match1998" [shape=box,label="match : (cell ?row ?column ?box ?value)\l"];
  "match1998" -> "join1997";
  "join1999" [label="join\l"];
  "join1999" -> "join1997";
  "match2000" [shape=box,label="match : (digit ?digit)\l"];
  "match2000" -> "join1999";
  "join1973" [label="join\l"];
  "join1973" -> "join1999";
  "rule : rule-6c";
  "join2003" [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"];
  "join2003" -> "rule : rule-6c";
  "match1988" [shape=box,label="match : (cell ?row-1 ?column-1 ?box ?value-1)\l"];
  "match1988" -> "join2003";
  "join1997" [label="join\l(and (pair? ?value) (memv ?digit ?value))\l"];
  "join1997" -> "join2003";
  "match1998" [shape=box,label="match : (cell ?row ?column ?box ?value)\l"];
  "match1998" -> "join1997";
  "join1999" [label="join\l"];
  "join1999" -> "join1997";
  "match2000" [shape=box,label="match : (digit ?digit)\l"];
  "match2000" -> "join1999";
  "join1973" [label="join\l"];
  "join1973" -> "join1999";
  "rule : search";
  "join2004" [label="join : no\l(and (pair? ?value-1) (< (length ?value-1) (length ?value)))\l"];
  "join2004" -> "rule : search";
  "match2005" [shape=box,label="match : (cell ? ? ? ?value-1)\l"];
  "match2005" -> "join2004";
  "join2006" [label="join\l"];
  "join2006" -> "join2004";
  "match2007" [shape=box,label="match : (cell ?row ?column ?box ?value)\l(and (pair? ?value) (> (length ?value) 1))\l"];
  "match2007" -> "join2006";
  "join1971" [label="join\l"];
  "join1971" -> "join2006";
  "match1972" [shape=box,label="match : (board ?board)\l"];
  "match1972" -> "join1971";
  "join1973" [label="join\l"];
  "join1973" -> "join1971";
}
