#ifndef N
#define N 5
#endif
spec Queen(bool q[N][N]) {
s:
not(
(forall(int[sizeOf(N-1)] i=0 .. (N-1))
exists(int[sizeOf(N-1)] j=0 .. (N-1))
q[i][j]
)
&
(forall(int[sizeOf(N-1)] i=0 .. (N-1))
forall(int[sizeOf(N-1)] j=0 .. (N-1))
(q[i][j] ->
forall(int[sizeOf(N-1)] k=1 .. (N-2))
!q[i][(j+k)%N])
)
&
(forall(int[sizeOf(N-1)] i=0 .. (N-1))
forall(int[sizeOf(N-1)] j=0 .. (N-1))
(q[i][j] ->
forall(int[sizeOf(N-1)] k=1 .. (N-2))
!q[(i+k)%N][j])
)
&
(forall(int[sizeOf(N-1)] i=0 .. (N-1))
forall(int[sizeOf(N-1)] j=0 .. (N-1))
(q[i][j] ->
forall(int[sizeOf(N-1)] k=1 .. (N-2))
!q[(i+k)%N][(j+k)%N])
)
&
(forall(int[sizeOf(N-1)] i=0 .. (N-1))
forall(int[sizeOf(N-1)] j=0 .. (N-1))
(q[i][j] ->
forall(int[sizeOf(N-1)] k=1 .. (N-2))
!q[(i+k)%N][(j-k)%N])
)
);
}