skip to main content
10.1145/3635800.3637446acmconferencesArticle/Chapter ViewAbstractPublication PagespepmConference Proceedingsconference-collections
invited-talk

A Historical Perspective on Program Transformation and Recent Developments (Invited Contribution)

Published:11 January 2024Publication History

ABSTRACT

This paper presents some ideas concerning program manipulation and program transformation from the early days of their development. Particular emphasis will be given to program transformation techniques in the area of functional programming and constraint logic programming. We will also indicate current applications of program transformation techniques to the verification of program properties and program synthesis.

References

  1. Gregory R. Andrews. 1991. Concurrent Programming: Principles and Practice. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Krzysztof R. Apt and Marc Bezem. 1990. Acyclic Programs. In Proceedings of the 7th International Conference on Logic Programming, Jerusalem, Israel, D.H.D. Warren and P. Szeredi (Eds.). MIT Press, 617–633. Google ScholarGoogle Scholar
  3. Krzysztof R. Apt and Roland N. Bol. 1994. Logic Programming and Negation: A Survey. Journal of Logic Programming, 19, 20 (1994), 9–71. Google ScholarGoogle ScholarCross RefCross Ref
  4. Jean-Michel Autebert, Jean Berstel, and Luc Boasson. 1997. Context-Free Languages and Pushdown Automata. In Handbook of Formal Languages, G. Rozenberg and A. Salomaa (Eds.). 1, Springer-Verlag, Berlin. 111–174. Google ScholarGoogle Scholar
  5. John Backus. 1978. Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs. Commun. ACM, 21, 8 (1978), 613–641. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Friedrich L. Bauer and Hans Wössner. 1982. Algorithmic Language and Program Development. Textbook. Springer-Verlag. https://doi.org/10.1007/978-3-642-61807-9 Google ScholarGoogle ScholarCross RefCross Ref
  7. Richard S. Bird. 1984. Using Circular Programs to Eliminate Multiple Traversal of Data. Acta Informatica, 21 (1984), 239–250. https://doi.org/10.1007/BF00264249 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 1988. Proc. of the IFIP TC2 Workshop on Partial Evaluation and Mixed Computation, Gammel Avernæ s, Denmark, 18–24 October, 1987, Dines Bjørner, Andrei P. Ershov, and Neil D. Jones (Eds.). North-Holland. https://api.semanticscholar.org/CorpusID:60411574 Google ScholarGoogle Scholar
  9. Rod M. Burstall and J. Darlington. 1977. A Transformation System for Developing Recursive Programs. Journal of the ACM, 24, 1 (1977), January, 44–67. https://doi.org/10.1145/321992.321996 Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Wei-Ngan Chin. 1993. Towards an Automated Tupling Strategy. In Proceedings of the 1993 ACM SIGPLAN Symp. on Partial Evaluation and Semantics Based Program Manipulation, PEPM ’93, Copenhagen, Denmark, P. Hudak and N. D. Jones (Eds.). ACM Press, 119–132. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Edmund M. Clarke, Jr., Orna Grumberg, and Doron A. Peled. 1999. Model Checking. MIT Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. P. Cousot and N. Halbwachs. 1978. Automatic Discovery of Linear Restraints among Variables of a Program. In Symposium on Principles of Programming Languages, 5th POPL ’78. ACM, 84–96. https://doi.org/10.1145/512760.512770 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 1996. Partial Evaluation, International Seminar, Dagstuhl Castle, Germany, Selected Papers, Olivier Danvy, Robert Glück, and Peter Thiemann (Eds.) (Lecture Notes in Computer Science, Vol. 1110). Springer. https://doi.org/10.1007/3-540-61580-6 Google ScholarGoogle ScholarCross RefCross Ref
  14. John Darlington. 1981. An Experimental Program Transformation System. Artificial Intelligence, 16 (1981), 1–46. https://doi.org/10.1016/0004-3702(81)90014-X Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. John Darlington and Rod M. Burstall. 1976. A System which Automatically Improves Programs. Acta Informatica, 6 (1976), 41–60. https://doi.org/10.1007/BF00263742 Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Emanuele De Angelis, Fabio Fioravanti, John P. Gallagher, Manuel V. Hermenegildo, Alberto Pettorossi, and Maurizio Proietti. 2022. Analysis and Transformation of Constrained Horn Clauses for Program Verification. Theory and Practice of Logic Programming, 22, 6 (2022), 974–1042. https://doi.org/10.1017/S1471068421000211 Google ScholarGoogle ScholarCross RefCross Ref
  17. Emanuele De Angelis, Fabio Fioravanti, Alberto Pettorossi, and Maurizio Proietti. 2014. VeriMAP: A Tool for Verifying Programs through Transformations. In Tools and Algorithms for the Construction and Analysis of Systems, TACAS ’14 (Lecture Notes in Computer Science 8413). Springer, 568–574. https://doi.org/10.1007/978-3-642-54862-8_47 Google ScholarGoogle ScholarCross RefCross Ref
  18. Emanuele De Angelis, Fabio Fioravanti, Alberto Pettorossi, and Maurizio Proietti. 2022. Verifying Catamorphism-Based Contracts using Constrained Horn Clauses. Theory and Practice of Logic Programming, 22, 4 (2022), 555–572. https://doi.org/10.1017/S1471068422000175 Google ScholarGoogle ScholarCross RefCross Ref
  19. Emanuele De Angelis, Fabio Fioravanti, Alberto Pettorossi, and Maurizio Proietti. 2023. The transformation verification system VeriCaT. https://fmlab.unich.it/verimapwebgui/ Google ScholarGoogle Scholar
  20. Edsger W. Dijkstra. 1982. Selected Writing on Computing: A Personal Perspective. Springer-Verlag, New York, Heidelberg, Berlin. https://doi.org/10.1007/978-1-4612-5695-3 Google ScholarGoogle ScholarCross RefCross Ref
  21. Fabio Fioravanti, Alberto Pettorossi, and Maurizio Proietti. 2004. Transformation Rules for Locally Stratified Constraint Logic Programs. In Program Development in Computational Logic, K.-K. Lau and M. Bruynooghe (Eds.) (Lecture Notes in Computer Science 3049). Springer-Verlag, 291–339. https://doi.org/10.1007/978-3-540-25951-0_10 Google ScholarGoogle ScholarCross RefCross Ref
  22. Fabio Fioravanti, Alberto Pettorossi, Maurizio Proietti, and Valerio Senni. 2013. Generalization Strategies for the Verification of Infinite State Systems. Theory and Practice of Logic Programming. Special Issue on the 25th Annual GULP Conference, 13, 2 (2013), 175–199. https://doi.org/10.1017/S1471068411000627 Google ScholarGoogle ScholarCross RefCross Ref
  23. Fabio Fioravanti, Alberto Pettorossi, Maurizio Proietti, and Valerio Senni. 2013. Proving Theorems by Program Transformation. Fundamenta Informaticae, 127, 1–4 (2013), 115–134. https://doi.org/10.3233/FI-2013-899 Google ScholarGoogle ScholarCross RefCross Ref
  24. John P. Gallagher. 1993. Tutorial on Specialisation of Logic Programs. In Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, PEPM’93, Copenhagen, Denmark, David A. Schmidt (Ed.). ACM, 88–98. https://doi.org/10.1145/154630.154640 Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Sergey Grebenshchikov, Nuno P. Lopes, Corneliu Popeea, and Andrey Rybalchenko. 2012. Synthesizing software verifiers from proof rules. In 33rd ACM SIGPLAN Conf. Programming Language Design and Implementation, PLDI ’12. ACM, 405–416. https://doi.org/10.1145/2345156.2254112 Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Hossein Hojjat and Philipp Rümmer. 2018. The ELDARICA Horn Solver. In Formal Methods in Computer Aided Design, FMCAD ’18. IEEE, 1–7. https://doi.org/10.23919/FMCAD.2018.8603013 Google ScholarGoogle ScholarCross RefCross Ref
  27. John E. Hopcroft and Jeffrey D. Ullman. 1979. Introduction to Automata Theory, Languages and Computation (Second ed.). Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. R. John Muir Hughes. 1986. A novel representation of lists and its application to the function “reverse”. Info. Proc. Lett., 22 (1986), 141–144. https://doi.org/10.1016/0020-0190(86)90059-1 Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Jesper Jørgensen, Michael Leuschel, and Bern Martens. 1997. Conjunctive Partial Deduction in Practice. In Logic Program Synthesis and Transformation, Proceedings of LOPSTR ’96, Stockholm, Sweden, J. Gallagher (Ed.) (Lecture Notes in Computer Science 1207). Springer-Verlag, Berlin. 59–82. Google ScholarGoogle Scholar
  30. Anvesh Komuravelli, Arie Gurfinkel, and Sagar Chaki. 2014. SMT-Based Model Checking for Recursive Programs. In 26th CAV ’14 (Lecture Notes in Computer Science 8559). Springer, 17–34. https://doi.org/10.1007/978-3-319-08867-9_2 Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Robert A. Kowalski. 1974. Predicate Logic as a Programming Language. In Proceedings IFIP ’74. North-Holland, 569–574. Google ScholarGoogle Scholar
  32. John W. Lloyd. 1987. Foundations of Logic Programming (second ed.). Springer-Verlag, Berlin. https://doi.org/10.1007/978-3-642-83189-8 Google ScholarGoogle ScholarCross RefCross Ref
  33. Rüdiger G. K. Loos and Volker Weispfenning. 1993. Applying Linear Quantifier Elimination. Comput. J., 36, 5 (1993), 450–462. https://doi.org/10.1093/comjnl/36.5.450 Google ScholarGoogle ScholarCross RefCross Ref
  34. MAP. 1999. The MAP transformation system. http://www.iasi.cnr.it/~proietti/system.html Also available via a WEB interface from http://www.map.uniroma2.it/mapweb Google ScholarGoogle Scholar
  35. Robert Paige. 1997. Future Directions in Program Transformations. SIGPLAN Not., 32, 1 (1997), Jan, 94–98. issn:0362-1340 https://doi.org/10.1145/251595.251609 Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Robert Paige and Shaye Koenig. 1982. Finite Differencing of Computable Expressions. ACM Transactions on Programming Languages and Systems, 4, 3 (1982), 402–454. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Helmuth Partsch and Peter Pepper. 1976. A Family of Rules for Recursion Removal. Inf. Process. Lett., 5, 6 (1976), 174–177. https://doi.org/10.1016/0020-0190(76)90015-6 Google ScholarGoogle ScholarCross RefCross Ref
  38. Michael S. Paterson and Carl E. Hewitt. 1970. Comparative Schematology. In Conference on Concurrent Systems and Parallel Computation Project MAC, Woods Hole, Mass., USA. 119–127. Google ScholarGoogle Scholar
  39. Alberto Pettorossi. 1985. Towers of Hanoi Problems: Deriving Iterative Solutions by Program Transformation. BIT, 25 (1985), 327–334. https://doi.org/10.1007/BF01934378 Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Alberto Pettorossi and Rod M. Burstall. 1982. Deriving Very Efficient Algorithms for Evaluating Linear Recurrence Relations Using the Program Transformation Technique. Acta Informatica, 18 (1982), 181–206. https://doi.org/10.1007/BF00264438 Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Alberto Pettorossi and Maurizio Proietti. 1988. Importing and Exporting Information in Program Development. In Partial Evaluation and Mixed Computation, Dines Bjørner, Andrei P. Ershov, and Neil D. Jones (Eds.). North-Holland, 405–425. Google ScholarGoogle Scholar
  42. Alberto Pettorossi and Maurizio Proietti. 2002. The List Introduction Strategy for the Derivation of Logic Programs. Formal Aspects of Computing, 13, 3-5 (2002), 233–251. https://doi.org/10.1007/s001650200011 Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Alberto Pettorossi and Maurizio Proietti. 2002. Program Derivation = Rules + Strategies. In Computational Logic: Logic Programming and Beyond (Essays in honour of Bob Kowalski, Part I ), A. Kakas and F. Sadri (Eds.). Springer-Verlag, 273–309. https://doi.org/10.1007/3-540-45628-7_12 Google ScholarGoogle ScholarCross RefCross Ref
  44. Alberto Pettorossi and Maurizio Proietti. 2004. Transformations of Logic Programs with Goals as Arguments. Theory Pract. Log. Program., 4, 4 (2004), 495–537. https://doi.org/10.1017/S147106840400198X Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Alberto Pettorossi and Andrzej Skowron. 1989. The Lambda Abstraction Strategy for Program Derivation. Fundamenta Informaticae, XII, 4 (1989), 541–561. Available on request to the authors. Google ScholarGoogle ScholarCross RefCross Ref
  46. Maurizio Proietti and Alberto Pettorossi. 1991. Semantics Preserving Transformation Rules for Prolog. In 1991 ACM SIGPLAN Symposium on Partial Evaluation and Semantics Based Program Manipulation, PEPM ’91, Yale University, New Haven, Connecticut, USA. ACM Press, 274–284. Google ScholarGoogle Scholar
  47. Teodor C. Przymusinski. 1988. On the Declarative Semantics of Stratified Deductive Databases and Logic Programs. In Foundations of Deductive Databases and Logic Programming, Jack Minker (Ed.). Morgan Kaufmann, 193–216. https://doi.org/10.1016/B978-0-934613-40-8.50009-9 Google ScholarGoogle ScholarCross RefCross Ref
  48. Taisuke Sato and Hisao Tamaki. 1984. Transformational Logic Program Synthesis. In Proceedings of the International Conference on Fifth Generation Computer Systems. ICOT, 195–201. Google ScholarGoogle Scholar
  49. William L. Scherlis. 1981. Program Improvement by Internal Specialization. In Proc. 8th ACM Symposium on Principles of Programming Languages, Williamsburgh, Va, USA. ACM Press, 41–49. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Hisao Tamaki and Taisuke Sato. 1984. Unfold/Fold Transformation of Logic Programs. In Proceedings of the Second International Conference on Logic Programming, ICLP ’84, S.-Å. Tärnlund (Ed.). Uppsala University, Uppsala, Sweden. 127–138. Google ScholarGoogle Scholar
  51. Valentin F. Turchin. 1986. The Concept of a Supercompiler. ACM Trans. Program. Lang. Syst., 8, 3 (1986), 292–325. https://doi.org/10.1145/5956.5957 Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. S. A. Walker and H. Raymond Strong. 1973. Characterizations of Flowchartable Recursions. J. Comput. Syst. Sci., 7, 4 (1973), 404–447. https://doi.org/10.1016/S0022-0000(73)80032-7 Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Mitchell Wand. 1980. Continuation-based Program Transformation Strategies. Journal of the ACM, 27, 1 (1980), 164–180. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. David H. D. Warren. 1977. Implementing Prolog – Compiling Predicate Logic Programs. Department of Artificial Intelligence, University of Edinburgh, Scotland. Google ScholarGoogle Scholar
  55. Hong Zhu. 1994. How Powerful Are Folding / Unfolding Transformations? Journal of Functional Programming, 4, 1 (1994), 89–112. https://doi.org/10.1017/S0956796800000964 Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. A Historical Perspective on Program Transformation and Recent Developments (Invited Contribution)
                  Index terms have been assigned to the content through auto-classification.

                  Recommendations

                  Comments

                  Login options

                  Check if you have access through your login credentials or your institution to get full access on this article.

                  Sign in
                  • Published in

                    cover image ACM Conferences
                    PEPM 2024: Proceedings of the 2024 ACM SIGPLAN International Workshop on Partial Evaluation and Program Manipulation
                    January 2024
                    145 pages
                    ISBN:9798400704871
                    DOI:10.1145/3635800

                    Copyright © 2024 Copyright held by the owner/author(s)

                    Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for third-party components of this work must be honored. For all other uses, contact the owner/author(s).

                    Publisher

                    Association for Computing Machinery

                    New York, NY, United States

                    Publication History

                    • Published: 11 January 2024

                    Permissions

                    Request permissions about this article.

                    Request Permissions

                    Check for updates

                    Qualifiers

                    • invited-talk

                    Acceptance Rates

                    Overall Acceptance Rate66of120submissions,55%
                  • Article Metrics

                    • Downloads (Last 12 months)48
                    • Downloads (Last 6 weeks)1

                    Other Metrics

                  PDF Format

                  View or Download as a PDF file.

                  PDF

                  eReader

                  View online with eReader.

                  eReader