40 likes | 327 Views
Tactic 设计. 移除 emp 移除 () 实例化 True True * q->y ==> p->x * True ?1 * q->y ==> p->x * ?2 移除 Pure 的断言 [x=y] * p->x ==> p->y 更新堆的状态 (p->x) h --> (p->y) (write h p y). 化简断言 谓词展开 目前正在写针对 List 的展开策略 需要一般化以支持自定义的谓词 存在量词 没有 True 的情况 p->x ==> exists v, p->v 有 True 的情况
E N D
Tactic设计 • 移除emp • 移除() • 实例化True • True * q->y ==> p->x * True • ?1 * q->y ==> p->x * ?2 • 移除Pure的断言 • [x=y] * p->x ==> p->y • 更新堆的状态 • (p->x) h --> (p->y) (write h p y)
化简断言 • 谓词展开 • 目前正在写针对List的展开策略 • 需要一般化以支持自定义的谓词 • 存在量词 • 没有True的情况 • p->x ==> exists v, p->v • 有True的情况 • True ==> exists v, p->v • 化简 • 对前后断言做遍历 • A * B * C ==> D * E * F • 逐对尝试frame rule等化简策略 • 涉及谓词的化简
目前目标是完成针对List的自动处理 • 在操作系统验证中涉及”True”的问题 • 可以简化的地方比较多 • 自定义谓词的支持还需要更多的考虑
TODO • 和张瑧婷解决目前证明器存在的Bug • 近期完成支持目前生成的断言的Tactic