Non deterministic classical logic: the λµ ++ -calculus

Similar documents
A General Type for Storage Operators

Classical Combinatory Logic

PROPOSITIONAL MIXED LOGIC: ITS SYNTAX AND SEMANTICS

Karim NOUR 1 LAMA - Equipe de Logique, Université de Savoie Le Bourget du Lac cedex 2

On Storage Operators

Strong normalization of a symmetric lambda calculus for second order classical logic

A syntactical proof of the operational equivalence of two λ-terms

CS 4110 Programming Languages & Logics. Lecture 16 Programming in the λ-calculus

STRONG NORMALIZATION OF THE SECOND-ORDER SYMMETRIC LAMBDA MU CALCULUS

Beyond First-Order Logic

The Inf function in the system F

Strong normalization of the second-order symmetric -calculus

Realizing the axiom of dependent choice

The differential lambda-mu-calculus

Programming Languages

Non-Idempotent Typing Operators, beyond the λ-calculus

First-Order Logic. 1 Syntax. Domain of Discourse. FO Vocabulary. Terms

Type Systems. Lecture 2 Oct. 27th, 2004 Sebastian Maneth.

Lambda-Calculus (I) 2nd Asian-Pacific Summer School on Formal Methods Tsinghua University, August 23, 2010

Extraction from classical proofs using game models

Halting and Equivalence of Program Schemes in Models of Arbitrary Theories

Krivine s Intuitionistic Proof of Classical Completeness (for countable languages)

λ Slide 1 Content Exercises from last time λ-calculus COMP 4161 NICTA Advanced Course Advanced Topics in Software Verification

An introduction to classical realizability

Categories, Proofs and Programs

Review. Principles of Programming Languages. Equality. The Diamond Property. The Church-Rosser Theorem. Corollaries. CSE 230: Winter 2007

A call-by-name lambda-calculus machine

