Frama-C EVA 插件中 "after" 列的含义和用途是什么

What is the meaning and purpose of "after" column in Frama-C EVA plugin

EVA tutorial, I found this screenshot: 中有解释:“导致这种情况的确切值显示在 c5 列中:-1。C 标准将负数的左移视为未定义的行为。因为 - 1 是此调用堆栈中唯一可能的值,由警报引起的减少导致 post 状态,即。“

那么,我想问一下:

Frama-C EVA 插件中 "after" 列的含义和用途是什么?

有没有更详细的文档来理解EVA中使用的术语"reduction"和"post-state"?

当您在 GUI 中 select 语句 s 时,有两种相关的内存状态:s 之前的状态(也称为预状态),以及一个在 s 的副作用完成之后(也称为 post 状态)。这就是为什么在 Values 选项卡中有两列用于您感兴趣的每个 lval。pre 和 post-state 的概念在程序验证中是非常标准的,基本上可以追溯到 Hoare Logic.

术语"reduction"指的是在发出警报后,EVA 将尝试从其抽象状态中删除与具体状态相对应的元素,这些元素肯定会导致未定义的行为。事实上,抽象状态应该是所有具体状态的过度近似,这些具体状态可以达到语句 ,而无需事先触发未定义的行为:如果在 s 之前发生故障,没有必要推测在评估​​ s 时会发生什么。在您提到的示例中,我们遇到了所有可能的具体状态都会导致错误的特殊情况。因此,我们最终得到 BOTTOM 抽象状态,表示一组空的具体状态,并且该分支的分析结束。