【发布时间】:2020-11-21 17:08:53
【问题描述】:
- 为什么以下断言失败?
- 此外,如果我取消注释
ASSERT 0(第 22 行),为什么所有断言都有效?
function CountFactors(i:nat): nat
requires i >= 1;
{
var a := set b | 1 <= b <= i && i % b == 0;
|a|
}
function CountFactorsSet(i:nat): set<nat>
requires i >= 1;
{
var a := set b | 1 <= b <= i && i % b == 0;
a
}
method CountFactorsMethod(i:nat) returns (a: set<nat>)
requires i >= 1;
{
a := set b | 1 <= b <= i && i % b == 0;
}
method Main()
{
var r:= CountFactorsMethod(2);
print(r);
// assert CountFactorsSet(2) == {1, 2}; // ASSERT 0
assert CountFactors(2) == 2; // ASSERT 1
}
这里是link to the code。我正在使用 Dafny 2.3.0.10506
【问题讨论】:
标签: dafny