Formal Methods Lecture 6. (B. Pierce's slides for the book Types and Programming Languages )

A General Technique for Analyzing Termination in Symmetric Proof Calculi

CMSC 336: Type Systems for Programming Languages Lecture 10: Polymorphism Acar & Ahmed 19 February 2008

Parameterizations and Fixed-Point Operators on Control Categories

Models of computation

Type Systems Winter Semester 2006

Minimal logic for computable functionals

Origin in Mathematical Logic

STRONG NORMALIZATION OF λ Sym

03 Review of First-Order Logic

Strong normalization of lambda-sym-prop and lambda bare-mu-mu tilde*-calculi

Type Systems Winter Semester 2006

HORSes: format, termination and confluence

Getting results from programs extracted from classical proofs.

On Modal Logics of Partial Recursive Functions

Lecture Notes on Combinatory Modal Logic

hal , version 1-21 Oct 2009

Orthogonality and Algebraic Lambda-Calculus

Consequence Relations and Natural Deduction

An Overview of Residuated Kleene Algebras and Lattices Peter Jipsen Chapman University, California. 2. Background: Semirings and Kleene algebras

The Curry-Howard Isomorphism

Lecture 1: The arithmetic hierarchy

Lecture 2: Syntax. January 24, 2018

Formal Methods Lecture 6. (B. Pierce's slides for the book Types and Programming Languages )

Theorem Proving in the Propositional Algebra. Geoff Phillips **************

Learning via Finitely Many Queries

CS 6110 S16 Lecture 33 Testing Equirecursive Equality 27 April 2016

Type Systems. Today. 1. What is the Lambda Calculus. 1. What is the Lambda Calculus. Lecture 2 Oct. 27th, 2004 Sebastian Maneth

Undecidable Problems. Z. Sawa (TU Ostrava) Introd. to Theoretical Computer Science May 12, / 65

Equivalence of Algebraic λ -calculi extended abstract

Type Theory and Constructive Mathematics. Type Theory and Constructive Mathematics Thierry Coquand. University of Gothenburg

Herbrand Theorem, Equality, and Compactness

Forcing-based cut-elimination for Gentzen-style intuitionistic sequent calculus

Introduction to Metalogic

Intersection and Singleton Type Assignment Characterizing Finite Böhm-Trees

Propositional Logic Language

Syntax. Notation Throughout, and when not otherwise said, we assume a vocabulary V = C F P.

Informal Statement Calculus

Halting and Equivalence of Schemes over Recursive Theories

The Girard-Reynolds Isomorphism. Philip Wadler, University of Edinburgh

Henk Barendregt and Freek Wiedijk assisted by Andrew Polonsky. Radboud University Nijmegen. March 5, 2012

Introduction to Turing Machines

α-recursion Theory and Ordinal Computability

SHARING IN THE WEAK LAMBDA-CALCULUS REVISITED

Investigation of Prawitz s completeness conjecture in phase semantic framework

Completeness Theorems and λ-calculus

Truth values algebras and proof normalization

Uniform Schemata for Proof Rules

Propositional Logic: Syntax

CSE 311: Foundations of Computing I Autumn 2014 Practice Final: Section X. Closed book, closed notes, no cell phones, no calculators.

Command = Value Context. Hans-Dieter Hiep. 15th of June, /17

1 The decision problem for First order logic

THE AUSTRALIAN NATIONAL UNIVERSITY Second Semester COMP2600 (Formal Methods for Software Engineering)

Relations to first order logic

Dana S. Scott. University Professor, Emeritus Carnegie Mellon University. Visiting Scholar in Mathematics University of California, Berkeley

Lecture 2: Axiomatic semantics

Completeness and Partial Soundness Results for Intersection & Union Typing for λµ µ

An Alternative Direct Simulation of Minsky Machines into Classical Bunched Logics via Group Semantics (full version)

The duality of computation

Classical realizability and arithmetical formulæ

Introduction to Turing Machines. Reading: Chapters 8 & 9

Constructive Forcing, CPS translations and Witness Extraction in Interactive Realizability

07 Equational Logic and Algebraic Reasoning

Silvia Ghilezan and Jelena Ivetić

Systematic Construction of Natural Deduction Systems for Many-valued Logics: Extended Report

Decidability: Church-Turing Thesis

Jacques Fleuriot. Automated Reasoning Rewrite Rules

Definability in the Enumeration Degrees

A simple proof that super-consistency implies cut elimination

λ-calculus: Enumeration Operators and Types

On the Complexity of the Reflected Logic of Proofs

A strongly rigid binary relation

CHAPTER 2 INTRODUCTION TO CLASSICAL PROPOSITIONAL LOGIC

Transcription:

Paru dans : Mathematical Logic Quarterly, 48, pp. 357-366, 2002 Non deterministic classical logic: the λµ ++ -calculus Karim NOUR LAMA - Equipe de Logique, Université de Savoie 73376 Le Bourget du Lac e-mail nour@univ-savoie.fr Abstract In this paper, we present an extension of λµ-calculus called λµ ++ - calculus which has the following properties: subject reduction, strong normalization, unicity of the representation of data and thus confluence only on data types. This calculus allows also to program the parallel-or. 1 Introduction There are now many type systems which are based on classical logic ; among the best known are the system LC of J.-Y. Girard [2], the λµ-calulus of M. Parigot [6], the λ c -calculus of J.-L. Krivine [3] and the λ Sym -calculus of F. Barbanera and S. Berardi [1]. We consider here the λµ-calculus because it has very good properties: confluence, subject reduction and strong normalization. On the other hand, we lose in this system the unicity of the representation of data. Indeed, there are normal closed terms, different from Church integers, typable by integer type (they are called classical integers). The solutions which were proposed to solve this problem consisted in giving algorithms to find the value of classical integers ([5],[7]). Moreover the presentation of typed λµ-calculus is not very natural. For example, we do not find a closed λµ-term of type A A. In this paper, we present an extension of λµ-calculus called λµ ++ -calculus which codes exactly the second order classical natural deduction. The system we propose contains a non deterministic simplification rule which allows a program to be reduced to one of its subroutines. This rule can be seen as a complicated garbage collector. This calculus which we obtain has the following properties: subject reduction, strong normalization, unicity of the representation of data and thus confluence only on data types. This calculus allows also to program the parallel-or. 1

Acknowledgement. We wish to thank C. Raffalli for helpful discussions. We do not forget the numerous corrections and suggestions by N. Bernard. 2 λµ-calculus 2.1 Pure λµ-calculus λµ-calculus has two distinct alphabets of variables: the set of λ-variables x, y, z,..., and the set of µ-variables α, β, γ,... Terms (also called λµ-terms) are defined by the following grammar: t := x λx t (t t) µα [β]t The reduction relation of λµ-calculus is induced by fives different notions of reduction : The computation rules (λx u v) u[x := v] (c λ ) (µα u v) µα u[α := v] (c µ ) where u[α := v] is obtained from u by replacing inductively each subterm of the form [α]w by [α](w v) The simplification rules [α]µβ u u[β := α] (s 1 ) µα [α]u u ( ) (s 2 ) µα u λx µα u[α := x] ( ) (s 3 ) (*) if α has no free occurence in u (**) if u contains a subterm of the form [α]λy w For any λµ-terms t, t, we shall write: t n µ t if t is obtained from t by applying n times these rules. t µ t if there is n IN such that t n µ t. We have the following result ([6],[9]): Theorem 2.1 In λµ-calculus, the reduction µ is confluent. 2

2.2 Typed λµ-calculus Proofs are written in a second order natural deduction system with several conclusions, presented with sequents. The connectives we use are, and. We denote by A 1, A 2,..., A n A the formula A 1 (A 2 (...(A n A)...)). We do not suppose that the language has a special constant for equality. Instead, we define the formula a = b (where a, b are terms) to be X (X(a) X(b)) where X is a unary predicate variable. Let E be a set of equations. We denote by a E b the equivalence binary relation such that : if a = b is an equation of E, then a[x 1 := t 1,..., x n := t n ] E b[x 1 := t 1,..., x n := t n ]. Let t be a λµ-term, A a type, Γ = x 1 : A 1,..., x n : A n, = α 1 : B 1,..., α m : B m are two contexts and E a set of equations. The notion t is of type A in Γ and with respect to E (denoted by Γ t : A, ) is defined by the following rules: (1) Γ x i : A i, (1 i n) (2) If Γ, x : A t : B,, then Γ λx t : A B, (3) If Γ 1 u : A B, 1, and Γ 2 v : A, 2, then Γ 1, Γ 2 (u v) : B, 1, 2 (4) If Γ t : A,, and x not free in Γ and, then Γ t : x A, (5) If Γ t : x A,, then, for every term a, Γ t : A[x := a], (6) If Γ t : A,, and X is not free in Γ and, then Γ t : X A, (7) If Γ t : X A,, then, for every formula G, Γ t : A[X := G], (8) If Γ t : A[x := a],, and a E b, then Γ t : A[x := b], (9) If Γ t : A, β : B,, then : Γ µβ [α]t : B, α : A, if α β Γ µα [α]t : B, if α = β The typed λµ-calculus has the following properties ([6],[8]): Theorem 2.2 1) Subject reduction: Type is preserved during reduction. 2) Strong normalization: Typable λµ-terms are strongly normalizable. 2.3 Representation of data types Each data type generated by free algebras can be defined by a second order formula. The type of boolean is the formula Bool[x] = X {X(1), X(0) X(x)} where 0 and 1 are constants. The type of integers is the formula Ent[x] = X {X(0), y (X(y) X(sy)) X(x)} where 0 is a constant symbol for zero, and s is a unary function symbol for successor. In the rest of this paper, we suppose that every set of equations E satisfies the following properties: 0 E 1 and if n m, then s n (0) E s m (0) 3

