move( state(X,X,G,C), state(Y,Y,G,C)):-
opposite(X,Y),
safe( state(Y,Y,G,C) ).
move( state(X,W,X,C), state(Y,W,Y,C)):-
opposite(X,Y),
safe( state(Y,W,Y,C) ).
move( state(X,W,G,X), state(Y,W,G,Y)):-
opposite(X,Y),
safe( state(Y,W,G,Y) ).
move( state(X,W,G,C), state(Y,W,G,C)):-
opposite(X,Y),
safe( state(Y,W,G,C) ).
}
The reader is invited to check that our description of safe
state transitions is complete.
Having dealt with the preliminaries of defining safe states and transitions
between safe states we define a
predicate