为什么Dafny不能验证某些简单的基数和关系命题?

时间:2018-02-24 14:36:58

标签: verification dafny

这是一个简单的Dafny程序:两行代码和三个断言。

method Main()
{
    var S := set s: int | 0 <= s < 50 :: 2 * s;
    var T := set t | t in S && t < 25;
    assert |S| == 50;                    // does not verify  
    assert T <= S;                       // does verify
    assert T < S;                        // does not verify
}

S的基数为50,但是Dafny无法按照书面形式验证此声明。 同样,T显然是S的子集,Dafny可以验证这种说法;但是T也是S的合适子集,Dafny无法验证这种说法。

发生了什么事情&#34;引擎盖下&#34;造成这些困难的原因是,那些正在学习和使用达菲的人可能会预见并避免或处理这些困难吗?

0 个答案:

没有答案