We denote by id = λx x, 1 = λxλy x, 0 = λxλy y and, for every n IN, n = λxλy (y n x) (where (y 0 x) = x and (y k+1 x) = (y (y k x))). It is easy to see that: Lemma 2.1 1) 1 : Bool[1] and 0 : Bool[0]. 2) For every n IN, n : Ent[s n (0)]. The converse of (1) lemma 2.1 is true. Lemma 2.2 If b {0, 1} and t : Bool[b], then t µ b. But the converse of (2) lemma 2.1 is not true. Indeed, if we take the closed normal term θ = λxλf µα [α](f µβ [α](f x)), we have θ : Ent[s(0)]. 3 λµ ++ -calculus 3.1 Pure λµ ++ -calculus The set of λµ ++ -terms is given by the following grammar: t := x α λx t µα t (t t) where x ranges over a set V λ of λ-variables and α ranges over a set V µ of µ- variables disjoint from V λ. The reduction relation of λµ ++ -calculus is induced by eight notions of reduction: The computation rules The local simplification rules The global simplification rules (λx u v) u[x := v] (C λ ) (µα u v) µβu [α := λy (β (y v))] (C µ ) ((α u) v) (α u) (S 1 ) µαµβ u µα u[β := id] (S 2 ) (α (β u)) (β u) (S 3 ) (β µα u) u[α := λy (β y)] (S 4 ) µα u λz µβ u[α := λy (β (y z))] ( ) (S 5 ) µα u[y := (α v)] v ( ) (S 6 ) (*) if u contains a subterm of the form (α λx v) 4

(**) if y is free in u and α is not free in v For any λµ ++ -terms t, t, we shall write t n µ ++ t if t is obtained from t by applying n times these rules. t µ ++ t if there is n IN such that t n µ ++ t. Let us claim first that λµ ++ -calculus is not confluent. Indeed, if we take u = λx µα ((x (α 0)) (α 1)), we have (using rule S 6 ) u µ ++ λx 0 and u µ ++ λx 1. The non confluence of λµ ++ -calculus does not come only from rule S 6. Indeed, if we take v = µα ((α µβ β)0), we have v µ ++ µαλy (α y) and v µ ++ 0. The rules which are really new compared to λµ-calculus are S 1 and S 6. The rule S 1 means that the µ-variables are applied to more than one term. We will see that typing will ensure this condition. The rule S 6 means that if µα t has a subterm (α v) where v does not contain free variables which are bounded in µα t, then we can return v as result. This results in the possibility of making a parallel computation. It is clear that this rule is very difficult to implement. But for the examples and the properties we will present, the condition not active binders between µα and α will be enough. Let us explain how we can implement the weak version of this rule. We suppose that the syntax of the terms has two λ-abstractions: λ and λ and two µ-abstractions: µ and µ. We write λ x u and µ α u only if the variables x and α do not appear in u. We suppose also that for each µ-variable α we have a special symbol ξ α. We can thus simulate the weak version of rule S 6 by the following non deterministic rules: µα u (ξ α u) (ξ α λ x u) (ξ α u) (ξ α µ β u) (ξ α u) ((ξ α (α v)) v ((ξ α (u v)) (ξ α u) ( ) ((ξ α (u v)) (ξ α v) ( ) (*) u α A result of a computation is a term which does not contain symbols ξ α. We will see that with the exception of rule S 6 the λµ ++ -calculus is not different from λµ-calculus. We will establish codings which make it possible to translate each one in to the other. 3.2 Relation between λµ- calculus and λµ ++ - calculus We add to λµ-calculus the equivalent version of rule S 6 : 5

µα [β]u[y := [α]v] v if y is free in u and α is not free in v. We denote by λµ + -calculus this new calculus. For any λµ-terms t, t, we shall write : t n µ + t if t is obtained from t by applying n times these rules. t µ + t if there is n IN such that t n µ + t. For each λµ-term t we define a λµ ++ -term t in the following way: We have the following result: x = x {λx t} = λx t {(u v)} = (u v ) {µα [β]t} = µα (β t ) Theorem 3.1 Let u, v be λµ-terms. If u n µ v, then there is m n such that + u m µ v. ++ Proof Easy. The converse of this coding is much more difficult to establish because it is necessary to include the reductions of administrative redexes. We first modify slightly the syntax of the λµ ++ -calculus. We suppose that we have a particular µ-constant δ (i.e. µδ u is not a term) and two other λ-abstractions: λ 1 and λ 2. The only terms build with these abstractions are: λ 1 xu where u contains only one occurence of x and λ 2 xx. For the rule C µ, λ, λ 1 and λ 2 behave in the same way. We write rules C µ, S 2, S 4 and S 5 in the following way: (µα u v) µβ u[α := λ 1 y (β (y v))] (C µ ) µαµβ u µα u[β := λ 2 x x] (S 2 ) (β µα u) u[α := λ 1 y (β y)] (S 4 ) µα u λzµβ u[α := λ 1 y (β (y z))] (S 5 ) It is clear that the new λµ ++ -calculus is stable by reductions. For each λµ ++ -term t we define a λµ-term t in the following way : x = x α = λxµγ [α]x ( ) {λx t} = λx t 6

(*) γ α (**) γ is not free in v (***) u λ i x w i {1, 2} We have the following result: {λ 1 x t} = λx t {λ 2 x x} = λxµγ [δ]x {µα t} = µα [δ]t {(λ 1 x u v)} = u [x := v ] {(λ 2 x x v)} = µγ [δ]v ( ) {(u v)} = (u v ) ( ) Theorem 3.2 Let u, v be λµ ++ -terms. If u n µ ++ a λµ-term w such that u m µ w and v + µ + w. v, then there is m n and Proof We use the confluence of λµ-calculus and the following lemma: Lemma 3.1 Let u, v be λµ ++ -terms. 1) {u[x := v]} µ + u [x := v ]. 2) {u[α := λ 1 y (β (y v))]} µ + u [α := v ]. We deduce the following corollary: Corollary 3.1 Let u be a λµ ++ -term. If u is strongly normalizable then u is also strongly normalizable. 3.3 Typed λµ ++ -calculus Types are formulas of second order predicate logic constructed from, and. For every formula A, we denote by A the formula A and by x A the formula x A. Proofs are written in the ordinary classical natural deduction system. Let t be a λµ ++ -term, A a type, Γ = x 1 : A 1,..., x n : A n, α 1 : B 1,..., α m : B m a context, and E a set of equations. We define the notion t is of type A in Γ with respect to E (denoted by Γ t : A) by means of the following rules (1) Γ x i : A i (1 i n) and Γ α j : B j (1 j m). (2) If Γ, x : A u : B, then Γ λx u : A B. (3) If Γ 1 u : A B, and Γ 2 v : A, then Γ 1, Γ 2 (u v) : B. (4) If Γ u : A, and x is not free in Γ, then Γ u : x A. (5) If Γ u : x A, then, for every term a, Γ u : A[x := a]. (6) If Γ u : A, and X is not free in Γ, then Γ u : X A. 7

(7) If Γ u : X A, then, for every formulas G, Γ u : A[X := G]. (8) If Γ u : A[x := a], and a E b, then Γ u : A[x := b]. (9) If Γ, α : B u :, then Γ µα u : B. Consequently, we can give more explanations for rule S 6. It means that in a proof of a formula we cannot have a subproof of the same formula. The terms µα u[y := (α v)] and v has the same type, then the rule S 6 authorizes a program to be reduced to one of its subroutines which has the same behaviour. If = α 1 : B 1,..., α m : B m, then we denode by = α 1 : B 1,..., α m : B m. If Γ = x 1 : A 1,..., x n : A n, α 1 : B 1,..., α m : B m, then we denote by Γ λ = x 1 : A 1,..., x n : A n and Γ µ = α 1 : B 1,..., α m : B m. We have the following results: Theorem 3.3 1) If Γ t : A,, then Γ, t : A. 2) If Γ t : A, then Γ λ t : A, Γ µ, δ : Proof By induction on typing. 4 Theoretical properties of λµ ++ -calculus Theorem 4.1 (Subject reduction) If Γ u : A and u v, then Γ v : A. Proof It suffices to verify that the reduction rules are well typed. Theorem 4.2 (Strong normalization) If Γ u : A, then u is strongly normalizable. Proof According to the theorem 3.3 and the corollary 3.1, it is enough to show that the λµ + -calculus is strongly normalizable. It is a direct consequence of the theorem 2.2 and the following lemma: Lemma 4.1 Let u, v, w be λµ-terms. If u v n µ w then there is m n and a λµ-term v such that u m µ v w. Let t be a λµ ++ -term and V t a set of normal λµ ++ -terms. We write t µ ++ iff: for all u V t, t µ ++ u. If t µ ++ u and u is normal, then u V t. Intuitively V t is the set of values of t. Theorem 4.3 (Unicity of representation of integers) If n IN and t : Ent[s n (0)], then t µ ++ {n}. V t 8

