У меня есть массив «строка», в котором содержится строка, содержащаяся в нем длины «l», и массив «nl», который содержит строку, содержащуюся в ней длины "п". Примечание: «l» и «p» необязательно должны быть длиной каждого массива-корреспондента. Параметром «at» будет позиция, в которую вставка будет сделана внутри «линии». Возобновление: массив «p» будет вставлен в «линию», перемещая все символы «линии» между позицией (at, i, at + p), «p» вправо, чтобы сделать вставку ,Метод вставки Dafny, условие postcondition не может удерживаться на этом пути возврата
Моей логикой для обеспечения является проверка того, имеют ли элементы, вставленные в строку, одинаковый порядок и те же, что и символы, содержащиеся в «nl».
Вот 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;
}
}
Вот в errors, что я получаю.
Спасибо.
Вы не могли бы помочь в моей другой вопрос, если вы для него? вы, похоже, единственный парень в сообществе стека, который понимает Dafny :) http: // stackoverflow.com/questions/37099671/dafny-unsolved-errors Заранее благодарен m8 – pmpc2