Fully abstract translations between functional languages

We examine the problem of finding fully abstract translations between programming languages, i.e., translations that preserve code equivalence and nonequivalence. We present three examples of fully abstract translations: one from call-by-value to lazy PCF, one from call-by name to call-by-value PCF, and one from lazy to call-by-value PCF. The translations yield upper and lower bounds on decision procedures for proving equivalences of code. We finally define a notion of "functional translation" that captures the essence of the proofs of full abstraction, and show that some languages cannot be translated into others. Comments University of Pennsylvania Department of Computer and Information Science Technical Report No. MSCIS-91-64. This technical report is available at ScholarlyCommons: http://repository.upenn.edu/cis_reports/793 Fully Abstract Translations Between Functional Languages MS-CIS-91-64 LOGIC & COMPUTATION 38

[1]  John C. Mitchell On Abstraction and the Expressive Power of Programming Languages , 1991, Sci. Comput. Program..

[2]  Eugenio Moggi,et al.  Computational lambda-calculus and monads , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[3]  H. Friedman Equality between functionals , 1975 .

[4]  John C. Mitchell,et al.  Type Systems for Programming Languages , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[5]  Richard Statman,et al.  Logical Relations and the Typed lambda-Calculus , 1985, Inf. Control..

[6]  J. Riecke,et al.  SHOULD A FUNCTION CONTINUE , 1989 .

[7]  Bent Thomsen,et al.  A calculus of higher order communicating systems , 1989, POPL '89.

[8]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[9]  Robin Milner,et al.  Fully Abstract Models of Typed lambda-Calculi , 1977, Theor. Comput. Sci..

[10]  Matthias Felleisen,et al.  Reasoning with continuations II: full abstraction for models of control , 1990, LISP and Functional Programming.

[11]  Richard Statman,et al.  The Typed lambda-Calculus is not Elementary Recursive , 1979, Theor. Comput. Sci..

[12]  Jon G. Riecke,et al.  A Complete and Decidable Proof System for Call-by-Value Equalities (Preliminary Report) , 1990, ICALP.

[13]  Helmat Schwichtenberg,et al.  Complexity of Normalization in the Pure Typed Lambda – Calculus , 1982 .

[14]  V. Yu. Sazonov Expressibility of functions in D. Scott's LCF language , 1976 .

[15]  Jon G. Riecke,et al.  The logic and expressibility of simply-typed call-by-value and lazy languages , 1992 .

[16]  Kurt Sieber,et al.  Relating Full Abstraction Results for Different Programming Languages , 1990, FSTTCS.

[17]  John C. Reynolds,et al.  On the Relation between Direct and Continuation Semantics , 1974, ICALP.

[18]  Bard Bloom Can LCF Be Topped? Flat Lattice models of Typed Lambda Calculus (Preliminary Report) , 1988, LICS.

[19]  Albert R. Meyer,et al.  Completeness for Typed Lazy Inequalities (Preliminary Report) , 1990 .

[20]  Carl A. Gunter,et al.  Semantic Domains , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[21]  C.-H. Luke Ong,et al.  Fully abstract models of the lazy lambda calculus , 1988, [Proceedings 1988] 29th Annual Symposium on Foundations of Computer Science.

[22]  Eugenio Moggi,et al.  Notions of Computation and Monads , 1991, Inf. Comput..

[23]  Albert R. Meyer,et al.  Semantical paradigms: notes for an invited lecture , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[24]  Ehud Shapiro,et al.  Separating concurrent languages with categories of language embeddings , 1991, STOC '91.

[25]  Bard Bloom Can LCF be topped? Flat lattice models of typed lambda calculus , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[26]  C.-H. Luke Ong The Lazy Lambda Calculus : an investigation into the foundations of functional programming , 1988 .

[27]  Albert R. Meyer Semantical Paradigms: Notes for an Invited Lecture, with Two Appendices by Stavros S. Cosmadakis , 1988, LICS 1988.

[28]  S. Abramsky The lazy lambda calculus , 1990 .

[29]  Matthias Felleisen,et al.  On the Expressive Power of Programming Languages , 1990, European Symposium on Programming.

[30]  E. Moggi The partial lambda calculus , 1988 .

[31]  Albert R. Meyer,et al.  Continuations may be unreasonable , 1988, LISP and Functional Programming.

[32]  Matthias Felleisen,et al.  Models of continuations without continuations , 1991, POPL '91.

[33]  Gordon D. Plotkin,et al.  Call-by-Name, Call-by-Value and the lambda-Calculus , 1975, Theor. Comput. Sci..

[34]  G.D. Plotkin,et al.  LCF Considered as a Programming Language , 1977, Theor. Comput. Sci..