我正在实现静态分析作为Frama-C的插件,作为分析的一部分,我需要生成最弱的前置条件公式。 我找到了这个相关的问题,How do I use the results of WP in another plug-in?,但答案仅仅是因为WP插件有一个API,而不是如何将它用于这个特定的任务。 WP API文档主要是类型,函数和类的参考列表,并且包含很少有关不同部分如何组合在一起以及如何使用它们的信息(我是Ocaml的新手,所以也许我错过了一些“显而易见的东西” “ 这里)。我花了一些时间使用API文档,WP插件手册以及Frama-C开发人员手册,但我只能获得WP插件生成的验证条件,而不是原始最弱的前置条件公式。一个wp谓词变换器。
是否有一种方法,最好在WP API中公开,为给定的函数和输入公式生成最弱的前置公式?
如果有办法做到这一点,我应该关注哪些模块以及工作流程大致是什么样的?例如。我应该正常运行WP插件并以某种方式提取结果或仅调用wp计算所需的一些选择函数吗?
修改
我的搜索让我调查了以下看似有希望的功能:
Calculus.Cfg.compute : Cil2cfg.t ->
WpStrategy.strategy ->
W.t_prop list * (Format.formatter -> Cil2cfg.edge -> unit)
使用此函数对Calculus.Cfg仿函数进行实例化是一种正确的方法吗?如果是这种情况,在这种情况下WpStrategy.strategy的目的是什么,以及如何正确构建它? (这些与手册中提到的策略不同,对吗?)