80 likes | 232 Views
上周小结. 2009 年 6 月 2 日 庄重. Separation Logic Solver. Formula x 是程序变量 ,a 是逻辑变量 证明器的目标是. Step1 – Normalization?. 调用 Simplex 和 CC, 得到相等关系 相比 SmallFoot , 能处理含有 <= >= < > 的 Pure 部分 利用这些相等关系进行重写 如果 Spatial 部分含有 , 则直接得到 false 对 和 , 转换为
E N D
上周小结 2009年6月2日 庄重
Separation Logic Solver • Formula • x是程序变量,a是逻辑变量 • 证明器的目标是
Step1 – Normalization? • 调用Simplex和CC, 得到相等关系 • 相比SmallFoot, 能处理含有<= >= < >的Pure部分 • 利用这些相等关系进行重写 • 如果Spatial部分含有 , 则直接得到 false • 对 和 , 转换为 • 把Spatial部分的 true 合并成一个
Step2 – Simplification? • 利用相关的Rule对VC形式进行化简?, 同时由Simplex和CC提供产生的Condition的证明 • Remove • 去掉由emp蕴含的谓词 • Match
Lseg • 展开Lseg • lseg(E1,E2)*lseg(E2,E3) lseg(E1,E3) • lseg(E,E1) exists a, E->a,next*lseg(next,E1) • List, Tree, Dlist, Dlseg …. • 自定义的谓词? • 按照定义可以得到类似这里的第2条Rule • 困难在于第1条Rule, 需要根据形状, 实现相关的引理证明
Step3 – Rearrange and Match • 调整Spatial部分断言的顺序, 逐项Match • 得到 时终止, 否则Fail
Step4 – Proof Gen • Coq中需要完成的工作 • Separation Logic的表示 • Separation Logic的相关定理 • e.g. PQ /\ RS P*R Q*S • S S • 内建谓词的定义, 相关定理 • emp • 展开方法, 即各种Rewrite Hint • 对应Rearrange的定理 • e.g. A*B*C C*A*B • A*B B*A
接下来的工作 • 修改Practical Tactics for Separation Logic的Coq实现, 区别主要是Pure Formula部分, 我们这里已经有Solver生成Pure部分的证明 • 实现相关的引理库,包括Separation Logic的性质以及内建谓词的重写规则.