A formulae-as-type notion of control

  title={A formulae-as-type notion of control},
  author={Timothy G. Griffin},
  booktitle={POPL '90},
  • T. Griffin
  • Published in POPL '90 1 December 1989
  • Computer Science
The programming language Scheme contains the control construct call/cc that allows access to the current continuation (the current control context). This, in effect, provides Scheme with first-class labels and jumps. We show that the well-known formulae-as-types correspondence, which relates a constructive proof of a formula α to a program of type α, can be extended to a typed Idealized Scheme. What is surprising about this correspondence is that it relates classical proofs to typed programs… 
A Curry-Howard foundation for functional computation with control
The 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.
Denotations for Classical Proofs - Preliminary Results
A typed lambda-calculus (λ-LK→) is introduced whose inhabited types are exactly the implicative tautologies of classical logic and whose type assignment system is a classical sequent calculus.
A call-by-value lambda-calculus with lists and control
This paper defines a simply typed call-by-value lambda calculus with the control operators catch and throw, a data type of lists, and an operator for primitive recursion (a la Goedel's T) and proves that it satisfies subject reduction, progress, confluence for untyped terms, and strong normalization for well-typed terms.
Programming and Proving with Classical Types
This work defines an extended call-by-value \(\lambda \mu \)-calculus with a type system in correspondence with full classical logic, and builds a prototype LCF-style interactive theorem prover for classical first-order logic.
Strong Normalization in a Non-Deterministic Typed Lambda-Calculus
This paper considers a weak version of the implicative fragment of λ-LK, and defines for it a relation of reduction that models, at the level of the terms, the appropriate proof-theoretic notion of proof reduction.
Explicitly Typed lambda µ-Calculus for Polymorphism an Call-by-Value
An explicitly typed λµ-calculus of call-by-value as a short-hand for the 2nd order Church-style, and it is shown that the CPS-translation is sound with respect to λ2 (2nd order λ-Calculus).
Linear types, protocols, and processes in classical F°
Soundness for intuitionistic and classical F◦ is proved both in the standard operational sense of preservation and progress and for an augmented semantics that shows more directly that the expected properties of linearity are preserved.
Abstract Machines, Control, and Sequents
We describe simple call-by-value and call-by-name abstract machines, expressed with the help of Felleisen's evaluation contexts, for a toy functional language. Then we add a simple control operator
A Classical Sequent Calculus with Dependent Types
This work designs a minimal language with a value restriction and a type system that includes a list of explicit dependencies and maintains type safety, and relates this language to a similar system by Lepigrei¾?[19], and presents a methodology to transfer properties from this system to their own.
Compositional semantics for composable continuations: from abortive to delimited control
It is demonstrated that the call-by-value theory of the λ μ-calculus contains a latent theory of delimited control, and that a known variant of λμ which unshackles the syntax yields a calculus of composable continuations from the existing constructs and rules for classical control.


Declarative Continuations: an Investigation of Duality in Programming Language Semantics
A symmetric extension of the typed λ-calculus is introduced, where values and continuations play dual roles, permitting mirror-image syntax for dual categorical concepts like products and coproducts.
Lambda calculus schemata
  • M. Fischer
  • Computer Science
    Proving Assertions About Programs
  • 1972
A lambda calculus schema is an expression of the lambda calculus augmented by uninterpreted constant and function symbols and thus is an abstraction of programming languages such as LISP which permit
Continuation Semantics in Typed Lambda-Calculi (Summary)
This paper reports preliminary work on the semantics of the continuation transform and shows that the mechanism of inclusive predicates can be replaced by retractions in the case of the typed lambda-calculus.
Declarative Continuations and Categorical Duality
It is shown that continuations can not only be forced into a categorical setting (almost everything can), but that they in strikingly well, modeling the central categorical concept of duality, a precise formulation of \oppositeness.
Call-by-Name, Call-by-Value and the lambda-Calculus
Introduction to combinators and λ-calculus
These notes form a simple introduction to the two topics, suitable for a reader who has no previous knowledge of combinatory logic, but has taken an undergraduate course in predicate calculus and recursive functions.
The next 700 programming languages
A family of unimplemented computing languages is described that is intended to span differences of application area by a unified framework. This framework dictates the rules about the uses of
Revised3 report on the algorithmic language scheme
The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis
Proofs and types
Sense, denotation and semantics natural deduction the Curry-Howard isomorphism the normalisation theorem Godel's system T coherence spaces denotational semantics of T sums in natural deduction system