Tools

"... The main concern of this paper is the design of a noetherian and confluent normalization for LK 2 (that is, classical second order predicate logic presented as a sequent calculus). The method we present is powerful: since it allows us to recover as fragments formalisms as seemingly different a ..."

The main concern of this paper is the design of a noetherian and confluent normalization for LK 2 (that is, classical second order predicate logic presented as a sequent calculus). The method we present is powerful: since it allows us to recover as fragments formalisms as seemingly different as Girard&apos;s LC and Parigot&apos;s , FD ([9, 11, 27, 31]), delineates other viable systems as well, and gives means to extend the Krivine/Leivant paradigm of `programming-with-proofs&apos; ([22, 23]) to classical logic; it is painless: since we reduce strong normalization and confluence to the same properties for linear logic (for non-additive proof nets, to be precise) using appropriate embeddings (so-called decorations); it is unifying: it organizes known solutions in a simple pattern that makes apparent the how and why of their making. A comparison of our method to that of embedding LK into LJ (intuitionistic sequent calculus) brings to the fore the latter&apos;s defects for these `deconstructi...

"... 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, com ..."

We introduce the type theory ¯ v , a call-by-value variant of Parigot&apos;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 ¯pcf v is obtained from ¯ v by augmenting it by basic arithmetic, conditionals and fixpoints. We study the behavioural properties of ¯pcf v 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) &quot;jump&quot; operator, which may be regarded as a unif...

"... Reasoning about program equivalence is one of the oldest problems in semantics. In recent years, useful techniques have been developed, based on bisimulations and logical relations, for reasoning about equivalence in the setting of increasingly realistic languages—languages nearly as complex as ML o ..."

Reasoning about program equivalence is one of the oldest problems in semantics. In recent years, useful techniques have been developed, based on bisimulations and logical relations, for reasoning about equivalence in the setting of increasingly realistic languages—languages nearly as complex as ML or Haskell. Much of the recent work in this direction has considered the interesting representation independence principles enabled by the use of local state, but it is also important to understand the principles that powerful features like higher-order state and control effects disable. This latter topic has been broached extensively within the framework of game semantics, resulting in what Abramsky dubbed the “semantic cube”: fully abstract game-semantic characterizations of various axes in the design space of ML-like languages. But when it comes to reasoning about many actual examples, game semantics does not yet supply a useful technique for proving equivalences. In this paper, we marry the aspirations of the semantic cube to the powerful proof method of step-indexed Kripke logical relations. Building on recent work of Ahmed, Dreyer, and Rossberg, we define the first fully abstract logical relation for an ML-like language with recursive types, abstract types, general references and call/cc. We then show how, under orthogonal restrictions to the expressive power of our language—namely, the restriction to first-order state and/or the removal of call/cc—we can enhance the proving power of our possible-worlds model in correspondingly orthogonal ways, and we demonstrate this proving power on a range of interesting examples. Central to our story is the use of state transition systems to model the way in which properties of local state evolve over time.

"... In this paper, we develop a system of typed lambda-calculus for the Zermelo-Fraenkel set theory, in the framework of classical logic. The first, and the simplest system of typed lambda-calculus is the system of simple types, which uses the intuitionistic propositional calculus, with the only connect ..."

In this paper, we develop a system of typed lambda-calculus for the Zermelo-Fraenkel set theory, in the framework of classical logic. The first, and the simplest system of typed lambda-calculus is the system of simple types, which uses the intuitionistic propositional calculus, with the only connective #. It is very important, because the well known Curry-Howard correspondence between proofs and programs was originally discovered with it, and because it enjoys the normalization property : every typed term is strongly normalizable. It was extended to second order intuitionistic logic, in 1970, by J.-Y. Girard[4], under the name of system F, still with the normalization property. More recently, in 1990, the Curry-Howard correspondence was extended to classical logic, following Felleisen and Griffin [6] who discovered that the law of Peirce corresponds to control instructions in functional programming

