1 { q(X,Y) : d(Y) } 1 :- d(X). 1 { q(X,Y) : d(X) } 1 :- d(Y). :- d(X), 2 { q(U,V):d(U;V):U<=X:V<=X:#abs(X-U) == #abs(1-V)}. :- d(X), 2 { q(U,V):d(U;V):U>=queens-X+1:V<=X:#abs(queens-X+1-U) == #abs(1-V)}. :- d(X), 2 { q(U,V):d(U;V):U<=X:V>=queens-X+1:#abs(1-U) == #abs(queens-X+1-V)}. :- d(X), 2 { q(U,V):d(U;V):U>=queens-X+1:V>=queens-X+1:#abs(queens-X+1-U) == #abs(queens-V)}. d(1..queens). #hide. #show q(X,Y).