「S」で指定された学生がすべての科目で「A」の成績を取得したかどうかを確認するために、次のプログラムを作成しました。ここで、検索ツリーのすべてのパスがグレード「A」で評価された場合にのみ、出力「true」を与えることができることを知っています。生徒がカット述語でグレード「A」を取得していない場合、私は達成することができます。しかし、すべてのパスが検索されたときにtrueと評価された述語を指定する方法が実際にはわかりません。
grade(123,'CSE1','A').
grade(123,'DIC','A').
grade(123,'ML','A').
grade(123,'PL','A').
grade(123,'CVIP','A').
grade(1234,'CSE1','A').
grade(1234,'DIC','A').
grade(1234,'ML','A').
grade(1234,'PL','B').
grade(1234,'CVIP','B').
honor(S):-grade(S,_,Y),not(Y='A'),!,false.