"... Classical logic is one of the best examples of a mathematical theory that is truly useful to computer science. Hardware and software engineers apply the theory routinely. Yet from a foundational standpoint, there are aspects of classical logic that are problematic. Unlike intuitionistic logic, class ..."

Classical logic is one of the best examples of a mathematical theory that is truly useful to computer science. Hardware and software engineers apply the theory routinely. Yet from a foundational standpoint, there are aspects of classical logic that are problematic. Unlike intuitionistic logic, classical logic is often held to be non-constructive, and so, is said to admit no proof semantics. To draw an analogy in the proofsas -programs paradigm, it is as if we understand well the theory of manipulation between equivalent specifications (which we do), but have comparatively little foundational insight of the process of transforming one program to another that implements the same specification. This extended abstract outlines a semantic theory of classical proofs based on a variant of Parigot&apos;s λµ-calculus [24], but presented here as a type theory. After reviewing the conceptual problems in the area and the potential benefits of such a theory, we sketch the key steps of our approach in ...

"... We present a formulae-as-types interpretation of Subtractive Logic (i.e. bi-intuitionistic logic). This presentation is two-fold: we first define a very natural restriction of the λµ-calculus which is closed under reduction and whose type system is a constructive restriction of the Classical Natural ..."

We present a formulae-as-types interpretation of Subtractive Logic (i.e. bi-intuitionistic logic). This presentation is two-fold: we first define a very natural restriction of the λµ-calculus which is closed under reduction and whose type system is a constructive restriction of the Classical Natural Deduction. Then we extend this deduction system conservatively to Subtractive Logic. From a computational standpoint, the resulting calculus provides a type system for first-class coroutines (a restricted form of first-class continuations). Keywords: Curry-Howard isomorphism, Subtractive Logic, control operators, coroutines. 1

"... We define logical relations between the denotational semantics of a simply typed functional language with recursion and the operational behaviour of low-level programs in a variant SECD machine. The relations, which are defined using biorthogonality and stepindexing, capture what it means for a piec ..."

We define logical relations between the denotational semantics of a simply typed functional language with recursion and the operational behaviour of low-level programs in a variant SECD machine. The relations, which are defined using biorthogonality and stepindexing, capture what it means for a piece of low-level code to implement a mathematical, domain-theoretic function and are used to prove correctness of a simple compiler. The results have been formalized in the Coq proof assistant.

"... X is an untyped continuation-style formal language with a typed subset which provides a Curry-Howard isomorphism for a sequent calculus for implicative classical logic. X can also be viewed as a language for describing nets by composition of basic components connected by wires. These features make X ..."

X is an untyped continuation-style formal language with a typed subset which provides a Curry-Howard isomorphism for a sequent calculus for implicative classical logic. X can also be viewed as a language for describing nets by composition of basic components connected by wires. These features make X an expressive platform on which algebraic objects and many different (applicative) programming paradigms can be mapped. In this paper we will present the syntax and reduction rules for X and in order to demonstrate the expressive power of X, we will show how elaborate calculi can be embedded, like the λ-calculus, Bloo and Rose’s calculus of explicit substitutions λx, Parigot’s λµ and Curien and Herbelin’s λµ ˜µ.

"... The notion of storage operator introduced in [5, 6] appears to be an important tool in the study of data types in second order λ-calculus. These operators are λ-terms which simulate call-by-value in the call-by-name strategy, and they can be used in order to modelize assignment instructions. The mai ..."

The notion of storage operator introduced in [5, 6] appears to be an important tool in the study of data types in second order λ-calculus. These operators are λ-terms which simulate call-by-value in the call-by-name strategy, and they can be used in order to modelize assignment instructions. The main result about storage operators is that there is a very simple second order type for them, using Gödel&apos;s &quot;not-not translation&quot; of classical into intuitionistic logic. We give here a new and simpler proof of a strengthened version of this theorem, which contains all previous results in intuitionistic and in classical logic ([6, 7]), and gives rise to new &quot;storage theorems&quot;. Moreover, this result has a simple and intuitive meaning, in terms of realizability.