An NSF Proposal
- 52 Downloads
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  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.
Keywordsprogram transformation software productivity software performance partial evaluation language translators data structure selection
Unable to display preview. Download preview PDF.
- 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.Bayer, R. Query evaluation and recursion in deductive database system, 1985. unpublished manuscript.Google Scholar
- 3.Bloom, B. Ready simulation, bisimulation, and the semantics of CCS-like languages. PhD thesis, Massachusetts Institute of Technology, Sept. 1989.Google Scholar
- 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.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.Cai, J. A language for semantic analysis. Technical Report 635, Courant Institute, New York University, 1993.Google Scholar
- 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.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.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.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.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.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.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.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.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.Cousot P. and Cousot, R. Constructive versions of Tarski’s fixed point theorems. Pacific J. Math., 82(1) (1979) 43–57.Google Scholar
- 17.Curry, H. Modified basic functionality in combinatory logic. Dialectica, 23 (1969) 83–92.Google Scholar
- 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
- 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
- 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.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.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.Hindley, R. The principal type-scheme of an object in combinatory logic. Trans. Amer. Math. Soc., 146 (1969) 29–60Google Scholar
- 27.Jones, N., Gomard, C., and Sestoft, P. Partial Evaluation and Automatic Program Generation. Prentice-Hall, 1993.Google Scholar
- 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.Klint, P. The ASF+SDF meta-environment user’s guide, version 26. Technical report, Centrum voor Wiskunde en Informatica, 1993.Google Scholar
- 30.Knuth, D. The Art of Computer Programming. 3 Vol. Addison-Wesley, 1968–1972.Google Scholar
- 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.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.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.Paige, R. Formal Differentiation. UMI Research Press, 1981.Google Scholar
- 35.Paige, R. Programming with invariants. J IEEE Software, 3(1) 1986. 56–69,Google Scholar
- 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.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.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
- 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.Refine user’s guide version 3.0, 1990.Google Scholar
- 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.Reps, T. and Teitelbaum, T. The Synthesizer Generator: A System for Constructing Language-Based Editors. Springer-Verlag, New York, 1989.Google Scholar
- 45.Schwartz, J. Automatic data structure choice in a language of very high level. CACM, 18(12) (1975) 722–728.Google Scholar
- 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.Smith, D. Kids—a semi-automatic program development system. IEEE Transactions on Software Engineering, (1990) 129–136.Google Scholar
- 49.Snyder, K. The SETL2 programming language. Technical Report 490, Courant Insititute, New York University, 1990.Google Scholar
- 50.Tarski, A. A lattice-theoretical fixpoint theorem and its application. Pacific J. of Mathematics, 5 (1955) 285–309.Google Scholar
- 51.Ullman, J. Principles of Database and Knowledge-Base Systems. Computer Science Press, 1988.Google Scholar
- 52.van der Meulen, E. Incremental rewriting. PhD thesis, CWI, 1994.Google Scholar
- 53.Willard, D.E. Predicate retrieval theory. Technical Report 83-3, SUNY Albany, 1983.Google Scholar
- 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
- 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.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