2
我開始學習Dafny並學習了不變式。我有這樣的代碼:dafny中的指數法:不變式可能不會被維護
function pot(m:int, n:nat): int
{
if n==0 then 1
else if n==1 then m
else if m==0 then 0
else pot(m,n-1) * m
}
method Pot(m:int, n:nat) returns (x:int)
ensures x == pot(m,n)
{
x:=1;
var i:=0;
if n==0 {x:=1;}
while i<=n
invariant i<=n;
{
x:=m*x;
i:=i+1;
}
}
而給出的錯誤如下:「該循環不變量可能不被循環維護。」我想我可能需要另一個不變量,但我認爲我的代碼是正確的,除此之外(我猜)。任何幫助表示讚賞。提前致謝。
首先,謝謝你再次回答我,詹姆斯!但是,是的,我嘗試了你之前說過的話,但它沒有奏效,所以我認爲問題沒有解決。我會稍後再試。謝謝。 – Byakko
修復此問題後,您將得到一個*不同*錯誤,您仍然需要修復以完成驗證方法。 –
是的,我注意到哈哈。我正在嘗試修復它。 – Byakko