d(1..n). % The domain for nodes #nondomain edge(X,Y). #external edge(X,Y). node(X) :- edge(X,Y), d(X;Y). node(Y) :- edge(X,Y), d(X;Y). color(1..k). 1 {color(X,C):color(C)} 1 :- node(X), d(X). :- color(X,C), color(Y,C), edge(X,Y), color(C), d(X;Y).