arXivDaily arXiv每日学术速递 周一至周五更新
arXiv周末暂无论文更新,休息一下吧,周末愉快~~
arXiv 1307.6239cs.PL
收藏

软合同验证

Soft Contract Verification

Phuc C. Nguyen, Sam Tobin-Hochstadt, David Van Horn

摘要:

行为软件契约是一种广泛使用的机制,用于管理组件之间的值流。然而,运行时监控和强制执行的合同强加了显着的开销和延迟发现故障组件的运行时。为了克服这些问题,我们提出了软合同验证,其目的是静态地证明组件的完整或部分合同的正确性,写在一个无类型的,高阶语言与一流的合同。我们的方法使用高阶符号执行,利用合同作为符号值(包括未知的行为值)的来源,并采用可更新的合同不变量堆来推理流敏感的事实。我们证明了符号执行健全近似的动态语义和验证程序不能被指责。该方法能够分析一级契约、递归数据结构、未知函数和控制流敏感的值的细化,这些在动态语言中都是惯用的。它有效地利用了现成的求解器来解决问题,而不需要大量的编码。这种方法在它们自己的基准测试上与广泛的现有工具(包括类型系统、流分析器和模型检查器)竞争。

英文摘要:

Behavioral software contracts are a widely used mechanism for governing the flow of values between components. However, run-time monitoring and enforcement of contracts imposes significant overhead and delays discovery of faulty components to run-time. To overcome these issues, we present soft contract verification, which aims to statically prove either complete or partial contract correctness of components, written in an untyped, higher-order language with first-class contracts. Our approach uses higher-order symbolic execution, leveraging contracts as a source of symbolic values including unknown behavioral values, and employs an updatable heap of contract invariants to reason about flow-sensitive facts. We prove the symbolic execution soundly approximates the dynamic semantics and that verified programs can't be blamed. The approach is able to analyze first-class contracts, recursive data structures, unknown functions, and control-flow-sensitive refinements of values, which are all idiomatic in dynamic languages. It makes effective use of an off-the-shelf solver to decide problems without heavy encodings. The approach is competitive with a wide range of existing tools---including type systems, flow analyzers, and model checkers---on their own benchmarks.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