https://rise4fun.com/Dafny/ZkKN
Dafny 2.3.0未验证此断言。通过MVS,但已在rise4fun中进行了验证,当然还会有关于触发器的警告。导致“验证不确定”。
此外,https://rise4fun.com/Dafny/Um6t不会在rise4fun中打印“ hello”(未运行)。由于没有“断言冲突”,因此应该有一些错误。 请帮忙吗?
答案 0 :(得分:0)
您的程序会在我添加-arith:2
标志时进行验证,该标志为算术符号添加符号同义词,并允许它们在触发器中使用。
编辑: 一个更一般的答案是您的问题使用非线性算术,这通常是不确定的。在https://github.com/dafny-lang/dafny/wiki/FAQ的FAQ中有一些有关如何处理这些技巧的提示,但是我本人对Dafny和非线性算术经验不足。
我不知道您的文件为什么以前可以工作,但是要进行调查,您可以将SMT编码的Dafny供稿打印到Z3(请参阅dafny output as SMT file)并比较不同的版本,如果没有差异,也许会有差异在Z3版本之间。
也许有一种方法可以对问题进行不同的编码,并假定在任何工具中都没有错误,可以在不同的求解器版本之间以更稳定的方式工作。