2016-12-17 62 views
0

對KB是Prolog謂詞half_sister_of(X,Y)的規則?

parent_of(john,ann). 
parent_of(mary,ann). 
parent_of(mary,sylvia). 
parent_of(brian,sylvia). 

female(sylvia). 
female(ann). 


?-Half_sister_of(X,Y). 
X=ann 
X=sylvia ; 

X=sylvia 
X=ann 
+1

您顯示的示例無效並會生成錯誤。 Prolog中的謂詞不能以大寫字母開頭。你應該考慮一個半姐妹是什麼。如果你可以定義一個半姐妹(用文字),那麼你寫下你的Prolog謂詞來反映它。 – lurker

回答

0
half_sister_of(X,Y) :- 
    parent_of(A,X), 
    parent_of(A,Y), 
    parent_of(B,X), 
    parent_of(C,Y), 
    not(A = B), 
    not(A = C), 
    not(B = C), 
    female(Y). 

爲了用於Y爲X的半妹妹,它們必須共享一個父(A),和不共享的其他家長(B和C),並Y必須是女性。