Convex polyhedral abstractions, specialisation and property-based predicate splitting in Horn clause verification

@inproceedings{Kafle2014ConvexPA,
  title={Convex polyhedral abstractions, specialisation and property-based predicate splitting in Horn clause verification},
  author={Bishoksan Kafle and John P. Gallagher},
  booktitle={HCVS},
  year={2014}
}
We present an approach to constrained Horn clause (CHC) verification combining three techniques: abstract interpretation over a domain of convex polyhedra, specialisation of the constraints in CHCs using abstract interpretation of query-answer transformed clauses, and refinement by splitting predicates. The purpose of the work is to investigate how analysis and transformation tools developed for constraint logic programs (CLP) can be applied to the Horn clause verification problem. Abstract… 

Figures and Tables from this paper

On recursion-free Horn clauses and Craig interpolation
TLDR
A new notion of interpolation is introduced, disjunctive interpolation, which solves a more general class of problems in one step compared to previous notions of interpolant, such as tree interpolants or inductive sequences of interpolants.
Probabilistic program analysis
TLDR
This thesis addresses the challenge of inferring information about the probabilities of a program’s output or its resource usage by presenting a transformation-based probability analysis for discrete probabilities yielding upper probability bounds of discrete output events and approaches to analyse non-deterministic and probabilistic programs.

References

SHOWING 1-10 OF 43 REFERENCES
Solving Recursion-Free Horn Clauses over LI+UIF
TLDR
This paper presents an algorithm for solving recursion free Horn clauses over a combined theory of linear real/rational arithmetic and uninterpreted functions and performs resolution to deal with the clausal structure and relies on partial solutions to deals with (non-local) instances of functionality axioms.
On Solving Universally Quantified Horn Clauses
TLDR
This work shows how to simulate existing abstract domains in this way, without having to directly implement program analyses or make certain heuristic choices, such as the terms and predicates that form the parameters of the abstract domain.
Verifying programs via iterated specialization
TLDR
A method for verifying properties of imperative programs by using techniques based on the specialization of constraint logic programs (CLP) is presented, and it is shown that the method is competitive with respect to state-of-the-art software model checkers.
Controlling Polyvariance for Specialization-based Verification
TLDR
It is demonstrated, through experiments on several infinite state reactive systems, that by a careful choice of the degree of polyvariance the authors can design specialization-based verification procedures that are both efficient and precise.
Program verification via iterated specialization
Inferring Argument Size Relationships with CLP(R)
TLDR
It is shown how a precise analysis for inter-argument size relationships, formulated in terms of abstract interpretation, can be implemented straightforwardly in a language with constraint support like CLP(R) or SICStus version 3.
Path invariants
TLDR
The method handles loops without unrolling and infers abstractions that involve universal quantification and naturally incorporates disjunctive reasoning, and uses path invariants for abstraction refinement in order to remove all infeasible error computations that are represented by a path program.
Regular Approximation of Computation Paths in Logic and Functional Languages
TLDR
A method of approximating trace-terms is described, based on well-established methods for computing regular approximations of terms, applicable to both logic and functional languages, and appears to offer appropriate control information in both formalisms.
Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints
A program denotes computations in some universe of objects. Abstract interpretation of programs consists in using that denotation to describe computations in another universe of abstract objects, so
...
...