【发布时间】:2019-09-29 19:49:06
【问题描述】:
我如何帮助 Dafny 证明以下两个断言是相同的:
method foo(xs : seq<int>)
requires forall x :: x in xs ==> 0 <= x < 5;
{
assert forall x :: x in xs ==> 0 <= x < 5;
assert forall i :: 0 <= i < |xs| ==> 0 <= xs[i] < 5;
}
此外,Dafny 似乎能够证明以下内容是相同的。这是为什么呢?
predicate test(value : int) {
0 <= value < 5
}
method foo'(xs : seq<int>)
requires forall x :: x in xs ==> test(x);
{
assert forall i :: 0 <= i < |xs| ==> test(xs[i]);
}
【问题讨论】: