如Dafny GitHub上的Wiki中所述,当Dafny无法证明程序中的断言时,可能是由于我的程序不正确或Dafny的不完整所致。但是我发现尝试理解它后,Dafny的反例是虚假的,所以我仍然不知道我的程序是否正确。
我的问题如下。
如果我设法使用另一个Boogie后端(例如Corral)使用/print
从Dafny检查已翻译的Boogie程序,并且Corral还返回了一个使Boogie程序无效的模型,那可以保证该模型不支持我的Dafny程序,那么我可以用它来调试吗?还是它仍然可能是伪造的,所以不必费心尝试吗?
从他们的论文看来,Corral和Symbooglix应该保证所提供的模型应该是已翻译的Boogie程序的具体反例,所以也许我的问题更多是关于Dafny程序和已翻译的Boogie程序是否是语义上等价的。
PS:我尝试将翻译后的bpl文件传递给Corral并检查该bpl中的特定Boogie程序,而Corral只是说它找不到该程序,所以我在辩论是否要使其正常工作。
答案 0 :(得分:0)
翻译后的Boogie文件不太可能再有一个后端,因为不完整的原因是根本。
例如,Dafny提供了几种数据结构(包括序列)的公理化,而这些公理化已知是不完整的。
如果您在理解特定的Dafny失败时遇到麻烦,建议您再问一个有关特定程序的问题,并在可能的情况下提供一个最小的工作示例。