如何比较Alloy中的函数相等性?类似的东西:
--[(All x)(Exists y)[R(x,y)]
-- and (All x)(All y)[R(x,y) -> R(y,x)]]
-- =
-- (All x)[R(x,x)] and
assert checkEquality{
( all m: Model, x:m.A| some y:m.A | (y in x.(m.R)) ) and
( all m: Model, x:m.A, y:m.A | (y in x.(m.R) -> x in y.(m.R)) ) =
( all m: Model, x:m.A | (x in x.(m.R))
}
答案 0 :(得分:0)
这是一个初级版本。通过&(39)(全部x)(全部y)[R(x,y) - >进行猜测。 R(Y,X)]]'部分,你可能想到了更特别的东西;在这种情况下,请进一步说明您的问题。
sig Value {}
pred p1 [x, y: Value] {
// ...
}
pred p2 [x, y: Value] {
// ...
}
assert equ_pred {
all x, y: Value | p1 [x, y] <=> p2 [x, y]
}
check equ_pred