简单:如何对虚假案件进行测试?

时间:2012-05-21 11:49:05

标签: prolog

测试应该返回true:如果第一部分为真,第二部分为假。

试图做那样的事情:

f_test  :- f(x), % 1st part
           f(y) is false. % 2nd part

但它给了我一个错误:

ERROR: is/2: Arithmetic: `false/0' is not a function.

请告诉我,如何正确地做到这一点?

2 个答案:

答案 0 :(得分:3)

(is)/2是一个用于执行算术的谓词。即使您的测试是关于算术的,也会优先使用(=:=)/2(因为(is)/2用于实例化变量。当您使用它来检查变量值时,您会误用它.OTOH,{ {1}}用于比较数字。)

但在这里,你的测试不是关于算术,而是关于知道某些事情是否真实。有一个运算符,它检查给定的术语是否可证明,它是(=:=)/2,使用是:

(\+)/1

答案 1 :(得分:1)

你可以尝试

f_test :- f(x), \+f(y).