Classical proofs as programs

  • Michel Parigot
Contributed Papers
Part of the Lecture Notes in Computer Science book series (LNCS, volume 713)


We present an extension of the correspondence between intuitionistic proofs and functional programs to classical proofs, and more precisely to second order classical proofs. The advantage of classical logic in this context is that it allows to model imperative features of programming languages too (cf [5]). But there is an intrinsic difficulty with classical logic which lies in certain non-determinism of its computational interpretations. The use of a natural deduction system removes a part of this non determinism by fixing the inputs to the left of the sequents (cf [10] and [11]). However a conflict remains between the confluence of the computation mechanism and the uniqueness of the representation of data (for instance the uniqueness of the representation of the natural number 1). In this paper we develop the solution to this problem proposed in [11]: we show how to extract the intuitionistic representation of a data from a classical one using an “output” operator, while keeping a confluent computation mechanism. This result allows to extend in a sound way the proofs-as-programs paradigm to classical proofs in a framework where all the usual theoretical properties of intuitionistic proofs still hold.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    H. BARENDREGT, The Lambda-Calculus, North-Holland, 1981.Google Scholar
  2. [2]
    J.Y. GIRARD, Interprétation fonctionnelle et élimination des coupures de l'arithmétique d'ordre supérieure. Thése, Université Paris 7, 1972.Google Scholar
  3. [3]
    J.Y. GIRARD, A new constructive logic: classical logic. Mathematical Structures in Computer Science, vol. 1, 1991, pp. 255–296.Google Scholar
  4. [4]
    J.Y. GIRARD, Y. LAFONT, and P. TAYLOR, Proofs and Types, Cambridge University Press, 1989.Google Scholar
  5. [5]
    T. GRIFFIN, A formulae-as-types notion of control, Proc. POPL, 1990.Google Scholar
  6. [6]
    J.L. KRIVINE, Lambda-calcul, types et modèles, Masson, 1990.Google Scholar
  7. [7]
    J.L. KRIVINE, Opérateurs de mise en mémoire et traduction de Gödel. Archiv for Mathematical Logic 30, 1990, pp 241–267.Google Scholar
  8. [8]
    J.L. KRIVINE, M. PARIGOT, Programming with proofs. EIK 26(3), 1990, pp 149–167.Google Scholar
  9. [9]
    D. LEIVANT, Reasoning about functional programs and complexity classes associated with type disciplines. Proc. FOCS, 1983, pp 460–469.Google Scholar
  10. [10]
    M. PARIGOT, Free Deduction: an Analysis of “Computations” in Classical Logic. Proc. Russian Conference on Logic Programming, St Petersburg (Russia), 1991, Springer LNCS 592, pp. 361–380.Google Scholar
  11. [11]
    M. PARIGOT, λμ-calculus: an Algorithmic Interpretation of Classical Natural Deduction. Proc. International Conference on Logic Programming and Automated Reasoning, St Petersburg (Russia), 1992, Springer LNCS 624, pp. 190–201.Google Scholar
  12. [12]
    M. PARIGOT, Strong Normalisation for Second Order Classical Natural Deduction, Proc. LICS 1993 (to appear).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1993

Authors and Affiliations

  • Michel Parigot
    • 1
  1. 1.Equipe de logique - CNRS UA 753 45-55 5éme étageUniversité Paris 7Paris Cedex 05France

Personalised recommendations