Polyvariant Program Specialisation with Property-based Abstraction

  title={Polyvariant Program Specialisation with Property-based Abstraction},
  author={John P. Gallagher},
In this paper we show that property-based abstraction, an established technique originating in software model checking, is a flexible method of controlling polyvariance in program specialisation in a standard online specialisation algorithm. Specialisation is a program transformation that transforms a program with respect to given constraints that restrict its behaviour. Polyvariant specialisation refers to the generation of two or more specialised versions of the same program code. The same… Expand
Control-Flow Refinement by Partial Evaluation, and its Application to Termination and Cost Analysis
This paper explores the use of partial evaluation of Horn clauses as a general-purpose technique for control-flow refinement for integer transitions systems and uses a partial evaluation algorithm incorporating property-based abstraction to prove termination and to infer complexity of challenging programs that cannot be handled by state-of-the-art tools. Expand
An Experiment Combining Specialization with Abstract Interpretation
This work shows that a purpose-built specializer incorporating property-based abstraction can be reconstructed in a more modular way, and that the previous results can be achieved using an off-the-shelf partial evaluation tool, applied to an abstract interpreter. Expand
Transformation-Enabled Precondition Inference
An experimental evaluation of the method shows that it can infer precise preconditions that are not possible using previous methods, and is ”under consideration for acceptance in TPLP”. Expand
Termination Analysis of Programs with Multiphase Control-Flow
Techniques for proving termination of programs with multiphase control-flow are discussed, using multiphases ranking functions, and using control-flows refinement, in particular partial evaluation of Constrained Horn Clauses, to simplify the control- flow allowing, among other things, to prove termination with simpler ranking functions. Expand
Challenges in the Specialisation of Smart Horn Clause Interpreters
  • J. Gallagher
  • Computer Science
  • Electronic Proceedings in Theoretical Computer Science
  • 2019


Controlling Polyvariance for Specialization-based Verification
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. Expand
An iterative approach to precondition inference using constrained Horn clauses
An iterative specialisation algorithm to give more precise, and in some cases optimal safety conditions, and the algorithm combines existing transformations, namely constraint specialisation, partial evaluation and a trace elimination transformation. Expand
Program verification via iterated specialization
This work presents a method for verifying properties of imperative programs by using techniques based on the specialization of constraint logic programs (CLP), and improves the precision of program verification with respect to state-of-the-art software model checkers. Expand
Predicate Pairing for program verification
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. Expand
Ensuring Global Termination of Partial Deduction while Allowing Flexible Polyvariance
A quite general framework is formulated where this set of distinct ``partially deduced'' atoms generated during partial deduction is represented as a tree structure and a well-founded order among such structures is defined, thus obtaining a foundation for certified global termination of partial deduction. Expand
Regular Tree Languages as an Abstract Domain in Program Specialisation
The algorithm is presented as an instance of Leuschel's framework for abstract specialisation of logic programs, which provides a generic algorithm parameterised by an abstract domain—regular trees in this case. Expand
Tutorial on specialisation of logic programs
In this tutorial the specialisation of declarative logic programs is presented, and the outline of a basic algorithm for partial evaluation of a logic program with respect to a goal is given. Expand
Regular Approximation of Computation Paths in Logic and Functional Languages
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. Expand
Transformation by interpreter specialisation
  • N. Jones
  • Computer Science
  • Sci. Comput. Program.
  • 2004
This paper is a series of examples, both positive and negative, showing how the way the interpreter is written can influence the removal of interpretational overhead, and thus the efficiency and size of the target programs obtained by specialisation. Expand
Control-flow refinement and progress invariants for bound analysis
This paper describes two techniques, control-flow refinement and progress invariants, that together enable estimation of precise bounds for procedures with nested and multi-path loops, and presents an algorithm that uses progress invariant to compute precise limits for nested loops. Expand