#options -d none #external q(X,Y). d(1..q). q(X,Y) :- d(X;Y). %% for grounding % Make sure queens don't threaten each other :- q(X,Y), q(X1,Y), X1 != X, d(X;X1;Y). :- q(X,Y), q(X,Y1), Y1 != Y, d(X;Y;Y1). :- q(X,Y), q(X1,Y1), X != X1, Y != Y1, abs(X-X1) == abs(Y-Y1), d(X;X1;Y;Y1).