%% representing the graph node(1). node(2). node(3). node(4). node(5). edge(1,2). edge(1,3). edge(2,4). edge(2,5). edge(3,4). edge(3,5). is_color(red). is_color(green). is_color(yellow). %% each node is assigned a color 1 { color(X,red), color(X,green), color(X, yellow)} 1 :- node(X). %% constraint checking :- edge(X,Y), is_color(C), color(X,C), color(Y,C).