Abstract
We present an overview of the program transformation methodology, focusing our attention on the so-called ‘rules + strategies’ approach in the case of functional and logic programs. The paper is intended to offer an introduction to the subject; it is not a complete account of the work in the area.
This work has been partially supported by the ‘Progetto Finalizzato Sistemi Informatici e Calcolo Parallelo’ of the CNR, Italy, under grant n. 89.00026.69, MURST 40%, and Esprit Compulog II.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Aerts, K., Van Besien, D.: Autolap: A System for Transforming Logic Programs. Department of Electronics, Report University of Rome II, Rome, Italy (1991)
Arsac, J., Kodratoff, Y.: Some Techniques for Recursion Removal From Recursive Functions. ACM Toplas 4 (2) (1982) 295–322
Aubin, R.: Mechanizing Structural Induction: Part I and II. Theoretical Computer Science 9 (3) (1979) 329–362
Bates, J.L., Constable, R.L.: Proofs as Programs. ACM Toplas 7 (1) (1985) 113–136
Berry, G.: Bottom-Up Computation of Recursive Programs. RAIRO Informatique Théorique 10 (3) (1976) 47–82
Bird, R.S.: Tabulation Techniques for Recursive Programs. ACM Computing Surveys 12 (4) (1980) 403–418
Bird, R.S.: Using Circular Programs to Eliminate Multiple Traversal of Data. Acta Informatica 21 (1984) 239–250.
Bird, R.S.: The Promotion and Accumulation Strategies in Transformational Programming. ACM Toplas 6 (4) (1984) 487–504
Bird, R.S., Meertens, L.G.L.T.: Two Exercises Found in a Book on Algorithmics. TC2 WG 2.1 Working Conference on Program Specification and Transformation, Bad Tölz (Germany) North Holland (1987) 451–457
Bjørner, D., Ershov, A.P., Jones, N.D. (eds.): Partial Evaluation and Mixed Computation. IFIP TC2 Workshop on Partial and Mixed Computation, Gammel Avernæs (Denmark) North. Holland (1988)
Boiten, E.A.: Improving Recursive Functions by Inverting the Order of Evaluation. Tech. Report no. 89-10 University of Nijmegen, The Netherlands (1989)
Bossi, A., Cocco, N.: Basic Transformation Operations for Logic Programs which Preserve Computed Answer Substitutions. Tech. Rep. University of Padova (Italy) (1990) (to appear in the Special Issue of the Journal of Logic Programming on Partial Deduction)
Boyle, J.M.: Lisp to Fortran — Program Transformation Applied. In: Pepper, P. (ed.): Proc. Workshop on Program Transformation and Programming Environments. Nato ASI Series F, Computer and Systems Sciences 8, Springer Verlag (1984) 291–298
Boyer, R.S., Moore, J.S.: Proving Theorems About LISP Functions. JACM 22 (1) (1975) 129–144
Bruynooghe, M., De Schreye, D., Krekels, B.: Compiling Control. Journal of Logic Programming 6 (1 & 2) (1989) 135–162
Burstall, R.M. et al.: The Lego Project. Computer Science Department, Edinburgh University, Edinburgh (Scotland) (1991)
Burstall, R.M., Darlington, J.: Some Transformations for Developing Recursive Programs. Proceedings of the International Conference on Reliable Software, Los Angeles USA (1975) 465–472
Burstall, R.M., Darlington, J.: A Transformation System for Developing Recursive Programs. JACM, 24 (1) (1977) 44–67
Cai, J., Paige, R.: The RAPTS Transformation System. Computer Science Department, New York University, New York USA (1990)
Chatelin, P.: Program Manipulation: to Duplicate is not to Complicate. Report CNRS Laboratoire d'Informatique. Université de Grenoble (France) (1976)
CIP Language Group: The Munich Project CIP. Lecture Notes in Computer Science 183, Springer Verlag (1985)
Coquand, T., Huet, G.: The Calculus of Constructions. Information and Computation 76 (1988) 95–120
Cousot, P., Cousot, R.: Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction of Approximation of Fixpoints. 4th POPL (1977) 238–252
Darlington, J.: A Semantic Approach to Automatic Program Improvement. Ph.D. Thesis, Department of Machine Intelligence, Edinburgh University, Edinburgh, U.K. (1972)
Darlington, J.: An Experimental Program Transformation System. Artificial Intelligence 16 (1981) 1–46
Debray, S.K.: Unfold/Fold Transformations and Loop Optimization of Logic Programs. Proceedings Sigplan 88, Conference on Programming Language Design and Implementation, Atlanta, Georgia USA, Sigplan Notices 23 (7) (1988) 297–307
Debray, S.K., Warren, D.S.: Automatic Mode Inference for Logic Programs. Journal of Logic Programming 5 (1988) 207–229
Dershowitz, N.: Synthesis by Completion. Proc. 9th International Joint Conference on Artificial Intelligence 1 (1985) 208–214
Deville, Y.: Logic Programming: Systematic Program Development. Addison-Wesley (1990)
Ershov, A.P.: Mixed Computation: Potential Applications and Problems for Study. Theoretical Computer Science 18 (1982) 41–67
Feather, M.S.: A System for Assisting Program Transformation. ACM Toplas 4 (1) (1982) 1–20
Feather, M.S.: A Survey and Classification of Some Program Transformation Techniques. Proc. TC2 IFIP Working Conference on Program Specification and Transformation, Bad Tölz (Germany) North Holland (1987) 165–195
Galmiche, D.: Proofs and Program Development in AF2. Notes of the IFIP W.G. 2.1 Meeting, Louvain-la-Neuve (Belgium) (1991)
Gardner P.A., Shepherdson J.C.: Unfold/Fold Transformations of Logic Programs. In: Lassez J.-L., Plotkin G. (eds.): Computational Logic, Essays in Honor of Alan Robinson. MIT Press (1991) 565–583
Hogger C.J.: Derivation of Logic Programs. JACM 28 (2) (1981) 372–392
Huet, G., Lang, B.: Proving and Applying Program Transformation Expressed with Second-Order Patterns. Acta Informatica 11 (1978) 31–55
Hughes, R.J.M.: Super-combinators a New Implementation Method for Applicative Languages. Proc. 1982 ACM Symposium on Lisp and Functional Programming, Pittsburgh PA, USA (1982) 1–10
Illsley, M.: Transforming Imperative Programs. Ph.D. Thesis, Computer Science Department, Edinburgh University, Edinburgh (Scotland) (1988)
Johnsson, T.: Lambda Lifting: Transforming Programs to Recursive Equations. Functional Programming Languages and Computer Architecture, Nancy (France) Lecture Notes in Computer Science 201, Springer Verlag (1985) 190–203
Jones, N.D.: Automatic Program Specialization: A Re-Examination From Basic Principles. In: Bjørner, D. Ershov, A.P. (eds.): Proc. IFIP TC2 Working Conference on Partial and Mixed Computation. Ebberup (Denmark) (1987) 225–282
Jones, N., Søndergaard, H.: A Semantics-Based Framework for the Abstract Interpretation of Prolog. In: Abramsky, S. and Hankin, C. (eds.): Abstract Interpretation of Declarative Languages. Ellis Horwood (1987) 123–142
Jørring, U., Scherlis, W.L.: Compilers and Staging Transformations. Thirteenth Annual ACM Symposium on Principles of Programming Languages, St. Petersburgh Beach, Florida, USA (1986) 86–96
Kanamori, T., Maeji, M.: Derivation of Logic Programs from Implicit Definition. Technical Report TR-178, ICOT, Tokyo (Japan) (1986)
Kawamura, T., Kanamori, T.: Preservation of Stronger Equivalence in Unfold/Fold Logic Program Transformation. Proc. Int. Conf. on Fifth Generation Computer Systems, Tokyo (Japan) (1988) 413–422
Kott, L.: About Transformation System: A Theoretical Study. 3ème Colloque International sur la Programmation, Dunod, Paris (France) (1978) 232–247
Kott, L.: The McCarthy's Induction Principle: ‘Oldy’ but ‘Goody'. Calcolo 19 (1) (1982) 59–69
Krieg-Brückner, B. (ed.): COMPASS, a COMPrehensive Algebraic approach to System Specification and development. ESPRIT Basic Research Working Group 3264, Objectives, State of the Art, References. University of Bremen, Germany, Bericht no. 6/89 (1989)
Lakhotia, A., Sterling, L.: Composing Recursive Logic Programs with Clausal Join. New Generation Computing 6 (2 & 3) (1988) 211–226
Lloyd, J.W.: Foundations of Logic Programming. Springer Verlag, 2nd edition (1987)
Meertens, L.G.L.T. (ed.): Program Specification and Transformation. Proc. IFIP TC2 W.G. 2.1 Working Conference on Program Specification and Transformation, Bad Tölz (Germany) North Holland (1987)
Möller, B.: Relations as a Program Development Language. Proc. IFIP TC2 Working Conference on Constructing Programs from Specifications, Pacific Grove, California USA, North Holland (1991)
Möller, B.: Derivation of Graph and Pointer Algorithms. In this book (1993)
Paige, R., Koenig, S.: Finite Differencing of Computable Expressions. ACM Toplas 4 (3) (1982) 402–454
Paige, R., Reif, J., and Wachter, R. (eds): Parallel Algorithm Derivation and Program Transformation. Proc. Workshop at Courant Institute of Mathematical Sciences, New York USA, Kluwer Academic Publishers (1993)
Partsch, H.A.: Specification and Transformation of Programs. Springer Verlag, New York (1990)
Partsch, H.A., Steinbrüggen, R.: Program Transformation Systems. ACM Computing Surveys 15 (1983) 199–236
Paterson, M.S., Hewitt, C.E.: Comparative Schematology. Conference on Concurrent Systems and Parallel Computation Project MAC, Woods Hole, Mass. USA (1970) 119–127
Pepper, P. (ed.): Program Transformation and Programming Environments. Workshop Report, Nato ASI Series F 8, Springer Verlag (1984)
Pepper, P. (ed.): A Simple Calculus for Program Transformation (Inclusive of Induction). Science of Computer Programming 9 (1987) 221–262
Pettorossi, A.: Methodologies for Transformations and Memoing in Applicative Languages. Ph. D. Thesis, Edinburgh University, Edinburgh, Scotland (1984)
Pettorossi, A.: Derivation of Efficient Programs for Computing Sequences of Actions. Theoretical Computer Science 53 (1987) 151–167
Pettorossi, A., Burstall, R.M.: Deriving Very Efficient Algorithms for Evaluating Linear Recurrence Relations Using the Program Transformation Technique. Acta Informatica 18 Springer Verlag (1982) 181–206
Pettorossi, A., Proietti, M.: Importing and Exporting Infomation in Program Development. Proc. IFIP TC2 Workshop on Partial Evaluation and Mixed Computation, Gammel Avernaes (Denmark) North Holland (1987) 405–425
Pettorossi, A., Skowron, A.: Communicating Agents for Applicative Concurrent Programming. Proc. Intern. Symp. on Programming, Turin, Italy, Lecture Notes in Computer Science 137, Springer Verlag (1982) 305–322
Pettorossi, A., Skowron, A.: Higher Order Generalization in Program Derivation. Proc. Tapsoft '87, Pisa, Italy, Lecture Notes in Computer Science 250, Springer Verlag (1987) 182–196
Proietti, M., Pettorossi, A.: Synthesis of Eureka Predicates for Developing Logic Programs. Proc. ESOP '90, Copenhagen, Lecture Notes in Computer Science 432, Springer Verlag (1990) 306–325
Proietti, M., Pettorossi, A.: Semantics Preserving Transformation Rules for Prolog. Proc. ACM Symposium on Partial Evaluation and Semantics Based Program Manipulation, PEPM '91, New Haven USA, Sigplan Notices 26 9 (1991) 274–284
Reps, T.: Algebraic Properties of Program Integration. Proc. ESOP '90, Lecture Notes in Computer Science 432, Springer Verlag (1990) 326–340
Sato, T.: An Equivalence Preserving First Order Unfold/Fold Transformation System. Proc. 2nd International Conference on Algebraic and Logic Programming, ALP '90, Nancy (France) Lecture Notes in Computer Science 463, Springer Verlag (1990) 175–188
Scherlis, W.L.: Program Improvement by Internal Specialization. Proc. 8th ACM Symposium on Principles of Programming Languages, Williamsburgh, Va. (1981) 41–49
Schwarz, J.: Using Annotations to Make Recursive Equations Behave. IEEE Transactions on Software Engineering SE 8 (1) (1982) 21–33
Seki, H.: Unfold/Fold Transformation of Stratified Programs. Theoretical Computer Science 86 (1991) 107–139
Sintzoff, M., Weber, M., de Groote, Ph., Cazin, J.: Definition 1.1 of the Generic Development Language Deva. Technical Report, Unité d'Informatique, Université Catholique de Louvain, Louvain-La-Neuve, Belgium (1989)
Smith, D.R.: The Design of Divide and Conquer Algorithms. Science of Computer Programming 5 (1985) 37–58
Smith, D.R.: Automatic Derivation of Algorithms. In this book (1993)
Takeichi, M.: Partial Parametrization Eliminates Multiple Traversals of Data Structures. Acta Informatica 24 (1987) 57–77
Tamaki, H., Sato, T.: Unfold/Fold Transformation of Logic Programs. Proc. 2nd International Conference on Logic Programming, Uppsala (Sweden) (1984) 127–138
Turner, D.A.: A New Implementation Technique for Applicative Languages. Software Practice and Experience 9 (1979) 31–49
Wadler, P.L.: Listlessness is Better than Laziness. Ph.D. Thesis, Computer Science Department, CMU-CS-85-171, Carnegie Mellon University, Pittsburgh USA (1985)
Wand, M.: Continuation-based Program Transformation Strategies. JACM 27 (1) (1980) 164–180
Wegbreit, B.: Goal-directed Program Transformation. IEEE Transactions on Software Engineering SE 2 (1976) 69–79
Wile, D.: POPART: Producer of Parser and Related Tools. Technical Report RR-82-21, ISI, 4676 Admiralty Way, Marina del Rey, California USA (1982)
Wirth, N.: Algorithms + Data Structures = Programs. Prentice Hall, Inc. (1976)
Zhu, H.: How Powerful are Folding/Unfolding Transformations? Techn. Report CSTR-91-2, Brunel University, Uxbridge, Middlesex, U.K. (1991)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1993 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Pettorossi, A., Proietti, M. (1993). Rules and strategies for program transformation. In: Möller, B., Partsch, H., Schuman, S. (eds) Formal Program Development. Lecture Notes in Computer Science, vol 755. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57499-9_23
Download citation
DOI: https://doi.org/10.1007/3-540-57499-9_23
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-57499-6
Online ISBN: 978-3-540-48197-3
eBook Packages: Springer Book Archive