我有一个序言文件,它用给定的背景事实对给定的谓词 bongard(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 个规则的原始 prolog 文件保留额外的 n 个文件。File1 有第一条规则,file2 有前两条规则。你明白了。这样,如果 File2 对规则进行分类,我知道第二条规则被触发。
有没有人对此有更好的建议?
编辑:给谓词一个唯一的数字“bongard(A,X,nr)”怎么样,然后我可以同时写(X)和写(Nr),这样我就知道哪个谓词被触发了?