An encoding of array verification problems into array-free Horn clauses - Archive ouverte HAL Access content directly
Preprints, Working Papers, ... Year : 2015

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


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
Origin : Files produced by the author(s)

Dates and versions

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



David Monniaux, Laure Gonnord. An encoding of array verification problems into array-free Horn clauses. 2015. ⟨hal-01206882v1⟩
826 View
1144 Download



Gmail Facebook X LinkedIn More