[英]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.