我使用frama-C WP并想调试我的ACSL注释(了解为什么说服者说我"不知道")。 我有一些绿色或橙色的结果。我打开why3 IDE并查看生成的脚本。然后我从列表中选择一个理论/目标,并能够启动Alt-Ergo或Coq IDE。我想在Coq IDE中使用生成的代码。我看到一些公理,然后是定理WP 然后,例如:
intros a a_1 i_3 i_2 i_1 i t_2 t_1 t t_8 t_7 t_6 t_5 t_4 t_3 a_4 a_3 a_2 x
x_1 x_2 x_3 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18
h19 h20 h21 h22 h23 h24 h25.
Qed.
当我"走到尽头"在Coq中,我看到一个错误"尝试保存不完整的证据"。我怎样才能得到结果" Proved"或"未知"在Coq IDE中,我在frama-c或why3结果窗口中看到了什么? 还有什么更好的方法来理解为什么我从证明者那里得到了消息"我不知道",并决定我是否有一个程序有错误或一块坏的ACSL规范?
答案 0 :(得分:3)
"尝试保存不完整的证据"在Coq翻译由"未知"在Frama-C / WP中。事实上,Frama-C正等着您以交互方式完成intros ...
和Qed
之间的证明。如果你成功地让Coq高兴,保存脚本将允许你有一个绿色(或黄绿色)子弹(" Proved")。
关于你的第二个问题,试图以交互方式进行证明是一种了解问题所在的好方法。除了Coq之外,您还可以使用Why3已知的交互式证明器(如果我没记错的话,可以使用Isabelle和PVS),以及直接在WP,TIP中构建的新交互式证明器(参见the WP manual的第2.3节)。