Conditional transformations leverage on the power of logic meta-programming by using the same representation of programs a clauses and expressing program analyses as predicates. However, conditional transformation provide an own abstraction for the interplay of analyses and transformations.
A conditional transformation (CT) is a pair consisting of a precondition C and a transformation T. The precondition can be any logic query that performs no side-effects – in particular no modification of the set of clauses. The transformation is a sequence of the following basic actions:
addadds a new clause
deletedeletes a clause
replacereplaces a clause with another one