Supercompilers - Extended Abstract

  • Robert Paige
Part of the NATO ASI Series book series (volume 8)


The current growing interest in supercomputers will undoubtedly give rise to the question of how to program on such machines. One obvious answer is with supercompilers! We define supercompilers as highly automated transformational programming systems that can translate high level mathematical problem specifications into machine code for a variety of target computers that could be represented by a diversity of abstract parallel and sequential complexity models. Since one would not expect the object code produced by a supercompiler to be comprehensible relative to the abstractly specified source code, a reasonable supercompiler would have to compile a performance description of the object code also. This is made possible by new insights into the basic nature of what a variable is, and a careful integration of performance with semantics.

A new general top down framework is provided to facilitate powerful transformations, which can be adapted for both sequential and parallel models, and are applied in a sequence of steps to implement strategy, access paths and invariants, conventional storage structures, and other essential features of efficient programs. Some of these transformations based on fixed point theory are new, while others are improved variants of previous investigations.

Our concepts and techniques are illustrated using RAPTS, a running transformational programming system that embodies many of the features found in our notion of supercompilers.


Sorting Rosen Alan 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Aczel, Peter. An Introduction to Inductive Definitions. In: Handbook of Mathematical Logic, Barwise, J., Ed., North-Holland, 1977, pp. 739–782.CrossRefGoogle Scholar
  2. 2.
    Aho, Hopcroft, Ullman. Design and Analysis of Computer Algorithms. Addison-Wesley, 1974.Google Scholar
  3. 3.
    Alien, Frances E., Cocke, John, and Kennedy, Ken. Reduction of Operator Strength. In: Program Flow Analysis. Muchnick, S., Jones, N., Eds., Prentice Hall, 1981, pp. 79–101.Google Scholar
  4. 4.
    Bauer, F., Wossner, H. Algorithmic Language and Program Development. Springer-Verlag, Berlin, 1982.MATHGoogle Scholar
  5. 5.
    Bentley, Jon L. Writing Efficient Code. Prentice Hall, 1982.MATHGoogle Scholar
  6. 6.
    Birkhoff, Garrett. Lattice Theory. American Mathematical Society, Providence, 1966.Google Scholar
  7. 7.
    Carter, J., Wegman, M. “Universal Classes of Hash Functions.” JCSS 18, 2 (1979), 143–154.MathSciNetMATHGoogle Scholar
  8. 8.
    Cheatham, T. E., and Wegbreit, Ben. A Laboratory for the Study of Automating Programming. Proc. AFIPS 1972 Spring Joint Computer Conf., 1972.Google Scholar
  9. 9.
    Cocke, J. and Kennedy, K. “An Algorithm for Reduction of Operator Strength.” CACM 20, 11 (Nov 1977), 850–856.MATHGoogle Scholar
  10. 10.
    Cocke, J. and Schwartz, J. T. Programming Languages and Their Compilers. CIMS, New York University, 1969. Lecture NotesGoogle Scholar
  11. 11.
    Cohen, J. “Computer-Assisted Microanalysis of Programs.” CACM 25, 10 (Oct 1982), 724–733.MATHGoogle Scholar
  12. 12.
    de Bakker, Jaco. Mathematical Theory of Program Correctness. Prentice-Hall, 1980.MATHGoogle Scholar
  13. 13.
    Demers, A., Donahue, J. Making Variables Abstract: An Equational Theory for Russell. Proceedings Tenth ACM Symposium on Principles of Programming Languages, Jan, 1983, pp. pp 59–72.Google Scholar
  14. 14.
    Dijkstra, E. W. A Discipline of Programming. Prentice-Hall, 1976.MATHGoogle Scholar
  15. 15.
    Earley, Jay. High Level Operations in Automatic Programming. Proc. Symp. on Very High Level Langs., Apr, 1974. Sigplan Notices, Vol 9, Num 4Google Scholar
  16. 16.
    Earley, J. “High Level Iterators and a Method for Automatically Designing Data Structure Representation.” Journal of Computer Languages 1, 4 (1976), 321–342.CrossRefGoogle Scholar
  17. 17.
    Fong, A. C. Elimination of Common Subexpressions in Very High Level Languages. Proceedings 4th ACM Symposium on Principles of Programming Languages, Jan, 1977, pp. 48–57.Google Scholar
  18. 18.
    Fong, A C. Inductively Computable Constructs in Very High Level Languages. Proceedings 6th ACM Symposium on Principles of Programming Languages, Jan, 1979, pp. 21–28.Google Scholar
  19. 19.
    Fong, A. C. and Ullman, J. D. Induction Variables in Very High Level Languages. Proceedings Third ACM Symposium on Principles of Programming Languages, Jan, 1976, pp. 104–112.Google Scholar
  20. 20.
    Freudenberger, S., Schwartz, J., and Sharir, M. “Experience with the SETL Optimizer.” ACM TOPLAS 5, 1 (1983), 26–45.CrossRefMATHGoogle Scholar
  21. 21.
    Gerhart, S. Correctness Preserving Program Transformations. Proc. Second ACM Symposium on Principles of Programming Languages, 1975.Google Scholar
  22. 22.
    Gordon, M., Milner, A, and Wadsworth, C. Edinburgh LCF. Springer-Verlag, 1979.CrossRefMATHGoogle Scholar
  23. 23.
    Kennedy, K., Ramanathan, J. “A Deterministic Attribute Grammar Evaluator Based on Dynamic Sequencing.” ACM TOPLAS 1, 1 (July 1979), 142–160.CrossRefMATHGoogle Scholar
  24. 24.
    Knuth, D. E. “Semantics of Context-free Languages.” Mathematical Systems Theory 2, 2 (1968).MathSciNetCrossRefGoogle Scholar
  25. 25.
    Knuth, D. E. Fundamental Algorithms. Addison-Wesley, 1968.MATHGoogle Scholar
  26. 26.
    Naqui, S., Menschen, L. Synthesizing Least Fixed Point Queries into Non-recursive Iterative Programs. IJCAI 83, Aug, 1983, pp. 25–28.Google Scholar
  27. 27.
    Paige, R. Formal Differentiation. UMI Research Press, Ann Arbor, Mich, 1981. Revision of Ph.D. thesis, NYU, June 1979Google Scholar
  28. 28.
    Paige, R. Transformational Programming — Applications to Algorithms and Systems. Proceedings Tenth ACM Symposium on Principles of Programming Languages, Jan, 1983, pp. 73–87.Google Scholar
  29. 29.
    Paige, Robert. Applications of Finite Differencing to Database Integrity Control and Query/Transaction Optimization. In: Advances In Database Theory, Volume 2, Gallaire, H., Minker, J., and Nicolas, J.-M., Ed., Plenum Press, New York, to appear 1984.Google Scholar
  30. 30.
    Paige, R., and Koenig, S. “Finite Differencing of Computable Expressions.” ACM TOPLAS 4, 3 (July 1982), 402–454.CrossRefMATHGoogle Scholar
  31. 31.
    Ramshaw, L. H. Formalizing the Analysis of Algorithms. Tech. Rept SL-79–5, Xerox Palo Alto Research Center, June, 1979.Google Scholar
  32. 32.
    Reif, J. and Scherlis, W. Deriving Efficient Graph Algorithms. Carnegie-Mellon U., 1982. Technical ReportGoogle Scholar
  33. 33.
    Reps, Thomas, Teitelbaum, Tim, and Demers, Alan. “Incremental Context-Dependent Analysis for Language-Based Editors.” ACM TOPLAS 5, 3 (July 1983), 449–477.CrossRefGoogle Scholar
  34. 34.
    Rosen, B. K. Degrees of Availability. In: Program Flow Analysis, Muchnick, S., Jones, N., Eds., Prentice Hall, 1981, pp. 55–76.Google Scholar
  35. 35.
    Schonberg, E., Schwartz, J. T., and Sharir, M. “An Automatic Technique for Selection of Data Representations in in SETL Programs.” ACM TOPLAS 3, 2 (Apr 1981), 126–143.CrossRefMATHGoogle Scholar
  36. 36.
    Schwartz, J. T. On Programming: An Interim Report on the SETL Project, Installments I and II. CIMS, New York Univ., New York, 1974.Google Scholar
  37. 37.
    Scott, D. S. “Data Types as Lattices.” SIAM J. Comptng 5 (1976), 522–587.CrossRefMATHGoogle Scholar
  38. 38.
    Sintzoff, M. “Calculating Properties of Programs by Valuations on Specific Models.” ACM SIGPLAN Notices 7, 1 (1972), 203–207.CrossRefGoogle Scholar
  39. 39.
    Tarjan, R. E. “A Unified Approach to Path Problems.” JACM 28, 3 (July 1981).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1984

Authors and Affiliations

  • Robert Paige
    • 1
  1. 1.Dept. of Computer ScienceRutgers UniversityNew BrunswickUSA

Personalised recommendations