Factoring an Adequacy Proof (Preliminary Report)

This paper contributes to the methodology of using metalogics for reasoning about programming languages. As a concrete example we consider a fragment of ML corresponding to call-by-value PCF and translate it into a metalogic which contains (amongst other types) computation types and a fixpoint type. The main result is a soundness property (*): if the denotations of two programs are provably equal in the metalogic, they have the same operationally observable behaviour. As usual, this follows from a computational adequacy result. In early notes, Plotkin showed how such proofs could be factored into two stages, the first non-trivial and the second (essentially) routine; our contribution is to rework his suggestion within a new framework. We define a metalogic, which incorporates computation and fixpoint types, and specify a modular translation of the ML fragment. Our proof of (*) factors into two parts. First, the term language of the metalogic is equipped with an operational semantics and a (generic) computational adequacy result obtained. Second, a simple syntactic argument establishes a correspondence between the operational behaviour of an object program and of its denotation. The first part is not routine but is proved once and for all. The second is a detailed but essentially trivial calculation that is easily adaptable to other object languages. Such a factored proof is important because it promises to scale up more easily than a monolithic one. We show that it may be adapted to an object language with call-by-name functions and one with a simple exception mechanism.

[1]  Roy L. Crole Computational Adequacy of the FIX-Logic , 1994, Theor. Comput. Sci..

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

[3]  Philip Wadler,et al.  The essence of functional programming , 1992, POPL '92.

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

[5]  Bengt Nordström,et al.  Programming in Martin-Löf's Type Theory , 1990 .

[6]  Jon G. Riecke,et al.  Fully abstract translations between functional languages , 1991, POPL '91.

[7]  Philip Wadler,et al.  Comprehending monads , 1990, LISP and Functional Programming.

[8]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

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

[10]  Andrew M. Pitts,et al.  Computational Adequacy via "Mixed" Inductive Definitions , 1993, MFPS.

[11]  Roy L. Crole,et al.  New Foundations for Fixpoint Computations: FIX-Hyperdoctrines and the FIX-Logic , 1992, Inf. Comput..

[12]  Claire Jones,et al.  Probabilistic non-determinism , 1990 .

[13]  Andrew Donald Gordon,et al.  Functional programming and input/output , 1995 .

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

[15]  Carl A. Gunter Semantics of programming languages: structures and techniques , 1993, Choice Reviews Online.