Proof Let t be a closed normal term such that t : Ent[s n (0)]. Since we cannot use rules S 4 and S 5, we prove that t = λxλf u and x : X(0), f : y (X(y) X(s(y))) u : X(s n (0)). The term u does not contain µ-variables. Indeed, if not, we consider a subterm (α v) of u such that v does not contain µ-variables. It is easy to see that v is of the form (f m x), thus u is not normal (we can apply rule S 6 ). Therefore u = (f n x) and t = n. 5 Some programs in λµ ++ -calculus 5.1 Classical programs Let I = λxµα x, C = λxµα (x α) and P = λxµα (α (x α)). It is easy to check that: Theorem 5.1 1) I : X { X}, and, for every t, t 1,..., t n, (I t t 1...t n ) µ ++ µα t. 2) C : X { X X}, and, for every t, t 1,..., t n, (C t t 1...t n ) µ ++ µα (t λy (α (y t 1...t n ))). 3) P : X {( X X) X}, and, for every t, t 1,..., t n, (P t t 1...t n ) µ ++ µα (α (t λy (α (y t 1...t n ))) t 1...t n ). Let us note that the λµ ++ -term I simulates the exit instruction of C programming language and the λµ ++ -term P simulates the Call/cc instruction of the Scheme functional language (see [4]). 5.2 Producers of integers For every n 1,..., n m IN, we define the following finite sequence (U k ) 1 k m : U k = (α (x λdλy (y n k ) id (I U k 1 ))) (2 k m) and U 1 = (α (x λdλy (y n 1 ) id α)). Let P n1,...,n m = λxµα U m. We have: Theorem 5.2 P n1,...,n m : x {Ent[x] y Ent[y]}, and (P n1,...,n m 0) µ ++ {λy (y n i ) ; 1 i m}. Proof For the typing, it suffices to prove that x : Ent[x], α : y Ent[y] λdλy (y n k ) : y Ent[y] y Ent[y] (1 k m) and thus x : Ent[x], α : y Ent[y] U k : (1 k m). We define the following finite sequence (V k ) 1 k m : V k = (α (λdλy (y n k ) (I V k 1 ))) (2 k m) and V 1 = (α λy (y n 1 )). We have (P n1,...,n m 0) µ ++ λxµα V m µ ++ λy (y n i ) (1 i m). Let P IN = (Y F ) where F = λxλyµα (α (y λd (x (s y)) id (I (α (y λdλz (z y) id α))))), Y is the Turing fixed point and s a λµ ++ -term for successor on Church integers. It is easy to check that: 9

