In addition to the answer provided by @coder (+s(0)), I would suggest the use of library(clpfd), a pair representation for the coordinates and a name that reflects which argument is what, e.g. from_to/2. Then your predicate could look something like this:
:- use_module(library(clpfd)).
from_to(X-Y,X1-Y1):-
X1 #= X+1,
Y1 #= Y-2.
from_to(X-Y,X1-Y1):-
X1 #= X+2,
Y1 #= Y-1.
Using clpfd makes it possible to use the predicate both ways, e.g.: I'm at position 3-4, where can I move to?
?- from_to(3-4,T).
T = 4-2 ? ;
T = 5-3
Or: I'm at position 3-4, where could I have come from?
?- from_to(F,3-4).
F = 2-6 ? ;
F = 1-5
The latter case doesn't work if you define your predicate using is/2, since in that case the expression on the right side is expected to be instantiated:
?- X is 3+4.
X = 7
?- 7 is X+4.
ERROR!!
INSTANTIATION ERROR- in arithmetic: expected bound value
?- 7 is 3+X.
ERROR!!
INSTANTIATION ERROR- in arithmetic: expected bound value