The Intensional Lambda Calculus ⋆ Sergei Artemov 1 and Eduardo Bonelli 2 1 Graduate Center CUNY, PhD Program in Computer Science, 365 Fifth Ave., New York, NY 10016, U.S.A., sartemov@gc.cuny.edu 2 LIFIA, Fac. de Inform´atica, UNLP, Argentina and CONICET, eduardo@lifia.info.unlp.edu.ar Abstract. We introduce a natural deduction formulation for the Logic of Proofs, a refinement of modal logic S4 in which the assertion ✷A is replaced by [[s]]A whose intended reading is “s is a proof of A”. A term calculus for this formulation yields a typed lambda calculus λ I that internalises intensional information on how a term is computed. In the same way that the Logic of Proofs internalises its own derivations, λ I internalises its own computations. Confluence and strong normalisation of λ I is proved. This system serves as the basis for the study of type theories that internalise intensional aspects of computation. 1 Introduction This paper introduces a typed lambda calculus that internalises its own com- putations. Such a system is obtained by a propositions-as-types [GLT89] inter- pretation of a logical system for provability which internalises its own proofs, namely the Logic of Proofs LP [Art95,Art01]. Proofs are represented as com- binatory terms known as proof polynomials. In the minimal propositional logic fragment of LP proof polynomials are constructed from proof variables and con- stants using two operations: application “·” and proof-checker “!”. The usual propositional connectives are augmented by a new one: given a proof polyno- mial s and a proposition A build [[s]]A. The intended reading is: “s is a proof of A”. The axioms and inference schemes of LP are: A0. Axiom schemes of minimal logic in the language of LP A1. [[s]]A ⊃ A “verification” A2. [[s]](A ⊃ B) ⊃ ([[t]]A ⊃ [[s · t]]B) “application” A3. [[s]]A ⊃ [[!s]][[s]]A “proof checker” R1. Γ ⊢ A ⊃ B and Γ ⊢ A implies Γ ⊢ B “modus ponens” R2. If A is an axiom A0-A3, and c is a proof constant, then ⊢ [[c]]A “necessitation” For verification one reads:“if s is a proof of A, then A holds ”. As regards the proof polynomials the standard interpretation is as follows. For application one reads: “if s is a proof of A ⊃ B and t is a proof of A, then s · t is a proof of B”. Thus “·” represents composition of proofs. For proof checking one reads: “if s is a proof of A, then !s is a proof of the sentence ‘s is a proof of A’ ”. Thus !s is seen as a computation that verifies [[s]]A. ⋆ Extended report of LFCS07 submission. Version of: December 28, 2006