\begin{verbatim} vertex(1). vertex(2). vertex(3). vertex(4). vertex(5). edge(1,2). edge(1,3). edge(2,3). edge(2,4). edge(4,5). edge(5,2). edge(3,4). reachable(1). edge(X,Y) :- vertex(X), vertex(Y), edge(Y,X). other(U,V) :- vertex(U), vertex(V), vertex(W), not eq(V,W), chosen(U,W). chosen(U,V) :- vertex(U), vertex(V), edge(U,V), not other(U,V). :- vertex(U), vertex(V), vertex(W), chosen(U,W), chosen(V,W), not eq(U,V). reachable(V) :- vertex(U), vertex(V), reachable(U), chosen(U,V). :- vertex(U), not reachable(U). hide vertex(X). hide edge(X,Y). hide other(U,V). hide reachable(X). \end{verbatim}