Frama-c 未能从 Allan Blanchard 的教程中证明 verify.c

Frama-c fails to prove verify.c from Allan Blanchard's tutorial

我正在尝试从 Allan Blanchard 的 tutorial and I have had trouble verifying the installation as suggested in the tutorial. The author provides a C file 中学习带有 ACSL 注释的 frama-c,所有这些 frama-c 都应该能够证明。但是,当我 运行 命令 (frama-c-gui -wp -rte main.c) 时,我得到以下信息:

Frama-C GUI screenshot

我在 ocaml-base-compiler.4.11.1 开关上通过 opam(版本 2.0.4)安装了 frama-c(版本 22.0)。当我安装它时,我遇到了 Why3 无法检测到 Alt-Ergo 的问题,我最终手动编辑了 ~/why3.config 。我在这里提到它,尽管我不确定它是否与上述问题有关。

根据我可以根据屏幕截图判断,这似乎确实非常相关。值得注意的是,每当你在证明者后面看到 Failed 时,这就是出现问题的迹象:证明者根本无法证明某事而宁愿被指示为 Unknown.

对于您的情况,我倾向于认为问题出在您使用的 Alt-Ergo 2.4.0 版本相当新(实际上比最新的 Why3 版本更新)这一事实, 并且还不受 Why3 的​​支持。正如在 Frama-C 的 reference configuration 中提到的,已知 Alt-Ergo 2.2.0 得到完全支持,因此您可能希望 opam pin add alt-ergo 2.2.0 与该版本一起工作。之后别忘了让Why3重新检测证明者why3 config --detect-provers。如果这一步有问题,请随时就此特定主题提出一个新问题(尽管我怀疑该问题与 Alt-Ergo 2.4.0 有关)。