我正在使用Boogie验证语言,在该示例中,我有以下示例给出了与我相反的结果。
// Defining a function and giving it a meaning through axiomatization.
function EqualsInt(x: int, y: int) : bool;
axiom (forall x: int, y: int :: EqualsInt(x, y) == (x == y));
procedure main()
{
assert (exists i: int :: i == i); // Assertion is verified.
assert (forall i: int :: EqualsInt(i,i)); // Assertion is verified.
assert (exists i: int :: EqualsInt(i,i)); // Assertion does not hold.
}
为什么前两个断言成立,而后一个断言不成立?
现在我想知道那是布吉游戏中的错误还是它是我不正确理解的逻辑的基本结果?