A Curry-Howard foundation for functional computation with control

We introduce the type theory ¿µv, a call-by-value variant of Parigot's ¿µ-calculus, as a Curry-Howard representation theory of classical propositional proofs. The associated rewrite system is Church-Rosser and strongly normalizing, and definitional equality of the type theory is consistent, compatible with cut, congruent and decidable. The attendant call-by-value programming language µPCFv is obtained from ¿µv by augmenting it by basic arithmetic, conditionals and fixpoints. We study the behavioural properties of µPCFv and show that, though simple, it is a very general language for functional computation with control: it can express all the main control constructs such as exceptions and first-class continuations. Proof-theoretically the dual ¿µv-constructs of naming and µ-abstraction witness the introduction and elimination rules of absurdity respectively. Computationally they give succinct expression to a kind of generic (forward) "jump" operator, which may be regarded as a unifying control construct for functional computation. Our goal is that ¿µv and µPCFv respectively should be to functional computation with first-class access to the flow of control what ¿-calculus and PCF respectively are to pure functional programming: ¿µv gives the logical basis via the Curry-Howard correspondence, and µPCFv is a prototypical language albeit in purified form.

[1]  Olivier Danvy,et al.  Representing Control: a Study of the CPS Transformation , 1992, Mathematical Structures in Computer Science.

[2]  Philippe de Groote,et al.  A CPS-Translation of the Lambda-µ-Calculus , 1994, CAAP.

[3]  Thierry Coquand,et al.  A semantics of evidence for classical arithmetic , 1995, Journal of Symbolic Logic.

[4]  Andrew M. Pitts,et al.  Observable Properties of Higher Order Functions that Dynamically Create Local Names, or What's new? , 1993, MFCS.

[5]  Matthias Felleisen,et al.  The theory and practice of first-class prompts , 1988, POPL '88.

[6]  C.-H. Luke Ong,et al.  A semantic view of classical proofs: type-theoretic, categorical, and denotational characterizations , 1996, Proceedings 11th Annual IEEE Symposium on Logic in Computer Science.

[7]  Christopher T. Haynes,et al.  Logic Continuations , 1986, J. Log. Program..

[8]  Mitchell Wand,et al.  Obtaining Coroutines with Continuations , 1986, Comput. Lang..

[9]  Robert Harper,et al.  Typing first-class continuations in ML , 1991, POPL '91.

[10]  Martin Hofmann,et al.  Sound and complete axiomatisations of call-by-value control operators , 1995, Mathematical Structures in Computer Science.

[11]  Robin Milner,et al.  Definition of standard ML , 1990 .

[12]  Matthias Felleisen,et al.  A Syntactic Theory of Sequential Control , 1987, Theor. Comput. Sci..

[13]  Vincent Danos,et al.  A new deconstructive logic: linear logic , 1997, Journal of Symbolic Logic.

[14]  Robin Milner,et al.  Edinburgh LCF , 1979, Lecture Notes in Computer Science.

[15]  Michel Parigot,et al.  Strong normalization for second order classical natural deduction , 1993, [1993] Proceedings Eighth Annual IEEE Symposium on Logic in Computer Science.

[16]  Dana S. Scott,et al.  A Type-Theoretical Alternative to ISWIM, CUCH, OWHY , 1993, Theor. Comput. Sci..

[17]  Robert Hieb,et al.  The Revised Report on the Syntactic Theories of Sequential Control and State , 1992, Theor. Comput. Sci..

[18]  Jean-Louis Krivine,et al.  Classical Logic, Storage Operators and Second-Order lambda-Calculus , 1994, Ann. Pure Appl. Log..

[19]  Makoto Tatsuta,et al.  Intuitionistic and Classical Natural Deduction Systems with the Catch and the Throw Rules , 1995 .

[20]  Carolyn L. Talcott Rum. An Intensional Theory of Function and Control Abstractions , 1986, Foundations of Logic and Functional Programming.

[21]  Harold T. Hodes,et al.  The | lambda-Calculus. , 1988 .

[22]  Michel Parigot,et al.  Classical Proofs as Programs , 1993, Kurt Gödel Colloquium.

[23]  Robin Milner,et al.  A Calculus of Mobile Processes, II , 1992, Inf. Comput..

[24]  Timothy G. Griffin,et al.  A formulae-as-type notion of control , 1989, POPL '90.

[25]  Mitchell Wand,et al.  Continuation-Based Multiprocessing , 1980, High. Order Symb. Comput..

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

[27]  John H. Reppy,et al.  Concurrent programming in ML , 1999 .

[28]  W. V. Quine,et al.  Natural deduction , 2021, An Introduction to Proof Theory.

[29]  Jean-Yves Girard,et al.  A new constructive logic: classic logic , 1991, Mathematical Structures in Computer Science.

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

[31]  Didier Rémy,et al.  A generalization of exceptions and control in ML-like languages , 1995, FPCA '95.

[32]  Gavin Bierman Towards a Classical Linear λ-calculus (Preliminary Report) , 1996 .

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

[34]  Michel Parigot,et al.  Lambda-Mu-Calculus: An Algorithmic Interpretation of Classical Natural Deduction , 1992, LPAR.

[35]  Chetan R. Murthy An evaluation semantics for classical proofs , 1991, [1991] Proceedings Sixth Annual IEEE Symposium on Logic in Computer Science.

[36]  Robert Harper,et al.  Typing first-class continuations in ML , 1991, POPL '91.

[37]  Ulrich Berger,et al.  Program Extraction from Classical Proofs , 1994, LCC.

[38]  Masahiko Sato,et al.  Intuitionistic and Classical Natural Deduction Systems with the Catch and the Throw Rules , 1997, Theor. Comput. Sci..

[39]  Alexander Aiken,et al.  Program transformation in the presence of errors , 1989, POPL '90.

[40]  Stefano Berardi,et al.  Extracting Constructive Content from Classical Logic via Control-like Reductions , 1993, TLCA.