  It was previously shown that control-flow refinement can be achieved by a
program specializer incorporating property-based abstraction, to improve
termination and complexity analysis tools. We now show that this purpose-built
specializer 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. The key feature of the abstract interpreter is the
abstract domain, which is the product of the property-based abstract domain
with the concrete domain. This language-independent framework provides a
practical approach to implementing a variety of powerful specializers, and
contributes to a stream of research on using interpreters and specialization to
achieve program transformations.
