如何检查一个集合中只有一个元素在一个愚蠢的ensures
中发生了更改?
示例:
method myMethod(myParameter: int)
requires myParameter >= 0
modifies mySet
ensures ONLY_ONE_ELEMENT_IN_THE_SET_HAS_CHANGED
{
...
}
如果您的意思是删除了一个元素并添加了另一个元素,则需要显式地将它们作为(ghost(返回变量提供,并使用old
关键字引用mySet
的前一个值
method myMethod(myParameter: int) returns (ghost removed: int, ghost added: int)
requires myParameter >= 0
modifies mySet
ensures old(mySet) - {removed} + {added} == mySet
{
...
}