如果我使用不同的 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 故障,我建议您再问一个关于您的特定程序的问题,并尽可能包括一个最小的工作示例。
正如 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 故障,我建议您再问一个关于您的特定程序的问题,并尽可能包括一个最小的工作示例。