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