我在递归验证(X1,Y1,F)中有一些谓词。第一个谓词是 gen(X1,Y1,X2,Y2),它接收 X1 和 Y1 并生成数字 X2 和 Y2。其他谓词是我要验证的谓词。如果其中一个谓词返回 F=1,则应使用 verif(X2,Y2,F) 重新启动循环,但我不知道该怎么做。如果所有谓词都返回 F=0,则递归结束。这是示例:
verif(X1,Y1,0).
verif(X1,Y1,F):-
gen(X1,Y1,X2,Y2),
pred1(X2,Y2,A,B,F),
pred2(X2,Y2,C,D,F),
pred3(X2,Y2,E,G,F),
verif(X2,Y2,F).
问题是当 3 个谓词为 F 返回不同的值时,它将失败。一种方法是使用谓词重复直到没有一个谓词失败,但这样谓词 gen(X1, Y1, X2, Y2) 将始终生成相同的 X2 和 Y2,因为它总是会收到相同的 X1 和 Y1。