Вы получаете значения из процедуры так же, как вводите их. Введите новую переменную и попробуйте удовлетворить sits_right_of(Y, alex)
. Тогда это также должно быть удовлетворено: sits_right_of(X, Y)
. Процедура может быть определена так:
sits_two_places_right_of(X, Y) :- sits_right_of(X, Z), sits_right_of(Z, Y).
Да, такую процедуру можно создать аналогично этому для каждого числа или людей, или использовать арифметику, если вы хотите сделать ее параметром.