我有一个prolog文件,用给定的背景事实对给定的谓词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有前2条规则..你明白了。这样,如果File2对规则进行分类,我知道第二条规则被触发了。
有没有人对此有任何更好的建议?
编辑:给谓词一个唯一的数字“bongard(A,X,nr)”然后我可以写(X)和写(Nr),所以我知道哪个谓词被解雇了?
答案 0 :(得分:0)
你能不能只添加一个身份证号码:
as.Date()
然后做(例如)
bongard(1,A,[neg]) :- triangle(A,C), \+ in(A,C,D), !.
bongard(2,A,[neg]) :- \+ triangle(A,C), !.
...