如何检查两个谓词是否相同?

时间:2013-11-15 18:27:26

标签: alloy

我对某个谓词有两种不同的实现,我想检查它们是否都返回相同的实例,我该如何实现呢?

感谢。

1 个答案:

答案 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