Higher-Order and Symbolic Computation

, Volume 18, Issue 1–2, pp 211–235

An NSF Proposal

  • Robert Paige


The objectives of this research are to improve software productivity, reliability, and performance of complex systems. The approach combines program transformations, sometimes in reflective ways, to turn very high level perspicuous specifications into efficient implementations. These transformations will be implemented in a meta-transformational system, which itself will be transformed from an executable specification into efficient code. Experiments will be conducted to assess the research objectives in scaled up applications targetted to systems that perform complex program analysis and translation.

The transformations to be used include dominated convergence (for implementing fixed points efficiently), finite differencing (for replacing costly repeated calculations by less expensive incremental counterparts), data structure selection (for simulating associative access on a RAM in real time), and partial evaluation (for eliminating interpretive overhead and simplification). Correctness of these transformations, of user-defined transformations, and of the transformational system itself will be addressed in part. Both the partial evaluator and components of the transformational system that perform inference and conditional rewriting will be derived by transformation from high level specifications. Other transformations will be specified in terms of Datalog-like inference and conditional rewriting rules that should be amenable to various forms of rule induction.

Previously, Cai and Paige in [12] used an ideal model of productivity free from all human factors in order to demonstrate experimentally how a transformation from a low level specification language into C could be used to obtain a five-fold increase in the productivity of efficient algorithm implementation in C in comparison to hand-coded C. However, only small-scale examples were considered. The proposed research includes a plan to expand this model of productivity to involve other specification languages (and their transformation to C), and to conduct experiments to demonstrate how to obtain a similar five-fold improvement in productivity for large-scale examples of C programs that might exceed 100,000 lines.

The proposal lays out extensive evidence to support the approach, which will be evaluated together with its theoretical underpinnings through substantial experiments. If successful, the results are expected to have important scientific and economic impact. They are also expected to make interesting, new pedagogical connections between the areas of programming languages, software engineering, databases, artificial intelligence, and algorithms.


