% generates a .dot file for graphviz to create a graph dotgen(Edge):- dotgen_head, dotgen_body(Edge), dotgen_foot. dotgen_head :- write('digraph G {'),nl, write(' rankdir=LR'),nl, write(' node [shape=box]'),nl. dotgen_foot:- write('}'),nl. dotgen_body(Edge) :- Edge = EdgePredicateName / EdgeNumberOfArgs, functor(EdgePredicate,EdgePredicateName,EdgeNumberOfArgs), EdgePredicate, EdgePredicate =.. [_,FromNode, ToNode|_], write('"'), write(FromNode), write('"'), write(' -> '), write('"'), write(ToNode), write('"'), nl, fail. dotgen_body(_).