【24h】

A Kripke Logical Relation Between ML and Assembly

机译:机器学习与装配体之间的Kripke逻辑关系

获取原文
获取原文并翻译 | 示例

摘要

There has recently been great progress in proving the correctness of compilers for increasingly realistic languages with increasingly realistic runtime systems. Most work on this problem has focused on proving the correctness of a particular compiler, leaving open the question of how to verify the correctness of assembly code that is hand-optimized or linked together from the output of multiple compilers. This has led Benton and other researchers to propose more abstract, compositional notions of when a low-level program correctly realizes a high-level one. However, the state of the art in so-called "compositional compiler correctness" has only considered relatively simple high-level and low-level languages. In this paper, we propose a novel, extensional, compiler-independent notion of equivalence between high-level programs in an expressive, impure ML-like A-calculus and low-level programs in an (only slightly) idealized assembly language. We define this equivalence by means of a biorthogonal, step-indexed, Kripke logical relation, which enables us to reason quite flexibly about assembly code that uses local state in a different manner than the high-level code it implements (e.g., self-modifying code). In contrast to prior work, we factor our relation in a symmetric, language-generic fashion, which helps to simplify and clarify the formal presentation, and we also show how to account for the presence of a garbage collector. Our approach relies on recent developments in Kripke logical relations for ML-like languages, in particular the idea of possible worlds as state transition systems.
机译:最近,在使用越来越现实的运行时系统证明编译器对于越来越现实的语言的正确性方面取得了巨大的进步。关于此问题的大多数工作都集中在证明特定编译器的正确性上,而未解决如何验证手动优化的或从多个编译器的输出链接在一起的汇编代码的正确性的问题。这促使Benton和其他研究人员提出了更抽象的组成概念,即低级程序何时正确实现了高级程序。但是,所谓的“组成编译器正确性”的最新技术仅考虑了相对简单的高级和低级语言。在本文中,我们提出了一种新颖的,扩展的,与编译器无关的,等同于表达力,不纯像ML的A-演算的高级程序与(仅略微)理想化汇编语言的低级程序之间等效性的概念。我们通过双正交,逐步索引的Kripke逻辑关系来定义这种等价关系,这使我们能够灵活地对以局部状态与其使用的高级代码不同的方式使用局部状态的汇编代码进行推理(例如,自我修改码)。与以前的工作相比,我们以对称的,语言通用的方式来考虑我们的关系,这有助于简化和阐明形式化表示,并且还展示了如何解决垃圾收集器的存在。我们的方法依赖于类似于ML的语言的Kripke逻辑关系的最新发展,尤其是将可能世界视为状态转换系统的想法。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号