簡體   English   中英

Dafny上下文修改子句錯誤

[英]Dafny context modifies clause error

我很難擺脫我的Dafny程序中的最后一個錯誤。 有人能指出我正確的方向嗎? 這是代碼: http//rise4fun.com/Dafny/2FPo

我收到此錯誤:賦值可能更新數組元素而不是封閉上下文的modifies子句

我嘗試在合並方法中添加修改矩形(盡管我很確定已經包含在修改它中)但這只是在合並方法調用上創建了類似的錯誤。

我真的迷失了這個。 謝謝您的幫助

of this, not modification of the things pointed to by those fields. 問題是“修改這個”允許修改這個 ,而不是修改那些字段指向的東西。 換句話說,如果該方法正在進行,那將是合適的:

this.rectangles := new_rectangle_array;

但如果它是這樣做的話不是:

this.rectangles[3] := new_rect;

所以,在你有“修改這個”的地方你應該改為“修改矩形”。

出於類似的原因,Test需要使用“修改c.rectangles”進行注釋,而不是“修改c”。

最后,為了說服Dafny調用Test是可以的,你需要給Couverture的構造函數一個約束矩形字段的后置條件。 否則,驗證者無法確定是否可以調用Test:只要驗證者可以知道,couv可能包含一些不允許Main修改的隨機數組。

有關完整代碼,請參閱http://rise4fun.com/Dafny/Skrg

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM