如果我使用不同的 Boogie 后端来检查 Dafny 翻译的 bpl 文件,我能否找到非伪造的反例?

Can I find non-spurious counter example if I use different Boogie backend to check translated bpl files by Dafny?

正如 Dafny 上的 Wiki 中所述 GitHub,当 Dafny 无法证明程序中的断言时,可能是因为我的程序不正确或 Dafny 的不完整性。但在我尝试理解 Dafny 的反例后,我发现它是虚假的,所以我仍然不知道我的程序是否正确。

我的问题如下。 如果我设法使用另一个 Boogie 后端(例如 Corral)使用 /print 检查 Dafny 翻译的 Boogie 程序,并且 Corral 还 returns 一个使 Boogie 程序无效的模型,这是否可以保证该模型反驳我的 Dafny程序,我可以用它来调试?还是它仍然可能是假的,所以不要费心去尝试?

从他们的论文来看,在我看来,Corral 和 Symbooglix 应该保证提供的模型应该是翻译的 Boogie 程序的具体反例,所以我的问题可能更多关于 Dafny 程序和翻译的 Boogie程序在语义上是等价的。

PS:我尝试将翻译后的 bpl 文件传递​​给 Corral 并检查该 bpl 中的特定 Boogie 程序,而 Corral 只是说找不到该程序,所以我正在考虑是否要让它工作.

另一个后端不太可能对翻译的 Boogie 文件有更好的运气,因为不完整的原因是根本的。

例如,Dafny 提供了几种数据结构的公理化,包括序列,而这些公理化已知是不完整的。

如果您无法理解特定的 Dafny 故障,我建议您再问一个关于您的特定程序的问题,并尽可能包括一个最小的工作示例。