我正在尝试验证一个hashset,但是我的插入方法遇到了问题。
当我取消注释main中的插入时,我不明白为什么我得到“调用可能违反context的modifies子句”错误。我认为这与使用新鲜有关,但我不清楚如何/在何处进行此操作。
代码可在以下网址找到:https://rise4fun.com/Dafny/9UDG
答案 0 :(得分:3)
问题在于插入声明修改了this
和a
,这使得对insert
的第一次调用可能会将a
字段更改为指向某事物任意,然后第二次调用insert
修改任意事物。
一个简单的解决方案是将ensures a == old(a)
添加到insert
。