私は、与えられた背景事実で与えられた述語ボンガード(A、X)を分類するプロローグファイルを持っています。ルールの抜粋:
bongard(A,[neg]) :- triangle(A,C), \+ in(A,C,D), !.
bongard(A,[neg]) :- \+ triangle(A,C), !.
...
このプログラムを次のように実行しています: swipl -s file.pl -g "bongard(a, X), write(X)"
、この述語の分類を取得します。
ここで、どのルールがトリガーされ、実際に変数を制限したかを知りたいと思います。これを行うためのきちんとした方法はありますか?現在、n個のルールを持つ元のプロローグファイル用に追加のn個のファイルを保持する必要があります。File1 には最初のルールがあり、file2 には最初の 2 つのルールがあります。このように、File2 がルールを分類すると、2 番目のルールが実行されたことがわかります。
誰かがこれについてより良い提案をしていますか?
編集:述語に一意の番号「bongard(A、X、nr)」を与えることについてはどうですか?