在SWI-Prolog中,以下查询给出了以下结果:
?- X mod 2 #= 0, X mod 2 #= 0.
X mod 2#=0,
X mod 2#=0.
Run Code Online (Sandbox Code Playgroud)
虽然正确,但显然不需要第二个约束
同理:
?- dif(X,0), dif(X,0).
dif(X, 0),
dif(X, 0).
Run Code Online (Sandbox Code Playgroud)
有没有办法避免这种重复约束?(显然,最正确的方法是不编写导致这种情况的代码,但并不总是那么容易).