次のナレッジ ベースがある場合、X が既に父親であると判断されている場合に、プロローグが X が母親でもあるかどうかを「チェック」しようとしないように、parent_of 用語にカットを追加するにはどうすればよいですか?
father_of(max,john).
father_of(max,james).
father_of(max,gabe).
mother_of(june,john).
mother_of(june,james).
parent_of(X,Y) :- father_of(X,Y).
parent_of(X,Y) :- mother_of(X,Y).
たとえば、私は欲しい:
parent_of(max,Y) は次のようになります: Y=john, Y=james, Y=gabe
parent_of(jun,Y) は次のようになります: Y=john, Y=james
最初のものについては、プロローグが max が Mother_of であるかどうかをチェックしようとさえしたくありません。
私はすでに次のような多くの組み合わせを試しました:
parent_of(X,Y) :- father_of(X,Y),!. <-- fixes an X and Y and thus will list only Y=john
parent_of(X,Y) :- !,father_of(X,Y). <-- works for parent_of(max,Y) but not parent_of(jane)
これは可能ですか?