(in-package :car) ;;;; ACL2 builtins (for automatic guards) (defun zp (obj) (zerop obj)) (defun proper-consp (obj) " :doc acl2-built-ins " (and obj (consp obj) (null (cdr (last obj))))) ;;;; graphviz dot support (defun dot-stobj (stobj &optional (stream t)) (loop initially (format stream "digraph {~%") for node in (cdr (assoc 'nodes stobj)) for exits = (cdr (assoc 'exits node)) for id = (cdr (assoc 'id node)) do (loop for exit in exits do (format stream "~d -> ~d;~%" id exit)) finally (format stream "}~%"))) (defun look (stobj) (with-open-file (out #p"tmp.dot" :direction :output) (dot-stobj stobj out)) (uiop:run-program "dot -Tpng tmp.dot > tmp.png") (uiop:run-program "feh tmp.png") (delete-file "tmp.dot"))