% guess horizontal position for each row q(X,1) v q(X,2) v q(X,3) v q(X,4) v q(X,5) v q(X,6) v q(X, 7) v q(X,8) :- #int(X ), X > 0. % check % assert that each column may only contain (at most) one queen :- q(X1,Y), q(X2,Y), X1 <> X2. % assert that no two queens are in a diagonal from top left to bottom right :- q(X1,Y1), q(X2,Y2), X2=X1+N, Y2=Y1+N, N > 0. % assert that no two queens are in a diagonal from top right to bottom left :- q(X1,Y1), q(X2,Y2), X2=X1+N, Y1=Y2+N, N > 0.