当crosshair没有找到反例时,它是否使用Z3求解器来证明我的合同成立?
文档表明没有反例并不能保证该属性成立,但这仅仅是因为翻译或建模可能不正确吗?
免责声明:我是 CrossHair 的主要贡献者(我只是使用堆栈溢出作为一种公共方式来记录我以前被问过的问题的答案)
除了可能与不健全的建模有关的许多问题外,CrossHair 不提供此保证。
CrossHair 是一个非常不完整的系统。在内部,对于每个后置条件,它会生成三个可能的结果:“确认”、“拒绝”和“未知”。它只为“被拒绝”的情况产生输出;因此,没有输出并不表明该声明得到了验证。
为什么 CrossHair 会这样工作?两个原因:
最好将 CrossHair 视为求解器辅助的模糊测试器。
话虽如此,如果您仍然想查看哪些属性是可确认的,您可以使用特殊的“report all”选项请求此输出:crosshair check --report_all [TARGET]
.