Skip to main content
QUICK REVIEW

[论文解读] Separation Logic for Small-step Cminor

Andrew W. Appel, Sandrine Blazy|ArXiv.org|Jul 30, 2007
Logic, programming, and type systems参考文献 12被引用 9
一句话总结

本文提出了一种小步操作语义及其在 Coq 中机器检查的正确性证明,针对的是经过重新设计的 Cminor 语言中的分离逻辑。该工作使得对具有非终止、I/O 和未来并发扩展的底层 C-like 程序进行形式化验证成为可能,并在 Coq 中首次建立了针对小步语义的分离逻辑大规模机器检查正确性证明。

ABSTRACT

Cminor is a mid-level imperative programming language; there are proved-correct optimizing compilers from C to Cminor and from Cminor to machine language. We have redesigned Cminor so that it is suitable for Hoare Logic reasoning and we have designed a Separation Logic for Cminor. In this paper, we give a small-step semantics (instead of the big-step of the proved-correct compiler) that is motivated by the need to support future concurrent extensions. We detail a machine-checked proof of soundness of our Separation Logic. This is the first large-scale machine-checked proof of a Separation Logic w.r.t. a small-step semantics. The work presented in this paper has been carried out in the Coq proof assistant. It is a first step towards an environment in which concurrent Cminor programs can be verified using Separation Logic and also compiled by a proved-correct compiler with formal end-to-end correctness guarantees.

研究动机与目标

  • 重新设计 Cminor,采用小步操作语义以支持对非终止、I/O 和并发程序的推理。
  • 通过支持非局部控制结构(如 return 和 exit)的分离逻辑,实现对底层 C-like 程序的形式化验证。
  • 为从高级语言到机器代码的端到端经过认证的编译栈提供基础。
  • 通过使用预言机和分层证明架构,以模块化、可扩展的方式扩展语义和逻辑,以支持未来的并发扩展。

提出的方法

  • 基于延续机制重新设计 Cminor 的小步语义,以支持非局部控制和未来的并发性。
  • 使用 sextuples(带控制流追踪的前后置条件)定义 Cminor 的分离逻辑,以处理 return 和 exit 语句。
  • 在 Coq 证明助手中实现该逻辑与语义,采用模块化、参数化的方法,以支持新增顺序语句的可扩展性。
  • 通过将每条规则作为 Coq lemma 验证,证明分离逻辑的正确性,主定理确保主函数的安全性。
  • 使用预言机建模扩展指令(如 spawn、lock、unlock),在保持顺序正确性的同时支持并发推理。
  • 通过证明新小步语义与 CompCert 的大步语义在语义上等价,确保与经过认证的编译器兼容。

实验结果

研究问题

  • RQ1能否在小步操作语义下,为类似 Cminor 的低级命令式语言,形式化定义并验证分离逻辑的正确性?
  • RQ2在小步语义中,如何形式化建模非局部控制结构(如 return、exit)?
  • RQ3该逻辑能否被扩展以支持线程、锁和共享内存等并发特性,同时保持正确性?
  • RQ4是否可能构建一个在 Coq 中模块化、可扩展的框架,以同时支持 Cminor 的顺序验证和未来的并发推理?
  • RQ5小步语义能否与 CompCert 编译器现有的大步语义兼容,以确保端到端的验证保证?

主要发现

  • 本文首次在 Coq 中实现了针对小步语义的分离逻辑的机器检查正确性证明。
  • 小步语义通过基于延续的设计支持非局部控制结构(如 return 和 exit),从而支持对非终止和 I/O 程序的推理。
  • 分离逻辑被扩展为 sextuples 以追踪控制流影响,从而能够正确推理具有提前返回或退出的函数。
  • 正确性证明是模块化且可扩展的:通过预言机机制,可无需重新证明核心逻辑即可添加新的顺序语句(如 spawn、lock)。
  • 新小步语义与 CompCert 的大步语义在语义上等价,确保在新逻辑中验证的程序可使用经过认证的 CompCert 编译器进行编译。
  • 该框架被设计用于未来对并发 Cminor 的研究,为使用并发分离逻辑证明并发程序的非干扰性和正确性提供了清晰路径。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。