Ich habe ein Array "Zeile", die eine Zeichenfolge enthält in ihm der Länge "l" und ein Array "nl", die eine Zeichenfolge enthält Länge enthält "p". Hinweis: "l" und "p" müssen nicht unbedingt die Länge jedes entsprechenden Arrays sein. Der Parameter "at" ist die Position, an der die Einfügung innerhalb der "Zeile" erfolgt. Fortsetzen: Ein Array der Länge "p" wird in "Zeile" eingefügt und verschiebt alle Zeichen der "Zeile" zwischen Position (at, i, an + p), "p" Positionen nach rechts, um die Einfügung zu machen .Dafny Einfügemethode, eine Nachbedingung möglicherweise nicht auf diesem Rückweg halten
Meine Logik für die Sicherstellung ist zu prüfen, ob die in "line" eingefügten Elemente die gleiche Reihenfolge haben und dieselben sind wie die in "nl" enthaltenen Zeichen.
Hier ist the code:
method insert(line:array<char>, l:int, nl:array<char>, p:int, at:int)
requires line != null && nl != null;
requires 0 <= l+p <= line.Length && 0 <= p <= nl.Length ;
requires 0 <= at <= l;
modifies line;
ensures forall i :: (0<=i<p) ==> line[at+i] == nl[i]; // error
{
var i:int := 0;
var positionAt:int := at;
while(i<l && positionAt < l)
invariant 0<=i<l+1;
invariant at<=positionAt<=l;
{
line[positionAt+p] := line[positionAt];
line[positionAt] := ' ';
positionAt := positionAt + 1;
i := i + 1;
}
positionAt := at;
i := 0;
while(i<p && positionAt < l)
invariant 0<=i<=p;
invariant at<=positionAt<=l;
{
line[positionAt] := nl[i];
positionAt := positionAt + 1;
i := i + 1;
}
}
Hier die errors sind, die ich empfangen werde.
Danke.
Wollen Sie bei meiner anderen Frage zu helfen, etwas dagegen, wenn Sie für sie verfügbar sind? du scheinst der einzige Typ auf der Stack-Community zu sein, der Dafny versteht :) http: // stackoverflow.com/questions/37099671/dafny-ungelöst-fehler Vielen Dank im Voraus m8 – pmpc2