首页> 外文期刊>ACM SIGPLAN Notices: A Monthly Publication of the Special Interest Group on Programming Languages >The Bedrock Structured Programming System Combining Generative Metaprogramming and Hoare Logic in an Extensible Program Verifier
【24h】

The Bedrock Structured Programming System Combining Generative Metaprogramming and Hoare Logic in an Extensible Program Verifier

机译:在可扩展程序验证程序中将生成元编程和Hoare逻辑相结合的基岩结构化编程系统

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

摘要

We report on the design and implementation of an extensible programming language and its intrinsic support for formal verification. Our language is targeted at low-level programming of infrastructure like operating systems and runtime systems. It is based on a cross-platform core combining characteristics of assembly languages and compiler intermediate languages. From this foundation, we take literally the saying that C is a "macro assembly language": we introduce an expressive notion of certified low-level macros, sufficient to build up the usual features of C and beyond as macros with no special support in the core. Furthermore, our macros have integrated support for strongest postcondition calculation and verification condition generation, so that we can provide a high-productivity formal verification environment within Coq for programs composed from any combination of macros. Our macro interface is expressive enough to support features that low-level programs usually only access through external tools with no formal guarantees, such as declarative parsing or SQL-inspired querying. The abstraction level of these macros only imposes a compile-time cost, via the execution of functional Coq programs that compute programs in our intermediate language; but the run-time cost is not substantially greater than for more conventional C code. We describe our experiences constructing a full C-like language stack using macros, with some experiments on the verifiability and performance of individual programs running on that stack.
机译:我们报告了可扩展编程语言的设计和实现及其对形式验证的内在支持。我们的语言针对基础结构的底层编程,例如操作系统和运行时系统。它基于跨平台核心,结合了汇编语言和编译器中间语言的特征。在此基础上,我们直言不讳地说C是一种“宏汇编语言”:我们引入了经过认证的低级宏的表达方式,足以建立C的常规功能,并且超越了C并没有特殊支持的宏。核心。此外,我们的宏还集成了对最强大的后置条件计算和验证条件生成的支持,因此我们可以在Coq中为由任何宏组合组成的程序提供高效的正式验证环境。我们的宏接口具有足够的表现力,可以支持低级程序通常仅通过外部工具访问而没有形式保证的功能,例如声明性解析或SQL启发式查询。这些宏的抽象级别通过执行以中间语言计算程序的功能性Coq程序,仅增加了编译时成本。但是运行时成本并没有比传统的C代码高得多。我们描述了使用宏构建完整的类似于C的语言堆栈的经验,并对在该堆栈上运行的各个程序的可验证性和性能进行了一些实验。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号