  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.
