Skip to main content
QUICK REVIEW

[论文解读] An Expressive Trace Logic for Recursive Programs

Dilian Gurov, Reiner Hähnle|arXiv (Cornell University)|Nov 20, 2024
Logic, programming, and type systems被引用 1
一句话总结

本文提出一种基于二元状态谓词、切分(chop)和最小不动点的表达性轨迹逻辑,用于指定和验证递归命令式程序。该工作建立了程序与轨迹公式的完全组合式语义,证明了组合式证明演算的正确性与相对完备性,并通过最强轨迹公式与标准程序的形式化,建立了程序与公式之间的伽罗瓦连接,揭示了编程构造与逻辑连接词之间的深层对应关系。

ABSTRACT

We present an expressive logic over trace formulas, based on binary state predicates, chop, and least fixed-points, for precise specification of programs with recursive procedures. Both, programs and trace formulas, are equipped with a direct-style, fully compositional, denotational semantics that on programs coincides with the standard SOS of recursive programs. We design a compositional proof calculus for proving finite-trace program properties, and prove soundness as well as (relative) completeness. We show that each program can be mapped to a semantics-preserving trace formula and, vice versa, each trace formula can be mapped to a canonical program over slightly extended programs, resulting in a Galois connection between programs and formulas. Our results shed light on the correspondence between programming constructs and logical connectives.

研究动机与目标

  • 开发一种表达能力与所指定程序相当的轨迹逻辑,以实现递归过程的精确、模块化验证。
  • 为程序与轨迹公式提供一种完全组合式的指称语义,使其与标准的小步操作语义相匹配。
  • 设计一种用于有限轨迹程序性质的组合式证明演算,确保其正确且相对完备。
  • 通过最强轨迹公式与标准程序,形式化程序与轨迹公式之间的伽罗瓦连接,揭示其结构对应关系。
  • 通过使用语句变量的符号延续,证明无需显式契约即可实现过程模块化验证。

提出的方法

  • 定义一种支持递归过程与非确定性条件的编程语言 Rec,并配备标准的小步操作语义。
  • 引入 Rec 的完全组合式指称语义,并证明其与 SOS 语义等价。
  • 通过二元状态谓词、切分(concatenation)和最小不动点构造轨迹逻辑,以表达有限程序轨迹的集合。
  • 将程序的最强轨迹公式(stf)定义为精确刻画其所有有限轨迹的轨迹公式。
  • 设计一种组合式证明演算,用于判断形式 S : ϕ,其推理规则可分解判断,代数规则可转换公式。
  • 定义一种标准程序构造方法,将任意轨迹公式映射回扩展语言 Rec∗ 中的程序,通过 stf 与标准程序映射在 Rec∗ 与轨迹公式之间建立伽罗瓦连接。

实验结果

研究问题

  • RQ1能否构造一种表达能力与递归命令式程序相当的轨迹逻辑,并具备完全组合式语义?
  • RQ2能否设计一种用于有限轨迹程序性质的组合式证明演算,使其既正确又相对完备?
  • RQ3如何形式化并证明编程构造与逻辑连接词之间的精确对应关系?
  • RQ4能否通过最强轨迹公式与标准程序,建立程序与轨迹公式之间的伽罗瓦连接?
  • RQ5在验证框架中不使用显式过程契约的情况下,是否仍可实现模块化、过程级的验证?

主要发现

  • Rec 的指称语义被证明与小步操作语义完全等价,确保了组合模型的正确性。
  • 任一程序的最强轨迹公式完全保留其语义,即 stf(S) 精确刻画了 S 的所有有限轨迹集合。
  • 针对判断 S : ϕ 的证明演算具有正确性与相对完备性,支持通过组合式推理验证有限轨迹性质。
  • 在语言 Rec∗ 与轨迹公式集合之间,正式建立了伽罗瓦连接,其中 stf 与标准程序映射构成伴随对。
  • 通过使用语句变量的符号延续,无需显式契约即可实现过程模块化验证,从而提出一种新颖的模块化“Call”规则。
  • 该框架自然支持复杂的跨过程性质,如调用序列、无回调保证及事件发生等,这些在霍尔逻辑或标准时序逻辑中难以表达。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

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