一句话:提出 LabelBI 证明系统,用测试级别量化欠近似保证,从而可靠组合验证与测试等异构分析。
大型系统的形式验证成本高昂,因而常由已验证组件与经测试等欠近似分析的组件混合构成,但现有推理系统无法可靠组合这些异构分析并给出整体保证。本文面向由通信进程组成的系统,每个进程拥有内部资源与通信通道。核心思想是将关于进程行为的保证量化为“测试级别”,刻画该保证成立所依赖的约束。作者基于束蕴含逻辑设计证明系统 LabelBI,支持对不同分析组件进行 rely-guarantee 推理,并给出迹语义,证明逻辑可靠性及序列演算的切消。最后通过案例研究展示其表达能力。
Given the high cost of formal verification, a large system may include differently analyzed components: a few are fully verified, and the rest are tested. Currently, there is no reasoning system that can soundly compose these heterogeneous analyses and derive the overall formal guarantees of the entire system. The traditional compositional reasoning technique—rely-guarantee reasoning—is effective for verified components, which undergo over-approximated reasoning, but not for those components that undergo under-approximated reasoning, e.g., using testing or other program analysis techniques. The goal of this paper is to develop a formal, logical foundation for composing heterogeneous analysis, deploying both over-approximated (verification) and under-approximated (testing) reasoning. We focus on systems that can be modeled as a collection of communicating processes. Each process owns its internal resources and a set of channels through which it communicates with other processes. The key idea is to quantify the guarantees obtained about the behavior of a process as a test level , which captures the constraints under which this guarantee is analyzed to be true. We design a novel proof system LabelBI based on the logic of bunched implications that enables rely-guarantee reasoning principles for a system of differently analyzed components. We develop trace semantics for this logic, against which we prove our logic is sound. We also prove cut elimination of our sequent calculus. We demonstrate the expressiveness of our logic via a case study.
@article{paperbot2971,
title = {Quantified Underapproximation via Labeled Bunches},
author = {Lang Liu and Farzaneh Derakhshan and Limin Jia and Gabriel A. Moreno and Mark Klein},
journal = {Proceedings of the ACM on Programming Languages},
volume = {9},
number = {OOPSLA2},
year = {2025},
doi = {10.1145/3763051}
}