program transformation software productivity software performance partial evaluation language translators data structure selection 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Bancilhon, F. Naive evaluation of recursively defined relations. On Knowledge-Base Management Systems, M. Brodie and J. Mylopoulos (Eds.). McGraw-Hill, 1986, pp. 165–178.Google Scholar
  2. 2.
    Bayer, R. Query evaluation and recursion in deductive database system, 1985. unpublished manuscript.Google Scholar
  3. 3.
    Bloom, B. Ready simulation, bisimulation, and the semantics of CCS-like languages. PhD thesis, Massachusetts Institute of Technology, Sept. 1989.Google Scholar
  4. 4.
    Bloom, B. and Paige, R. Transformational design and implementation of a new efficient solution to the ready simulation problem. Science of Computer Programming, 24(3) (1995), 189–220. http://cs.nyu.edu/cs/faculty/paige/papers/readysc.ps.
  5. 5.
    Borras, P., Clement, D., Despeyroux, T., Incerpi, J., Kahn, G., Lang, B., and Pascual, V. Centaur: the system. Rapports de Recherche 777, INRIA, 1987.Google Scholar
  6. 6.
    Cai, J. A language for semantic analysis. Technical Report 635, Courant Institute, New York University, 1993.Google Scholar
  7. 7.
    Cai, J., Facon, P., Henglein, F., Paige, R., and Schonberg, E. Type transformation and data structure choice. In Constructing Programs From Specifications, B. Moeller, (Ed.). North-Holland, Amsterdam, 1991, pp. 126–164. http://cs.nyu.edu/cs/faculty/paige/papers/subtype.ps.
  8. 8.
    Cai, J. and Paige, R. Binding performance at language design time. In Proc. Fourteenth ACM Symp. on Principles of Programming Languages, 1987, pp. 85–97.Google Scholar
  9. 9.
    Cai, J. and Paige, R. Program derivation by fixed point computation. Science of Computer Programming, 11(3) (1988/1989) 197–261. http://cs.nyu.edu/cs/faculty/paige/papers/fixpoint.ps.
  10. 10.
    Cai, J. and Paige, R. Languages polynomial in the input plus output. In Algebraic Methodology and Software Technology, M. Nivat, C. Rattray, T. Rus, and G. Scollo, (Eds.,) Workshops in Computing, Springer-Verlag, Conference Record of the Second AMAST, 1992, pp. 287–302.Google Scholar
  11. 11.
    Cai, J. and Paige, R. Using multiset discrimination to solve language processing problems without hashing. Theoretical Computer Science, 145(1–2) (1995) 189–228. http://cs.nyu.edu/cs/faculty/paige/papers/hash.ps.
  12. 12.
    Cai J. and Paige, R. Towards increased productivity of algorithm implementation. In Proc. ACM SIGSOFT, (1993), pp. 71–78. http://cs.nyu.edu/cs/faculty/paige/papers/prod.ps.
  13. 13.
    Cai, J., Paige, R., and Tarjan, R. More efficient bottom-up multi-pattern matching in trees. Theoretical Computer Science, 106(1) (1992) 21–60. file://cs.nyu.edu/pub/tech-reports/tr604.ps.Z.Google Scholar
  14. 14.
    Cantali, A. Using ETNA to prove correctenss and complexity of a linear time implementation of a subset of Willard’s RCS. Bachelor’s thesis, University of Catania, Catania, Italy, 1997.Google Scholar
  15. 15.
    Chang C.-H. and Paige, R. From regular expressions to DFA’s using compressed NFA’s. Theoretical Computer Science, 178(1–2) (1997) 1–36. http://cs.nyu.edu/cs/faculty/paige/papers/cnnfa.ps.
  16. 16.
    Cousot P. and Cousot, R. Constructive versions of Tarski’s fixed point theorems. Pacific J. Math., 82(1) (1979) 43–57.Google Scholar
  17. 17.
    Curry, H. Modified basic functionality in combinatory logic. Dialectica, 23 (1969) 83–92.Google Scholar
  18. 18.
    Donzeau-Gouge, V., Huet, G., Kahn, G., and Lang, B. Programming environments based on structured editors: The mentor experience. In Interactive Programming Environments. McGraw-Hill, 1984.Google Scholar
  19. 19.
    Dowling W. and Gallier, J. Linear-time algorithms for testing the satisfiability of propositional horn formulae. J. Logic Programming. 1(3) (1984), 267–284.CrossRefGoogle Scholar
  20. 20.
    Earley, J. High level iterators and a method for automatically designing data structure representation. J. of Computer Languages, 1(4) 1976, 321–342.CrossRefGoogle Scholar
  21. 21.
    Fong A. and Ullman, J. Induction variables in very high level languages. In Proc. Third ACM Symp. on Principles of Programming Languages, Jan. 1976, pp. 104–112.Google Scholar
  22. 22.
    Forgy, C. RETE, a fast algorithm for the many patterns many objects match problem. Artificial Intelligence, 19(3) (1982) 17–37CrossRefGoogle Scholar
  23. 23.
    Goldberg A. and Paige, R. Stream processing. In Proceedings of the ACM Symposium on LISP and Functional Programming, ACM, 1984, pp. 53–62.Google Scholar
  24. 24.
    Goyal D. and Paige, R. The formal reconstruction and improvement of the linear time fragment of Willard’s relational calculus subset. In Algorithmic Languages and Calculi. R. Bird and L. Meertens (Eds.) chapman & Hall, 1997, pp. 382–414. http://cs.nyu.edu/phd_students/deepak/lrcs.ps.
  25. 25.
    Goyal D. and Paige, R. A new solution to the hidden copy problem. In Proc. 5th International Static Analysis Symposium. G. Levi (Ed.) number 1503 in LNCS, Springer, September 1998, pp. 327–348. http://cs.nyu.edu/phd_students/deepak/copy.ps.
  26. 26.
    Hindley, R. The principal type-scheme of an object in combinatory logic. Trans. Amer. Math. Soc., 146 (1969) 29–60Google Scholar
  27. 27.
    Jones, N., Gomard, C., and Sestoft, P. Partial Evaluation and Automatic Program Generation. Prentice-Hall, 1993.Google Scholar
  28. 28.
    Keller, J. and Paige, R. Program derivation with verified transformations—a case study. CPAM, 48(9–10) (1996) 1053–1113 http://cs.nyu.edu/cs/faculty/paige/papers/ltmjform.ps.
  29. 29.
    Klint, P. The ASF+SDF meta-environment user’s guide, version 26. Technical report, Centrum voor Wiskunde en Informatica, 1993.Google Scholar
  30. 30.
    Knuth, D. The Art of Computer Programming. 3 Vol. Addison-Wesley, 1968–1972.Google Scholar
  31. 31.
    Koenig, S. and Paige, R. A transformational framework for the automatic control of derived data. In Proc. 7th Intl. Conf. on VLDB, Sep 1981, pp. 306–318Google Scholar
  32. 32.
    Launchbury, J. and Holst, C.K. Handwriting cogen to avoid problems with static typing. In Draft Proceedings, Fourth Annual Glasgow Workshop on Functional Programming. C.K.H.R. Heldal and P. Wadler (Eds.) Workshops in Computing, Skye, Scotland, 1991. S-V, pp. 210–218.Google Scholar
  33. 33.
    Liu, Y. Principled strength reduction. In Algorithmic Languages and Calculi. R. Bird and L. Meertens (Eds.) Chapman & Hall, 1997, pp. 357–381.Google Scholar
  34. 34.
    Paige, R. Formal Differentiation. UMI Research Press, 1981.Google Scholar
  35. 35.
    Paige, R. Programming with invariants. J IEEE Software, 3(1) 1986. 56–69,Google Scholar
  36. 36.
    Paige, R. Real-time simulation of a set machine on a RAM. In Computing and Information. N. Janicki and W. Koczkodaj (Eds.). volume II of ICCI 89, Canadian Scholars’ Press, Toronto, May 1989, pp. 69–73. http://cs.nyu.edu/cs/faculty/paige/papers/realtime.ps.
  37. 37.
    Paige, R. Viewing a program transformation system at work. In Programming Language Implementation and Logic, M. Hermenegildo and J. Penjam, (eds.), volume 844 of LNCS, pages 5–24. Springer-Verlag, Berlin, Sep. 1994. http://cs.nyu.edu/cs/faculty/paige/papers/viewing.ps.
  38. 38.
    Paige, R. and Henglein, F. Mechanical translation of set theoretic problem specifications into efficient RAM code-a case study. Journal of Symbolic Computation, 4(2) (1987) 207–232.Google Scholar
  39. 39.
    Paige, R., Tarjan, R., and Bonic, R. A linear time solution to the single function coarsest partition problem. Theoretical Computer Science, 40(1) (1985) 67–84CrossRefGoogle Scholar
  40. 40.
    Paige R. and Yang, Z. High level reading and data structure compilation. In Proc. 24th ACM Symp. on Principles of Programming Languages, pp. 456 –469, 1997. http://cs.nyu.edu/phd_students/zheyang/papers/read.ps.
  41. 41.
    Refine user’s guide version 3.0, 1990.Google Scholar
  42. 42.
    Reif J. and Lewis, H. Symbolic evaluation and the global value graph. In Proc. 4th Annual ACM Symp. on Principles of Programming Languages, 1997, pp. 104–118Google Scholar
  43. 43.
    Reps, T. and Teitelbaum, T. The Synthesizer Generator: A System for Constructing Language-Based Editors. Springer-Verlag, New York, 1989.Google Scholar
  44. 44.
    Reps, T., Teitelbaum, T., and Demers, A. Incremental context-dependent analysis for language-based editors. ACM TOPLAS, 5(3) (1983) 449–477CrossRefGoogle Scholar
  45. 45.
    Schwartz, J. Automatic data structure choice in a language of very high level. CACM, 18(12) (1975) 722–728.Google Scholar
  46. 46.
    Schwartz, J. Optimization of very high level languages, parts I, II. J. of Computer Languages, 1(2–3) (1975) 161–218.CrossRefGoogle Scholar
  47. 47.
    Schwartz, J., Dewar, R., Dubinsky, E., and Schonberg, E. Programming with Sets: An Introduction to SETL. Springer-Verlag, New York, 1986.Google Scholar
  48. 48.
    Smith, D. Kids—a semi-automatic program development system. IEEE Transactions on Software Engineering, (1990) 129–136.Google Scholar
  49. 49.
    Snyder, K. The SETL2 programming language. Technical Report 490, Courant Insititute, New York University, 1990.Google Scholar
  50. 50.
    Tarski, A. A lattice-theoretical fixpoint theorem and its application. Pacific J. of Mathematics, 5 (1955) 285–309.Google Scholar
  51. 51.
    Ullman, J. Principles of Database and Knowledge-Base Systems. Computer Science Press, 1988.Google Scholar
  52. 52.
    van der Meulen, E. Incremental rewriting. PhD thesis, CWI, 1994.Google Scholar
  53. 53.
    Willard, D.E. Predicate retrieval theory. Technical Report 83-3, SUNY Albany, 1983.Google Scholar
  54. 54.
    Willard, D.E. Quasi-linear algorithms for processing relational data base expressions. In Proceedings of the 9th ACM SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systems, 1990, pp. 243–257.Google Scholar
  55. 55.
    Willard, D. E. Applications of range query theory to relational data base join and selection operations. J. Computer and System Sci., 52 (1996) 157–169.CrossRefGoogle Scholar
  56. 56.
    Yang, Z. Encoding types in ML-like languages. In P. Hudak and C. Queinnec, Proceedings of the 1998 ACM SIGPLAN International Conference on Functional Programming (Eds.), Baltimore, Maryland, USA, Sept. ACM Press, 1998, pp. 289–300Google Scholar
  57. 57.
    Yang, Z. A native ML implementation of type-directed partial evaluation. In Proceedings of the 1998 APPSEM Workshop on Normalization by Evaluation, NBE ‘98. O. Danvy and P. Dybjer, (Eds.). Göteborg, Sweden, May 8–9, 1998, number NS-98-1 in BRICS Notes Series, BRICS, Department of Computer Science, University of Aarhus, May 1998.Google Scholar

Copyright information

© Springer Science + Business Media, Inc. 2005

Authors and Affiliations

  • Robert Paige
    • 1
  1. 1.Department of Computer Science, Courant InstituteNew York UniversityNew YorkUSA

Personalised recommendations