Download PDFOpen PDF in browser

Program Verification using Constraint Handling Rules and Array Constraint Generalizations

16 pagesPublished: July 28, 2014

Abstract

The transformation of constraint logic programs (CLP programs)
has been shown to be an effective methodology
for verifying properties of imperative programs.
By following this methodology, we encode the negation
of a partial correctness property of an imperative
program prog as a predicate incorrect defined by a CLP program P, and we show that
prog is correct by transforming P into
the empty program through the application
of semantics preserving transformation rules.
Some of these rules perform replacements of constraints
that encode properties of the data structures manipulated
by the program prog.
In this paper we show that Constraint Handling Rules (CHR)
are a suitable formalism for representing and applying
constraint replacements during the transformation of CLP programs.
In particular, we consider programs that manipulate integer
arrays and we present a CHR encoding of a constraint replacement
strategy based on the theory of arrays.
We also propose a novel generalization strategy for
constraints on integer arrays that combines
the CHR constraint replacement strategy
with various generalization operator for linear constraints,
such as widening and convex hull.
Generalization is controlled by additional constraints
that relate the variable identifiers in the imperative
program and the CLP representation of their values.
The method presented in this paper has been implemented and
we have demonstrated its
effectiveness on a set of
benchmark programs taken from the literature.

Keyphrases: constraint logic programming, program transformation, program verification

In: Alexei Lisitsa and Andrei Nemytykh (editors). VPT 2014. Second International Workshop on Verification and Program Transformation, vol 28, pages 3-18.

BibTeX entry
@inproceedings{VPT2014:Program_Verification_using_Constraint,
  author    = {Emanuele De Angelis and Fabio Fioravanti and Alberto Pettorossi and Maurizio Proietti},
  title     = {Program Verification using Constraint Handling Rules and Array Constraint Generalizations},
  booktitle = {VPT 2014. Second International Workshop on Verification and Program Transformation},
  editor    = {Alexei Lisitsa and Andrei Nemytykh},
  series    = {EPiC Series in Computing},
  volume    = {28},
  publisher = {EasyChair},
  bibsource = {EasyChair, https://easychair.org},
  issn      = {2398-7340},
  url       = {/publications/paper/8Gp},
  doi       = {10.29007/dkxs},
  pages     = {3-18},
  year      = {2014}}
Download PDFOpen PDF in browser