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
抽象状态,表示一组空的具体状态,并且该分支的分析结束。
在 EVA tutorial, I found this screenshot:
那么,我想问一下:
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
抽象状态,表示一组空的具体状态,并且该分支的分析结束。