A simplifier for untyped lambda expressions

  • Louis Galbiati
  • Carolyn Talcott
Chapter 5 Architecture, Compilers And Parallel Computation
Part of the Lecture Notes in Computer Science book series (LNCS, volume 516)

Abstract

Many applicative programming languages are based on the call-by-value lambda calculus. For these languages tools such as compilers, partial evaluators, and other transformation systems often make use of rewriting systems that incorporate some form of beta reduction. For purposes of automatic rewriting it is important to develop extensions of beta-value reduction and to develop methods for guaranteeing termination. This paper describes an extension of beta-value reduction and a method based on abstract interpretation for controlling rewriting to guarantee termination. The main innovations are (1) the use of rearrangement rules in combination with beta-value reduction to increase the power of the rewriting system and (2) the definition of a non-standard interpretation of expressions, the generates relation, as a basis for designing terminating strategies for rewriting.

Keywords

Reduction System Abstract Interpretation Reduction Rule Rule Application Reduction Sequence 
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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

6. References

  1. Abramsky, S. and Hankin, C. (eds.) [1987] Abstract interpretation of applicative languages (Michael Horwood, London).Google Scholar
  2. Barendregt, H. [1981] The lambda calculus: its syntax and semantics (North-Holland, Amsterdam).Google Scholar
  3. Bondorf, A. [1990] Automatic Autoprojection of Higher Order Recursive Equations, ESOP'90.Google Scholar
  4. Breazu-Tannen, V. and Gallier, J. [1989] Polymorphic rewriting conserves algebraic strong normalization and confluence, in: 16th International colloquium on Automata, Languages, and Programming, Lecture Notes in Computer Science 372, pp. 137–150.Google Scholar
  5. Galbiati, L. and Talcott, C. [1990] A Simplifier for Untyped Lambda Expressions, Computer Science Department, Stanford University Technical Report.Google Scholar
  6. Jones, N. D., Gomard, C., Bondorf, A., Danvy, O., and Mogensen, T. [1989] A Self-Applicable Partial Evaluator for the Lambda-Calculus, IEEE Computer Society 1990 International Conference on Computer Languages.Google Scholar
  7. Jones, N. D., Sestoft, P., and Søndergaard, H. [1989] Mix: A self-applicable partial evaluator for experiments in compiler generation, Lisp and Symbolic Computation, 2, pp. 9–50.Google Scholar
  8. Landin, P. J. [1966] The next 700 programming languages, Comm. ACM, 9, pp. 157–166.Google Scholar
  9. Mason, I. A. and Talcott, C. L. [1989a] A sound and complete axiomatization of operational equivalence between programs with memory, Fourth annual symposium on logic in computer science, (IEEE).Google Scholar
  10. Mason, I. A. and Talcott, C. L. [1989b] Programming, transforming, and proving with function abstractions and memories, in: 16th International colloquium on automata, languages, and programming, Lecture Notes in Computer Science 372, pp. 574–588.Google Scholar
  11. Moggi, E. [1989] Computational lambda-calculus and monads, Fourth annual symposium on logic in computer science, (IEEE).Google Scholar
  12. Nielson, F. [1988] A formal type system for comparing partial evaluators, in Bjørner, D., Ershov, A.P., and Jones, N. D. (editors) Partial Evaluation and Mixed Computation (North-Holland) pp. 349–384.Google Scholar
  13. Plotkin, G. [1975] Call-by-name, call-by-value and the lambda calculus, Theoretical Computer Science, 1, pp. 125–159.Google Scholar
  14. Shivers O. [1988] Control Flow Analysis in Scheme, Proceedings of SIGPLAN '88 Conference on Programming Language Design and Implementation.Google Scholar
  15. Steele, G. L. [1976] Lambda: the ultimate declarative, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, Technical Report 379.Google Scholar
  16. Talcott, C. [1989] Programming and proving with function and control abstractions, Stanford University Computer Science Department Report No. STAN-CS-89-1288.Google Scholar
  17. Talcott, C. [1990] A theory for program and data type specification, to appear in: International Symposium on Design and Implementation of Symbolic Computation Systems (DISCO 90), Capri, Italy (Springer-Verlag).Google Scholar
  18. Wadsworth, C. [1978] Approximate reduction and lambda calculus models, Siam J. Comput. 7 pp. 337–356.Google Scholar
  19. Weise, D. and Ruf, E. [1990] Computing Types During Program Specialization, CSL-TR-90-441, Computer Systems Laboratory, Stanford University.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1991

Authors and Affiliations

  • Louis Galbiati
    • 1
  • Carolyn Talcott
    • 2
  1. 1.Quickturn Systems, Inc.Mountain View
  2. 2.Stanford UniversityStanford

Personalised recommendations