Prolog中的祖父谓词

Prolog中的祖父谓词,prolog,predicate,Prolog,Predicate,我用SWI Prolog编写了以下程序: male(reza). male(aliakbar). male(behrooz). male(said). male(aliasghar). male(taghi). male(gholamreza). male(hadi). female(fatema). female(tahere). female(olya). female(fatema). mother(fateme,reza). mother(olya,hasan). mother(x,y)

我用SWI Prolog编写了以下程序:

male(reza).
male(aliakbar).
male(behrooz).
male(said).
male(aliasghar).
male(taghi).
male(gholamreza).
male(hadi).
female(fatema).
female(tahere).
female(olya).
female(fatema).
mother(fateme,reza).
mother(olya,hasan).
mother(x,y) :-
    wife(x,z),
    father(z,y).
brother(said,reza).
brother(x,y) :-
    father(z,x),
    father(z,y),
    x\==y,
    male(x).
sister(tahere,fateme).
sister(x,y) :-
    father(z,x),
    father(z,y),
    x\==y,
    female(x).
sister(olya,aliakbar).
wife(tahere,gholamreza).
father(gholamreza,hadi).
father(gholamreza, nastaran).
father(abdollah,hasan).
father(aliakbar,reza).
father(taghi,olya).
father(taghi,aliakbar).
father(taghi,aliasghar).
father(aliakbar,said).
grandfather(x,z) :-
    father(x,y),
    father(y,z).
grandfather(x,z) :-
    father(x,y),
    mother(y,z).
uncle(y,x) :-
    father(z,x),
    brother(z,y),
    male(y).
aunt(y,x) :-
    mother(z,x),
    sister(z,y),
    female(y).
cousin(y,x) :-
    aunt(z,x),
    mother(z,y),
    female(y).
cousin(y,x) :-
    aunt(z,x),
    mother(z,y),
    male(y).
当我参考“父(X,Y),父(Y,Z)”,它会返回正确的答案(名字是波斯语的),即返回

X = taghi,
Y = aliakbar,
Z = reza ;
X = taghi,
Y = aliakbar,
Z = said ;
false.
但是我找不到祖父(X,Y)的正确答案。请告诉我为什么


谢谢

小心:在Prolog中,case是至关重要的。您的规则无法正确解释,因为您没有使用大写字母作为变量。

非常感谢。这就是答案。