Polyvariant Program Specialisation with Property-based Abstraction

08/20/2019
by   John P. Gallagher, et al.
0

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 program point can be reached more than once during a computation, with different constraints applying in each case, and polyvariant specialisation allows different specialisations to be realised. A property-based abstraction uses a finite set of properties to define a finite set of abstract versions of predicates, ensuring that only a finite number of specialised versions is generated. The particular choice of properties is critical for polyvariance; too few versions can result in insufficient specialisation, while too many can result in an increase of code size with no corresponding efficiency gains. Using examples, we show the flexibility of specialisation with property-based abstraction and discuss its application in control flow refinement, verification, termination analysis and dimension-based specialisation.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
07/29/2019

Control-Flow Refinement by Partial Evaluation, and its Application to Termination and Cost Analysis

Control-flow refinement refers to program transformations whose purpose ...
research
08/07/2020

An Experiment Combining Specialization with Abstract Interpretation

It was previously shown that control-flow refinement can be achieved by ...
research
09/05/2022

Inferring Region Types via an Abstract Notion of Environment Transformation

Region-based type systems are a powerful tool for various kinds of progr...
research
08/07/2020

Optimizing Program Size Using Multi-result Supercompilation

Supercompilation is a powerful program transformation technique with num...
research
06/03/2020

Controlling the Size of Supercompiled Programs using Multi-result Supercompilation

Supercompilation is a powerful program transformation technique with num...
research
09/14/2017

Enhancing Predicate Pairing with Abstraction for Relational Verification

Relational verification is a technique that aims at proving properties t...
research
08/22/2017

Scheduling Constraint Based Abstraction Refinement for Multi-Threaded Program Verification

Bounded model checking is among the most efficient techniques for the au...

Please sign up or login with your details

Forgot password? Click here to reset