我对某个谓词有两种不同的实现,我想检查它们是否都返回相同的实例,我该如何实现呢?
感谢。
答案 0 :(得分:3)
我断言这两个谓词都是true或者都是false,并检查断言。
pred P1 { ... }
pred P2 { ... }
assert P1_equiv_P2 { P1 iff P2 }
check P1_equiv_P2
如果谓词采用参数,那么当然你需要在相同的参数上检查它们:
pred P1[x : univ] { ... }
pred P2[x : univ] { ... }
assert P1_equiv_P2 { all x : univ | P1[x] iff P2[x] }
check P1_equiv_P2