Я кодирую редактируемое уравнение расстояния в Дафни.
Я думаю Я получил подтверждение, но мне любопытно, если есть более сжатое способ представления выбора, который повторение выбирает из трех вариантов редактирования:
E(i,j) := min { 1 + E(i-1,j), 1 + E(i, j-1), diff(i, j) + E(i-1,j-1) }
В Dafny:
if 1 + recEdDist'(a, b, ai+1, bi) < 1 + recEdDist'(a, b, ai, bi+1)
&& 1 + recEdDist'(a, b, ai+1, bi) < diff(a[ai], b[bi]) + recEdDist'(a, b, ai+1, bi+1)
then 1 + recEdDist'(a, b, ai+1, bi) else
if 1 + recEdDist'(a, b, ai, bi+1) < 1 + recEdDist'(a, b, ai+1, bi)
&& 1 + recEdDist'(a, b, ai, bi+1) < diff(a[ai], b[bi]) + recEdDist'(a, b, ai+1, bi+1)
then 1 + recEdDist'(a, b, ai, bi+1) else
diff(a[ai], b[bi]) + recEdDist'(a, b, ai+1, bi+1)
Полный источник здесь .