A tutorial on computational classical logic and the sequent calculus

  title={A tutorial on computational classical logic and the sequent calculus},
  author={P. Downen and Zena M. Ariola},
  journal={Journal of Functional Programming},
We present a model of computation that heavily emphasizes the concept of duality and the interaction between opposites—production interacts with consumption. [] Key Method We begin by reviewing Gentzen’s LK sequent calculus and show how the Curry-Howard isomorphism still applies to give us a different basis for expressing computation.
Dependent Pearl: Normalization by realizability
A normalization argument for the simply-typed lambda-calculus with sums is implemented, and Krivine's classical realizability is studied, which amounts to a proof-relevant presentation of reducibility arguments -- unary logical relations.
A Computational Understanding of Classical (Co)Recursion
This work gives a foundation for corecursion based on computation, analogous to the original computational foundation of recursion, and develops a syntactic equational theory for inductive and coinductive reasoning based on control flow.
Compiling With Classical Connectives
It is shown how the notion of polarity can be extended beyond the value/name dichotomy to include call-by-need by adding a mechanism for sharing which is enough to compile a Haskell-like functional language with user-defined types.
The Duality of Classical Intersection and Union Types
This work looks at the issues surrounding the design of type systems for both intersection and union types through the lens of duality by formalizing them within the symmetric language of the classical sequent calculus, and presents two dual type systems which have all three properties: soundness, completeness, and type safety.
Classical (Co)Recursion: Mechanics
It is shown how the implementation details in an abstract machine strengthens their connection, syntactically deriving corecursion from recursion via logical duality, giving a terminating calculus analogous to the original computational foundation of recursion.
Duality in Action
This work illustrates how constructive logic describes a symmetric language for computation, and surveys several applications of the dualities found therein.
Beyond Polarity: Towards a Multi-Discipline Intermediate Language with Sharing
It is shown how the notion of polarity can be extended beyond the value/name dichotomy to include call-by-need by only adding a mechanism for sharing and the extra polarity shifts to connect them, which is enough to compile a Haskell-like functional language with user-defined types.


The Duality of Computation under Focus
A game of patterns and counterpatterns is defined, leading to a fully focalised finitary syntax for a synthetic presentation of classical logic, that provides a quotient on (focalised) proofs, abstracting out the order of decomposition of negative connectives.
The duality of computation
The μ -calculus is presented, a syntax for λ-calculus + control operators exhibiting symmetries such as program/context and call-by-name/call- by-value, derived from implicational Gentzen's sequent calculus LK.
The logical basis of evaluation order and pattern-matching
This thesis aims to give a fresh take on the proofs-as-programs analogy, and obtains a programming language with built-in support for pattern-matching, in which evaluation order is explicitly reflected at the level of types—and hence can be controlled locally, rather than being an ad hoc, global policy decision.
Logic Programming with Focusing Proofs in Linear Logic
It is shown that the syntactic restriction induced by LinLog is not performed at the cost of any expressive power: a mapping from full linear logic to LinLog, preserving focusing proofs, and analogous to the normalization to clausal form for classical logic, is presented.
Polarised Intermediate Representation of Lambda Calculus with Sums
An untyped representation-an intermediate calculus-for the λ-calculus with sums is proposed, based on the following principles: Computation is described as the reduction of pairs of an expression and a context; the context must be represented inside-out.
Lambda-Mu-Calculus: An Algorithmic Interpretation of Classical Natural Deduction
This paper presents a way of extending the paradigm "proofs as programs" to classical proofs, which can be seen as a simple extension of intuitionistic natural deduction, whose algorithmic interpretation is very well known.
Structures for structural recursion
This study investigates several structures which represent well-founded forms of recursion in programs, and presents a more traditional calculus for representing effect-free functional programs, but at the cost of losing some of the founding dualities.
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.
The Logical Abstract Machine: A Curry-Howard Isomorphism for Machine Code
  • A. Ohori
  • Computer Science
    Fuji International Symposium on Functional and Logic Programming
  • 1999
This paper presents a logical framework for low-level machine code and code generation and establishes a Curry-Howard isomorphism between this proof system and machine code based on the following observation.
Control categories and duality: on the categorical semantics of the lambda-mu calculus
  • P. Selinger
  • Computer Science
    Mathematical Structures in Computer Science
  • 2001
It is proved, via a categorical structure theorem, that the categorical semantics is equivalent to a CPS semantics in the style of Hofmann and Streicher, and that the call-by-name λμ-calculus forms an internal language for the dual co-control categories.