SWI prolog返回true而不是变量
这是我的密码SWI prolog返回true而不是变量,prolog,Prolog,这是我的密码 /*facts*/ male(James). male(Charles). male(William). female(Megan). male(George). female(Catherine). female(Diana). female(Elizabith). parent(James,Charles). parent(James,Elizabeth). parent(Charles,Catherine). parent(Charles,William). parent(C
/*facts*/
male(James).
male(Charles).
male(William).
female(Megan).
male(George).
female(Catherine).
female(Diana).
female(Elizabith).
parent(James,Charles).
parent(James,Elizabeth).
parent(Charles,Catherine).
parent(Charles,William).
parent(Charles,Megan).
parent(Elizabeth,Diana).
parent(Diana,George).
/*rules*/
different(X,Y):- X\=Y.
father(X, Y) :- parent(X,Y), male(X).
mother(X, Y) :- parent(X,Y), female(X).
grandparent(X,Y):- parent(X,F), parent(F,Y).
grandma(X,Y):- parent(X,F), parent(F,Y),female(X).
sister(X,Y):-female(X), parent(F,X), parent(F,Y),different(X,Y) .
brother(X,Y):-male(X), parent(F,X), parent(F,Y),different(X,Y).
aunt(X,Y):-parent(F,Y), sister(X,F), female(X).
uncle(X,Y):-parent(F,Y), brother(X,F), male(X).
我给母亲写信(X,Y)。要求返回的名称不为true或false。
与所有语句相同,事实使用变量而不是常量。常量和函子以小写开头,所以james
,charles
,megan
和diana
,而不是james
,charles
,megan
和diana
:
男性(詹姆斯)。
男(查尔斯)。
男(威廉)。
女(梅根)。
男(乔治)。
女(凯瑟琳)。
女(戴安娜)。
女(伊丽莎白)。
父母(詹姆斯、查尔斯)。
父母(詹姆斯、伊丽莎白)。
父母(查尔斯,凯瑟琳)。
父母(查尔斯,威廉)。
父母(查尔斯,梅根)。
父母(伊丽莎白,戴安娜)。
父母(戴安娜,乔治)。
male(james).
male(charles).
male(william).
female(megan).
male(george).
female(catherine).
female(diana).
female(elizabith).
parent(james, charles).
parent(james, elizabeth).
parent(charles, catherine).
parent(charles, william).
parent(charles, megan).
parent(elizabeth, diana).
parent(diana, george).