|
1
|
| Jason Orendorff Oliver · 技术社区 · 7 年前 |
|
|
1
1
了解触发因素绝对是成为达夫尼专家的重要组成部分! 我们最近开始 frequently asked questions page 对于dafny,它包含了对触发器的相当广泛的描述。我建议你从阅读FAQ的那一部分开始。(此答案的其余部分假设您已经这样做了。) 有一件事没有涉及,那就是如何推断触发器。(我很快会将这个答案的编辑版本添加到常见问题解答中。)触发器实际上可能在两个不同的级别被推断出来:dafny或z3。一般来说,最好在dafny级别推断触发器,因为在涉及到从翻译到z3的所有编码细节之前,更可能找到一个简洁的触发器。然而,如果dafny不能推断出一个触发器,有时z3仍然可以做一些有用的事情作为权宜之计。(在这种情况下,dafny会发出警告。)
z3和dafny使用的推理过程在概念上非常相似。给出一个量化表达式
表达
一般来说,dafny的触发器推断是通过查看
为了进一步阅读,我推荐这篇论文 Simplify: A Theorem Prover for Program Checking 德特勒夫斯,尼尔森和萨克斯。simplify是一个早期的smt求解器,它开创了启发式使用触发器处理量词的先河。本文第5节对该方法进行了详细的技术描述。 |
|
|
lexicalscope · 在另一个文件中包含一个Dafny文件 11 年前 |