【发布时间】:2019-11-30 16:12:47
【问题描述】:
我是 Dafny 的新手,我正在尝试在不使用 *.
谁能告诉我我的代码有什么问题?我认为是不变量和减少。
method CalcTerm(m: int, n: nat) returns (res: int)
ensures res == 5*m-3*n;
{
var m1: nat := abs(m);
var n1: nat := n;
res := 0;
while (m1!=0)
invariant m1>=0
decreases m1
{
res := res+5;
m1 := m1-1;
}
if (m<0) { res := -res; }
while (n1!=0)
invariant n1 >= 0
decreases n1
{
res := res-3;
n1 := n1-1;
}
}
但它一直在说:
A postcondition might not hold on this return path. 29 2
【问题讨论】:
标签: dafny