Code Prolog décrivant le CSP du coloriage d'une carte

variables(L) :- variables(L,14).

variables([],0).
variables([N:[bleu,rouge,vert,jaune]|L],N) :-
N > 0,
M is N - 1,
variables(L,M).

consistants((_,V1),(_,V2)) :- V1 \= V2.
consistants((X1,V),(X2,V)) :-
\+ voisins(X1,X2),
\+ voisins(X2,X1).

voisins(1,7).
voisins(1,10).
voisins(1,9).
voisins(1,11).
voisins(1,12).
voisins(1,13).
voisins(2,8).
voisins(2,12).
voisins(2,14).
voisins(3,14).
voisins(3,7).
voisins(3,10).
voisins(4,14).
voisins(4,9).
voisins(4,11).
voisins(5,11).
voisins(5,12).
voisins(5,8).
voisins(6,7).
voisins(6,14).
voisins(6,13).
voisins(7,13).
voisins(7,10).
voisins(7,14).
voisins(8,12).
voisins(9,10).
voisins(9,11).
voisins(10,14).
voisins(11,12).
voisins(12,13).
voisins(12,14).
voisins(13,14).