Theorem 5.3 (P IN 0) µ ++ {λy (y m) ; m IN}. We can check that F : x {Ent[x] y Ent[y]} x {Ent[x] y Ent[y]}. Therefore, if we add to the typed system the following rule: If Γ F : A A, then Γ (Y F ) : A we obtain P IN : x {Ent[x] y Ent[y]}. It is clear that, with this rule, we lose the strong normalization property. But we possibly can put restrictions on this rule to have weak normalization. We can deduce the following corollary: Corollary 5.1 Let R IN be a recursively enumerable set. There is a closed normal λµ ++ -term P R such that (P R 0) µ ++ {m ; m R}. 5.3 Parallel-or Let T B = {b ; b µ ++ {0} or b µ ++ {1}} the set of true booleans. A closed normal λµ ++ -term b is said to be a false boolean iff : b µ ++ λx u or b µ ++ λx u where u µ ++ λy v and u µ ++ (x v 1...v n ) or b µ ++ λxλy u where u µ ++ λy v, u µ ++ (x w 1...w n ) and u µ ++ (y w 1...w n ). We denote FB the set of false booleans. Intuitively a false boolean is thus a term which can give the first informations on a true boolean before looping. Let B = T B FB the set of booleans. We said that a closed normal λµ ++ -term T is a parallel-or iff for all b 1, b 2 B: (T b 1 b 2 ) µ ++ {0, 1} ; (T b 1 b 2 ) µ ++ 1 iff b 1 µ ++ 1 or b 2 µ ++ 1 ; (T b 1 b 2 ) µ ++ 0 iff b 1 µ ++ 0 and b 2 µ ++ 0. Let or be a binary function defined by the following set of equations : or(1, x) = 1 or(0, x) = x or(x, 1) = 1 or(x, 0) = x Let = λxλyµα (α (x 1 (y 1 0) (I (α (y 1 (x 1 0) α))))) where 1 = λp 1 and 0 = λp 0. Theorem 5.4 : x y {Bool[x], Bool[y] Bool[or(x, y)]} and is a parallelor. 10

