一句话:提出关系高阶逻辑 RHOL,用于证明高阶程序的关系性质,并统一嵌入多种关系精化类型系统。
关系程序验证可推理两个程序或同一程序的不同执行,用于等价、精化、信息流安全与相对成本等性质。高阶场景下现有关系精化类型系统擅长关联结构相似的项,却难以处理结构差异较大的项。本文提出关系高阶逻辑 RHOL,针对带归纳类型和递归定义的简单类型 λ 演算,保留类型导向风格,同时允许规则同时或分别推理两个项以提升表达力。作者证明 RHOL 与高阶逻辑 HOL 等价,由此导出主体归约、传递规则可容许性与集合论可靠性,并给出关系精化类型、依赖分析与相对成本等系统的可靠嵌入,验证了此前无法处理的例子。
Relational program verification is a variant of program verification where one can reason about two programs and as a special case about two executions of a single program on different inputs. Relational program verification can be used for reasoning about a broad range of properties, including equivalence and refinement, and specialized notions such as continuity, information flow security or relative cost. In a higher-order setting, relational program verification can be achieved using relational refinement type systems, a form of refinement types where assertions have a relational interpretation. Relational refinement type systems excel at relating structurally equivalent terms but provide limited support for relating terms with very different structures. We present a logic, called Relational Higher Order Logic (RHOL), for proving relational properties of a simply typed λ-calculus with inductive types and recursive definitions. RHOL retains the type-directed flavour of relational refinement type systems but achieves greater expressivity through rules which simultaneously reason about the two terms as well as rules which only contemplate one of the two terms. We show that RHOL has strong foundations, by proving an equivalence with higher-order logic (HOL), and leverage this equivalence to derive key meta-theoretical properties: subject reduction, admissibility of a transitivity rule and set-theoretical soundness. Moreover, we define sound embeddings for several existing relational type systems such as relational refinement types and type systems for dependency analysis and relative cost, and we verify examples that were out of reach of prior work.
DOI 原文 · arXiv · PDF(开放获取) · DBLP
@article{AguirreBG0S17,
title = {A relational logic for higher-order programs},
author = {Alejandro Aguirre and Gilles Barthe and Marco Gaboardi and Deepak Garg and Pierre-Yves Strub},
journal = {Proceedings of the ACM on Programming Languages},
volume = {1},
number = {ICFP},
year = {2017},
doi = {10.1145/3110265}
}