Predicate Pairing with Abstraction for Relational Verification
@inproceedings{Angelis2017PredicatePW, title={Predicate Pairing with Abstraction for Relational Verification}, author={Emanuele De Angelis and Fabio Fioravanti and Alberto Pettorossi and Maurizio Proietti}, booktitle={LOPSTR}, year={2017} }
Relational verification is a technique that aims at proving properties that relate two different program fragments, or two different program runs. It has been shown that constrained Horn clauses (CHCs) can effectively be used for relational verification by applying a CHC transformation, called Predicate Pairing, which allows the CHC solver to infer relations among arguments of different predicates. In this paper we study how the effects of the Predicate Pairing transformation can be enhanced by…
2 Citations
Analysis and Transformation of Constrained Horn Clauses for Program Verification
- Computer ScienceTheory and Practice of Logic Programming
- 2021
Analysis and transformation techniques that originate in the field of constraint logic programming (CLP) to the problem of verifying software systems are surveyed and static analysis techniques for CHCs that may be used for inferring relevant program properties, such as loop invariants are described.
Semantic program alignment for equivalence checking
- Computer SciencePLDI
- 2019
A robust semantics-driven technique for program equivalence checking is introduced and it is demonstrated that the algorithm is applicable to challenging equivalence problems beyond the scope of existing techniques.
References
SHOWING 1-10 OF 31 REFERENCES
Relational Verification Through Horn Clause Transformation
- Computer ScienceSAS
- 2016
Through an experimental evaluation, it is shown that in many cases CHC solvers are able to prove the satisfiability (or the unsatisfiability) of sets of clauses obtained by applying the transformations proposed, whereas the samesolvers are unable to perform those proofs when given as input the original, untransformed sets of CHCs.
Predicate Pairing for program verification
- Computer ScienceTheory and Practice of Logic Programming
- 2017
A transformation technique, called Predicate Pairing, is introduced, which is able, in many interesting cases, to transform a set of clauses into an equisatisfiable set whose satisfiability can be proved by finding an 𝓐-definable model, and hence can be effectively verified by a state-of-the-art CHC solver.
Simple relational correctness proofs for static analyses and program transformations
- Computer SciencePOPL '04
- 2004
We show how some classical static analyses for imperative programs, and the optimizing transformations which they enable, may be expressed and proved correct using elementary logical and…
Relational Verification Using Product Programs
- Computer ScienceFM
- 2011
This work provides a general notion of product program that supports a direct reduction of relational verification to standard verification, and illustrates the benefits of the method with selected examples, including non-interference, standard loop optimizations, and a state-of-the-art optimization for incremental computation.
VeriMAP: A Tool for Verifying Programs through Transformations
- Computer ScienceTACAS
- 2014
Experimental results show that VeriMAP is competitive with respect to state-of-the-art tools for program verification.
Proving correctness of imperative programs by linearizing constrained Horn clauses
- Computer ScienceTheory and Practice of Logic Programming
- 2015
A method for verifying the correctness of imperative programs which is based on the automated transformation of their specifications, and it is shown that several specifications that could not be proved valid by LA-solving methods, can be provedvalid after linearization.
Semantics-based generation of verification conditions by program specialization
- Computer SciencePPDP
- 2015
The method is parametric with respect to the semantics of the imperative programming language, as it specializes, by using unfold/fold transformation rules, a Horn clause interpreter that encodes that semantics.
Semantics-based generation of verification conditions via program specialization
- Computer ScienceSci. Comput. Program.
- 2017
A Rule-based Verification Strategy for Array Manipulating Programs
- Computer ScienceFundam. Informaticae
- 2015
A method for verifying properties of imperative programs that manipulate integer arrays by encoding the negation of the property of an imperative program prog as a predicate incorrect defined by a CLP program P, and showing that the property holds by proving that incorrect is not a consequence of P.