受约束求解器启发的归纳不变式推理算法
1. 引言
在程序分析领域,推断归纳不变式是一个重要的任务。传统的抽象解释方法在某些情况下可能会因为拓宽操作导致无法找到合适的归纳不变式。本文介绍一种受约束求解器启发的算法,该算法利用简单通用的抽象域(如区间)来有效计算循环迭代的效果,避免了为特定场景发明专门抽象域的需求。
2. 术语和符号
2.1 语言和语义
考虑的语言是一种简单的数值语言,其定义如下:
prog ::= assume entry : bexpr;
while true do
assert inv : bexpr;
body : stat
done
expr ::= V
V ∈V
| [a, b]
a, b ∈R
| −expr
| expr ◦ expr
◦∈{ +, −, ×, / }
stat ::= V ← expr
V ∈V
| if bexpr then stat else stat
| stat; stat
bexpr ::= expr < expr
<∈{ <, ≤, = }
| ¬bexpr
| bexpr ◦ bexpr
◦∈{ ∧, ∨}
该语言包含实值变量、数值表达式、布尔表达式和各种语句,如赋值、条件语句和序列语句。程序由一个无限循环组成,从由布尔表达式指定的入口状态开始,循环体中明确包
超级会员免费看
订阅专栏 解锁全文
700

被折叠的 条评论
为什么被折叠?



