Abstract
AbstractWe present a method for automatic inference of conditions on the initial states of a program that guarantee that the safety assertions in the program are not violated. Constrained Horn clauses (CHCs) are used to model the program and assertions in a uniform way, and we use standard abstract interpretations to derive an over-approximation of the set ofunsafeinitial states. The precondition then is the constraint corresponding to the complement of that set, under-approximating the set ofsafeinitial states. This idea of complementation is not new, but previous attempts to exploit it have suffered from the loss of precision. Here we develop an iterative specialisation algorithm to give more precise, and in some cases optimal safety conditions. The algorithm combines existing transformations, namely constraint specialisation, partial evaluation and a trace elimination transformation. The last two of these transformations perform polyvariant specialisation, leading to disjunctive constraints which improve precision. The algorithm is implemented and tested on a benchmark suite of programs from the literature in precondition inference and software verification competitions.
Publisher
Cambridge University Press (CUP)
Subject
Artificial Intelligence,Computational Theory and Mathematics,Hardware and Architecture,Theoretical Computer Science,Software
Cited by
8 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Classification and Ranking of Delta Static Analysis Alarms;2022 IEEE 22nd International Working Conference on Source Code Analysis and Manipulation (SCAM);2022-10
2. The Systematic Design of Responsibility Analysis by Abstract Interpretation;ACM Transactions on Programming Languages and Systems;2022-03-31
3. Analysis and Transformation of Constrained Horn Clauses for Program Verification;Theory and Practice of Logic Programming;2021-11-15
4. Transformation-Enabled Precondition Inference;Theory and Practice of Logic Programming;2021-09-23
5. Lightweight Nontermination Inference with CHCs;Software Engineering and Formal Methods;2021