一句话:提出抽象解释中误差传播理论与部分完备性概念,并用证明系统估计分析累积误差上界。
可判定且可靠的程序性质近似必然带来不精确性,在抽象解释中表现为误报。本文提出一套估计抽象解释乃至程序分析中误差传播的理论:通过为抽象域加入一种弱化的度量距离,使描述近似对象相对精度的标准偏序与近似所产生的实际误差保持一致。作者将完备性(精确性)减弱为部分完备性,允许抽象解释器产生有界数量的误报,并证明对具有给定不精确界且部分完备的程序类成立的关键递归性质。进一步,他们建立证明系统,用于估计抽象解释器在分析过程中累积误差的上界。该框架足够通用,可实例化到多数已知抽象域度量。
Imprecision is inherent in any decidable (sound) approximation of undecidable program properties. In abstract interpretation this corresponds to the release of false alarms, e.g., when it is used for program analysis and program verification. As all alarming systems, a program analysis tool is credible when few false alarms are reported. As a consequence, we have to live together with false alarms, but also we need methods to control them. As for all approximation methods, also for abstract interpretation we need to estimate the accumulated imprecision during program analysis. In this paper we introduce a theory for estimating the error propagation in abstract interpretation, and hence in program analysis. We enrich abstract domains with a weakening of a metric distance. This enriched structure keeps coherence between the standard partial order relating approximated objects by their relative precision and the effective error made in this approximation. An abstract interpretation is precise when it is complete. We introduce the notion of partial completeness as a weakening of precision. In partial completeness the abstract interpreter may produce a bounded number of false alarms. We prove the key recursive properties of the class of programs for which an abstract interpreter is partially complete with a given bound of imprecision. Then, we introduce a proof system for estimating an upper bound of the error accumulated by the abstract interpreter during program analysis. Our framework is general enough to be instantiated to most known metrics for abstract domains.
@article{paperbot1546,
title = {Partial (In)Completeness in abstract interpretation: limiting the imprecision in program analysis},
author = {Marco Campion and Mila Dalla Preda and Roberto Giacobazzi},
journal = {Proceedings of the ACM on Programming Languages},
volume = {6},
number = {POPL},
year = {2022},
doi = {10.1145/3498721}
}