*The TAMPR Program Transformation System: Simplifying the Development of Numerical Software* by J. M. Boyle, T. J. Harmer and V. L. Winter In E. Arge, A.M. Bruaset and H.P. Langtangen (eds.) _Modern Software Tools in Scientific Computing_ pp 353-372, Birkh‰user, 1997 ---- *Summary* TAMPR stands for _Transformation Assisted Multiple Program Realisation System_. The TAMPR system, which has been in use since the seventies, is designed for the derivation of efficient implementations from a specification through transformations, in particular in the domain of numerical programming. A TAMPR specification consists of a series of rewrite rules. The TAMPR rewrite engine applies rewrite rules exhaustively to reach a canonical form. The problem of non-termination caused by rules that are each others inverses is solved in TAMPR by organizing a large transformation into a sequence of consecutive canonicalizations under different sets of rewrite rules. Typically such a sequence starts with several preparatory steps that bring the program in the right form, followed by the pivotal step which achieves the actual transformation, followed by some post-processing. In the paper this is illustrated with the transformation from a polynomial in `y`: (x^2 + 2x + 1)y^2 + (x^2 - 9)y - (20x^2 + 18x - 18) to the equivalent polynomial in `x` (y^2 + y - 20)x^2 + (2y^2 - 18)x + (y^2 - 9y + 18) This is achieved by means of the following pipeline of canonicalizations: sum-of-monomonials; x-commuted-to-right; like-powers-collected; x-factored-out (Note that the paper uses a different notation for this.) The `sum-of-monomonials` transforms the polynomial into x^2y^2 + 2xy^2 + y^2 + x^2y -9y -20x^2 - 18x + 18 By commuting the multiplications, the `x-commuted-to-right` canonical form is achieved: y^2x^2 + 2y^2x + y^2 + yx^2 -9y -20x^2 - 18x + 18 The `like-powers-collected` canonical form commutes the additions to bring monomonials with the same power of \$x\$ together: y^2x^2 + yx^2 - 20x^2 + 2y^2x - 18x + y^2 -9y + 18 Finally, by factoring out the powers of `x`, the desired form is reached. --- Main.EelcoVisser - 07 May 2001
----- CategoryReview, CategoryTransformation | Contributions by Main.EelcoVisser