Proof Let B[x] = Bool[x] Bool[x]. x : Bool[x] x : B[1], B[0] B[x], then x : Bool[x] (x 1 0) : B[x]. In the same way we prove that y : Bool[y] (y 1 0) : B[y]. y : Bool[y] y : B[1], B[x] B[or(x, y)], then x : Bool[x], y : Bool[y] (y 1 (x 1 0)) : Bool[or(x, y)], therefore α : Bool[or(x, y)], x : Bool[x], y : Bool[y] (α (y 1 (x 1 0) α))) : and α : Bool[or(x, y)], x : Bool[x], y : Bool[y] (I (α (y 1 (x 1 0) α)))) : Bool[or(x, y)]. x : Bool[x] x : B[1], B[y] B[or(x, y)], then x : Bool[x], y : Bool[y] (x 1 (y 1 0)) : B[or(x, y)], therefore α : Bool[or(x, y)], x : Bool[x], y : Bool[y] (x 1 (y 1 0) (I (α (y 1 (x 1 0) α))) : Bool[or(x, y)]. And finally : : x y {Bool[x], Bool[y] Bool[or(x, y)]}. We will make three examples of reductions. Let b 1, b 2, b 3 B such that b 1 µ ++ {0}, b 2 µ ++ {1} and b 3 µ ++ λxλy u where u µ ++ λy v, u µ ++ (x w 1...w n ) and u µ ++ (y w 1...w n ). We will reduce ( b 1 b 3 ), ( b 2 b 3 ), and ( b 3 b 2 ). The reductions of R 1 = (b 3 1 0) and R 2 = (b 3 1 (b i 1 0) α))) do not terminate, and α is free in each R such that R 2 µ ++ R. Therefore, the only way to be compute ( b 1 b 3 ) and ( b 2 b 3 ) are the following: ( b 1 b 3 ) µ ++ µα (α (0 1 R 1 (I (α R 2)))) µ ++... µ ++ µα (α (R 1 (I (α R 2)))) µ ++... Then the computation does not terminate. ( b 2 b 3 ) µ ++ µα (α (1 1 R 1 (I (α R 2 )))) µ ++... µ ++ µα (α 1 (I (α R 2 ))) µ ++... µ ++ µα (α 1) µ ++ 1. The reductions of R 3 = (b 3 1 (b 2 1 0)) and R 4 = (b 3 1 0) do not terminate. Therefore, the only way to compute ( b 3 b 2 ) is the following: ( b 3 b 2 ) µ ++ µα (α (R 1 (I (α ((1 1 R 4 ) α))))) µ ++... µ ++ µα (α (R 1 (I (α ( 1 α))))) 11

µ ++... µ ++ µα (α (R 1 (I (α 1)))) µ ++... µ ++ 1. References [1] F. Barbanera and S. Berardi A symmetric lambda-calculus for classical program extraction. In M. Hagiya and J.C. Mitchell, editors, Proceedings of theoretical aspects of computer software, volume 789 of LNCS, pp. 495-515. Springer Verlag, 1994. [2] J.-Y. Girard A new constructive logic: classical logic. Mathematical Structures in Computer Science, num 1, pp. 255-296, 1991. [3] J.-L. Krivine Classical logic, storage operators and 2nd order lambdacalculus. Annals of Pure and Applied Logic, num 68, pp. 53-78, 1994. [4] J.-L. Krivine About classical logic and imperative programming. Ann. of Math. and Artif. Intell., num 16, pp. 405-414, 1996. [5] K. Nour La valeur d un entier classique en λµ-calcul. Archive for Mathematical Logic 36, pp. 461-473, 1997. [6] M. Parigot λµ-calculus : an algorithm interpretation of classical natural deduction. Lecture Notes in Artificial Intelligence, Springer Verlag, num 624, pp. 190-201, 1992. [7] M. Parigot Classical proofs as programs. Lectures Notes in Computer Science, Springer Verlag, num 713, 263-276, 1992. [8] M. Parigot Strong normalization for second order classical natural deduction. Proceedings of the eighth annual IEEE symposium on logic in computer science, pp. 39-46, 1993. [9] W. Py Confluence en λµ-calcul. Thèse de doctorat, Université de Savoie, 1998. 12