Реализация вставки кучи через Dafny (со спецификациями)
Я пишу HeapInsert на Dafny, но не могу доказать правильность кода.
Я попытался написать это с помощью этого алгоритма: я использую этот алгоритм:
heap_size++;
int i = heap_size - 1;
harr[i] = k;
while (i != 0 && harr[parent(i)] <= harr[i])
{
swap(&harr[i], &harr[parent(i)]);
i = parent(i);
}
но я понятия не имею, что такое инвариант цикла, и это довольно сложно доказать.
Мне нужно написать HeapInsert в dafny со спецификациями и доказательствами.