% http://www.cs.kuleuven.be/~dtai/events/ASP-competition/Benchmarks/GraphColouring.shtml :-include(base). solve(As):- findall(V,member(node(V),As),Vs), findall(C,member(colour(C),As),Cs), findall(link(X,Y),member(link(X,Y),As),Es), map(Vs,Vars,MapV), % defined in base.pl map(Cs,0,ICs,MapC), Vars :: ICs, links_to_neqs(Es,Neqs,MapV), post_neqs(Neqs), labeling([ffc],Vars),!, map(CVs,Vars,MapC), output(Vs,CVs). solve(_):- format("UNSATISFIABLE~n"). links_to_neqs([],[],_Map). links_to_neqs([link(X,Y)|Es],[Vx#\=Vy|Neqs],Map):- map(X,Vx,Map), map(Y,Vy,Map), links_to_neqs(Es,Neqs,Map). output([],[]):-nl. output([V|Vs],[C|Cs]):- format("chosenColour(~w,~w). ",[V,C]), output(Vs,Cs). test:- solve([node(1),node(2),node(3),link(1,2),link(2,1),link(2,3),link(3,2),link(3,1),link(1,3),colour(red),colour(green),colour(blue)]).