An encoding of array verification problems into array-free Horn clauses - Archive ouverte HAL
Pré-Publication, Document De Travail Année : 2015

An encoding of array verification problems into array-free Horn clauses

Résumé

Automatically verifying safety properties of programs is hard, and it is even harder if the program acts upon arrays or other forms of maps. Many approaches exist for verifying programs operating upon Boolean and integer values (e.g. abstract interpretation, counterexample-guided abstraction refinement using interpolants), but transposing them to array properties has been fraught with difficulties. In contrast to most preceding approaches, we do not introduce a new abstract domain or a new interpolation procedure for arrays. Instead, we generate an abstraction as a scalar problem and feed it to a preexisting solver, with tunable precision. Our transformed problem is expressed using Horn clauses, a common format with clear and unambiguous logical semantics for verification problems. An important characteristic of our encoding is that it creates a nonlinear Horn problem, with tree unfoldings, even though following “flatly” the control-graph structure ordinarily yields a linear Horn problem, with linear unfoldings. That is, our encoding cannot be expressed by an encoding into another control-flow graph problem, and truly leverages the capacity of the Horn clause format. We illustrate our approach with a completely automated proof of the functional correctness of selection sort.
Fichier principal
Vignette du fichier
arrays_Horn_article.pdf (468.84 Ko) Télécharger le fichier
Origine Fichiers produits par l'(les) auteur(s)

Dates et versions

hal-01206882 , version 1 (29-09-2015)
hal-01206882 , version 2 (06-04-2016)
hal-01206882 , version 3 (13-08-2016)

Identifiants

Citer

David Monniaux, Laure Gonnord. An encoding of array verification problems into array-free Horn clauses. 2015. ⟨hal-01206882v1⟩
896 Consultations
1246 Téléchargements

Altmetric

Partager

More