达芙妮 "Call may violate context's modifies clause"

Dafny "Call may violate context's modifies clause"

我正在尝试验证哈希集,但 运行 我的插入方法出现问题。

我不明白为什么在取消注释 main 中的插入时会出现 "call may violate context's modifies clause" 错误。我认为这与新鲜的使用有关,但我不清楚如何/在何处执行此操作。

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

问题是插入声明修改 thisa,这使得第一次调用 inserta 字段更改为指向的可能性任意的东西,然后第二次调用 insert 修改那个任意的东西。

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