Ich fing an, Dafny zu lernen, und ich habe gerade Invarianten gelernt. Ich habe diesen Code bekam:Exponentielle Methode in Dafny: Invariante möglicherweise nicht beibehalten
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;
}
}
und der gegebenen Fehler ist folgende: „Diese Schleifeninvariante möglicherweise nicht durch die Schleife aufrechterhalten werden“ Ich denke, ich könnte eine andere Invariante brauchen, aber ich denke mein Code ist anders als das (denke ich). Jede Hilfe wird geschätzt. Danke im Voraus.
Zunächst einmal, vielen Dank für die Antwort auf mich, James! Aber ja, ich habe versucht, was du vorher gesagt hast, aber es hat nicht funktioniert, also dachte ich, das Problem sei nicht gelöst. Ich werde es später versuchen. Vielen Dank. – Byakko
Nach Behebung dieses Problems erhalten Sie einen * anderen * Fehler, den Sie noch beheben müssen, um die Methode zu verifizieren. –
Ja, ich habe es bemerkt haha. Ich versuche es zu beheben. – Byakko