J'ai un tableau "ligne" qui contient une chaîne de longueur "l" et un tableau "nl" qui contient une chaîne de longueur "p". Note: "l" et "p" ne doivent pas nécessairement être la longueur de chaque tableau correspondant. Le paramètre "at" sera la position où l'insertion sera faite dans "line". Reprise: Un tableau de longueur "p" sera inséré dans "ligne", en déplaçant tous les caractères de "ligne" entre la position (at, i, at + p), 'p' positions vers la droite afin de rendre l'insertion .Dafny méthode d'insertion, une postcondition ne peut pas tenir sur ce chemin de retour
Ma logique pour les garanties est de vérifier si les éléments insérés en "ligne" ont le même ordre et sont les mêmes que les caractères contenus dans "nl".
Voici 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;
}
}
Voici les errors que je reçois.
Merci.
Pourriez-vous pour aider à mon autre question, si vous êtes disponible pour elle? vous semblez être le seul gars sur la communauté de la pile qui comprend Dafny :) http: // stackoverflow.com/questions/37099671/dafny-non résolues-erreurs Merci d'avance m8 – pmpc2