% guess the path path(X,Y) v outPath(X,Y) :- edge(X,Y), reached(X). :- start(X), path(_,X). % each vertex in the path must have at most one % incoming and one outcoming edge :- vtx(X), path(X,Y), path(X,Z), Y != Z. :- vtx(X), path(X1,X), path(X2,X), X1 != X2. % the path must feature all vertices :- vtx(X), not reached(X). reached(X) :- path(Y,X). reached(X) :- start(X).