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.
6. References
Abramsky, S. and Hankin, C. (eds.) [1987] Abstract interpretation of applicative languages (Michael Horwood, London).
Barendregt, H. [1981] The lambda calculus: its syntax and semantics (North-Holland, Amsterdam).
Bondorf, A. [1990] Automatic Autoprojection of Higher Order Recursive Equations, ESOP'90.
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.
Galbiati, L. and Talcott, C. [1990] A Simplifier for Untyped Lambda Expressions, Computer Science Department, Stanford University Technical Report.
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.
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.
Landin, P. J. [1966] The next 700 programming languages, Comm. ACM, 9, pp. 157–166.
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).
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.
Moggi, E. [1989] Computational lambda-calculus and monads, Fourth annual symposium on logic in computer science, (IEEE).
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.
Plotkin, G. [1975] Call-by-name, call-by-value and the lambda calculus, Theoretical Computer Science, 1, pp. 125–159.
Shivers O. [1988] Control Flow Analysis in Scheme, Proceedings of SIGPLAN '88 Conference on Programming Language Design and Implementation.
Steele, G. L. [1976] Lambda: the ultimate declarative, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, Technical Report 379.
Talcott, C. [1989] Programming and proving with function and control abstractions, Stanford University Computer Science Department Report No. STAN-CS-89-1288.
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).
Wadsworth, C. [1978] Approximate reduction and lambda calculus models, Siam J. Comput. 7 pp. 337–356.
Weise, D. and Ruf, E. [1990] Computing Types During Program Specialization, CSL-TR-90-441, Computer Systems Laboratory, Stanford University.
Author information
Authors and Affiliations
Editor information
Rights 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