Advertisement

Normalization by Evaluation for the Computational Lambda-Calculus

  • Andrzej Filinski
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2044)

Abstract

We show how a simple semantic characterization of normalization by evaluation for the λβη-calculus can be extended to a similar construction for normalization of terms in the computational λ-calculus. Specifically, we show that a suitable residualizing interpretation of base types, constants, and computational effects allows us to extract a syntactic normal form from a term’s denotation. The required interpretation can itself be constructed as the meaning of a suitable functional program in an ML-like language, leading directly to a practical normalization algorithm. The results extend easily to product and sum types, and can be seen as a formal basis for call-by-value type-directed partial evaluation.

Keywords

Normal Form Base Type Partial Evaluation Abstract Syntax Normalization Algorithm 
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.

References

  1. 1.
    Thorsten Altenkirch, Martin Hofmann, and Thomas Streicher. Categorical reconstruction of a reduction free normalization proof. In Category Theory and Computer Science, 6th International Conference, number 953 in Lecture Notes in Computer Science, 1995.Google Scholar
  2. 2.
    Ulrich Berger. Program extraction from normalization proofs. In M. Bezem and J. F. Groote, editors, Typed Lambda Calculi and Applications, number 664 in Lecture Notes in Computer Science, pages 91–106, Utrecht, The Netherlands, March 1993.CrossRefGoogle Scholar
  3. 3.
    Ulrich Berger, Matthias Eberl, and Helmut Schwichtenberg. Normalization by evaluation. In Prospects for Hardware Foundations (NADA), number 1546 in Lecture Notes in Computer Science, pages 117–137, 1998.CrossRefGoogle Scholar
  4. 4.
    Ulrich Berger and Helmut Schwichtenberg. An inverse of the evaluation functional for typed λ-calculus. In Proceedings of the Sixth Annual IEEE Symposium on Logic in Computer Science, pages 203–211, Amsterdam, The Netherlands, July 1991.Google Scholar
  5. 5.
    Thierry Coquand and Peter Dybjer. Intuitionistic model constructions and normalization proofs. Mathematical Structures in Computer Science, 7:75–94, 1997.zbMATHCrossRefMathSciNetGoogle Scholar
  6. 6.
    Djordje ČubriČ, Peter Dybjer, and Philip Scott. Normalization and the Yoneda embedding. Mathematical Structures in Computer Science, 8:153–192, 1998.CrossRefzbMATHGoogle Scholar
  7. 7.
    Olivier Danvy. Type-directed partial evaluation. In J. Hatcliff, T.æ. Mogensen, and P. Thieman, editors, Partial Evaluation — Practice and Theory; Proceedings of the 1998 DIKU Summer School, number 1706 in Lecture Notes in Computer Science, pages 367–411. Springer-Verlag, Copenhagen, Denmark, July 1998.Google Scholar
  8. 8.
    Olivier Danvy and Peter Dybjer, editors. Preliminary Proceedings of the APPSEM Workshop on Normalization by Evaluation. Department of Computer Science, University of Aarhus, May 1998. BRICS Note NS-98-1.Google Scholar
  9. 9.
    Olivier Danvy and Andrzej Filinski. Representing control: A study of the CPS transformation. Mathematical Structures in Computer Science, 2(4):361–391, December 1992.zbMATHMathSciNetCrossRefGoogle Scholar
  10. 10.
    Andrzej Filinski. Representing layered monads. In Proceedings of the 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 175–188, San Antonio, Texas, January 1999.Google Scholar
  11. 11.
    Andrzej Filinski. A semantic account of type-directed partial evaluation. In G. Nadathur, editor, International Conference on Principles and Practice of Declarative Programming, number 1702 in Lecture Notes in Computer Science, pages 378–395, Paris, France, September 1999.CrossRefGoogle Scholar
  12. 12.
    Marcelo Fiore, Gordon Plotkin, and Daniele Turi. Abstract syntax and variable binding. In Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science, pages 193–202, Trento, Italy, July 1999.Google Scholar
  13. 13.
    Cormac Flanagan, Amr Sabry, Bruce F. Duba, and Matthias Felleisen. The essence of compiling with continuations. In Proceedings of the SIGPLAN’ 93 Conference on Programming Language Design and Implementation, pages 237–247, Albuquerque, New Mexico, June 1993.Google Scholar
  14. 14.
    Murdoch Gabbay and Andrew Pitts. A new approach to abstract syntax involving binders. In Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science, pages 214–224, Trento, Italy, July 1999.Google Scholar
  15. 15.
    Bernd Grobauer and Zhe Yang. The second Futamura projection for type-directed partial evaluation. In ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pages 22–32. ACM Press, January 2000.Google Scholar
  16. 16.
    Eugenio Moggi. Computational lambda-calculus and monads. In Proceedings of the Fourth Annual Symposium on Logic in Computer Science, pages 14–23, Pacific Grove, California, June 1989. IEEE.Google Scholar
  17. 17.
    Atsushi Ohori. A Curry-Howard isomorphism for compilation and program execution. In J.-Y. Girard, editor, Typed Lambda-Calculi and Applications, volume 1581 of Lecture Notes in Computer Science, L’Aquila, Italy, April 1999.CrossRefGoogle Scholar
  18. 18.
    Eijiro Sumii and Naoki Kobayashi. Online-and-offine partial evaluation: A mixed approach. In ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pages 12–21. ACM Press, January 2000.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2001

Authors and Affiliations

  • Andrzej Filinski
    • 1
  1. 1.BRICS, Department of Computer ScienceUniversity of AarhusAarhus

Personalised recommendations