爱因斯坦谜语中的数值比较

Numerical comparision in Einstein Riddle

我的版本对学生的姓名、年龄、出身和学科感兴趣。

solve :-
    length(X, 6),                  % there are six students
    member([manuel, 19, _, _], X), % Manuel is 19 years old
    member([_, 20, _, win], X),    % 20 years old student studies win
    ...

但是有些规则我不知道如何在 Prolog 中实现。例如:

奥利弗比数学系的学生大两岁,但比华盛顿的学生小两岁。

如何创建可以比较年龄的规则?

member([oliver,OLIVER_AGE,_,_],X) ,
member([_,MATH_AGE,_,math],X) ,
member([_,WASHINGTON_AGE,washington,_],X) ,
OLIVER_AGE is MATH_AGE + 2 ,
OLIVER_AGE is WASHINGTON_AGE - 2