Skip to main content

A simplifier for untyped lambda expressions

  • Chapter 5 Architecture, Compilers And Parallel Computation
  • Conference paper
  • First Online:
  • 151 Accesses

Part of the book series: Lecture Notes in Computer Science ((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.

This is a preview of subscription content, log in via an institution.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

6. References

  • Abramsky, S. and Hankin, C. (eds.) [1987] Abstract interpretation of applicative languages (Michael Horwood, London).

    Google Scholar 

  • Barendregt, H. [1981] The lambda calculus: its syntax and semantics (North-Holland, Amsterdam).

    Google Scholar 

  • Bondorf, A. [1990] Automatic Autoprojection of Higher Order Recursive Equations, ESOP'90.

    Google Scholar 

  • 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 

  • Galbiati, L. and Talcott, C. [1990] A Simplifier for Untyped Lambda Expressions, Computer Science Department, Stanford University Technical Report.

    Google Scholar 

  • 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 

  • 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 

  • Landin, P. J. [1966] The next 700 programming languages, Comm. ACM, 9, pp. 157–166.

    Google Scholar 

  • 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 

  • 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 

  • Moggi, E. [1989] Computational lambda-calculus and monads, Fourth annual symposium on logic in computer science, (IEEE).

    Google Scholar 

  • 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 

  • Plotkin, G. [1975] Call-by-name, call-by-value and the lambda calculus, Theoretical Computer Science, 1, pp. 125–159.

    Google Scholar 

  • Shivers O. [1988] Control Flow Analysis in Scheme, Proceedings of SIGPLAN '88 Conference on Programming Language Design and Implementation.

    Google Scholar 

  • Steele, G. L. [1976] Lambda: the ultimate declarative, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, Technical Report 379.

    Google Scholar 

  • Talcott, C. [1989] Programming and proving with function and control abstractions, Stanford University Computer Science Department Report No. STAN-CS-89-1288.

    Google Scholar 

  • 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 

  • Wadsworth, C. [1978] Approximate reduction and lambda calculus models, Siam J. Comput. 7 pp. 337–356.

    Google Scholar 

  • Weise, D. and Ruf, E. [1990] Computing Types During Program Specialization, CSL-TR-90-441, Computer Systems Laboratory, Stanford University.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

S. Kaplan M. Okada

Rights and permissions

Reprints and permissions

Copyright information

© 1991 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Galbiati, L., Talcott, C. (1991). A simplifier for untyped lambda expressions. In: Kaplan, S., Okada, M. (eds) Conditional and Typed Rewriting Systems. CTRS 1990. Lecture Notes in Computer Science, vol 516. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-54317-1_103

Download citation

  • DOI: https://doi.org/10.1007/3-540-54317-1_103

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-54317-6

  • Online ISBN: 978-3-540-47558-3

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics