Dafny“呼叫可能违反上下文的修改条款”

时间:2017-11-22 17:34:34

标签: dafny

我正在尝试验证一个hashset,但是我的插入方法遇到了问题。

当我取消注释main中的插入时,我不明白为什么我得到“调用可能违反context的modifies子句”错误。我认为这与使用新鲜有关,但我不清楚如何/在何处进行此操作。

代码可在以下网址找到:https://rise4fun.com/Dafny/9UDG

1 个答案:

答案 0 :(得分:3)

问题在于插入声明修改了thisa,这使得对insert的第一次调用可能会将a字段更改为指向某事物任意,然后第二次调用insert修改任意事物。

一个简单的解决方案是将ensures a == old(a)添加到insert