<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
    <title>Project-Team:PI.R2</title>
    <link rel="stylesheet" href="../static/css/raweb.css" type="text/css"/>
    <meta name="description" content="Research Program - Proof theory and the Curry-Howard correspondence"/>
    <meta name="dc.title" content="Research Program - Proof theory and the Curry-Howard correspondence"/>
    <meta name="dc.subject" content=""/>
    <meta name="dc.publisher" content="INRIA"/>
    <meta name="dc.date" content="(SCHEME=ISO8601) 2016-01"/>
    <meta name="dc.type" content="Report"/>
    <meta name="dc.language" content="(SCHEME=ISO639-1) en"/>
    <meta name="projet" content="PI.R2"/>
    <script type="text/javascript" src="https://raweb.inria.fr/rapportsactivite/RA2016/static/MathJax/MathJax.js?config=TeX-MML-AM_CHTML">
      <!--MathJax-->
    </script>
  </head>
  <body>
    <div class="tdmdiv">
      <div class="logo">
        <a href="http://www.inria.fr">
          <img style="align:bottom; border:none" src="../static/img/icons/logo_INRIA-coul.jpg" alt="Inria"/>
        </a>
      </div>
      <div class="TdmEntry">
        <div class="tdmentete">
          <a href="uid0.html">Project-Team Pi.r2</a>
        </div>
        <span>
          <a href="uid1.html">Members</a>
        </span>
      </div>
      <div class="TdmEntry">
        <a href="./uid3.html">Overall Objectives</a>
      </div>
      <div class="TdmEntry">Research Program<ul><li class="tdmActPage"><a href="uid5.html&#10;&#9;&#9;  ">Proof theory and the Curry-Howard correspondence</a></li><li><a href="uid9.html&#10;&#9;&#9;  ">The development of Coq</a></li><li><a href="uid15.html&#10;&#9;&#9;  ">Dependently typed programming languages</a></li><li><a href="uid17.html&#10;&#9;&#9;  ">Around and beyond the Curry-Howard correspondence</a></li><li><a href="uid22.html&#10;&#9;&#9;  ">Effective higher-dimensional algebra</a></li></ul></div>
      <div class="TdmEntry">New Software and Platforms<ul><li><a href="uid27.html&#10;&#9;&#9;  ">Coq</a></li><li><a href="uid37.html&#10;&#9;&#9;  ">Other software developments</a></li></ul></div>
      <div class="TdmEntry">New Results<ul><li><a href="uid39.html&#10;&#9;&#9;  ">Effects in proof theory and programming</a></li><li><a href="uid44.html&#10;&#9;&#9;  ">Reasoning and programming with infinite data</a></li><li><a href="uid49.html&#10;&#9;&#9;  ">Effective higher-dimensional algebra</a></li><li><a href="uid53.html&#10;&#9;&#9;  ">Incrementality</a></li><li><a href="uid56.html&#10;&#9;&#9;  ">Metatheory and development of Coq</a></li><li><a href="uid61.html&#10;&#9;&#9;  ">Formalisation work</a></li></ul></div>
      <div class="TdmEntry">Partnerships and Cooperations<ul><li><a href="uid67.html&#10;&#9;&#9;  ">National Initiatives</a></li><li><a href="uid68.html&#10;&#9;&#9;  ">European Initiatives</a></li><li><a href="uid70.html&#10;&#9;&#9;  ">International Initiatives</a></li><li><a href="uid75.html&#10;&#9;&#9;  ">International Research Visitors</a></li></ul></div>
      <div class="TdmEntry">Dissemination<ul><li><a href="uid80.html&#10;&#9;&#9;  ">Promoting Scientific Activities</a></li><li><a href="uid98.html&#10;&#9;&#9;  ">Teaching - Supervision - Juries</a></li><li><a href="uid102.html&#10;&#9;&#9;  ">Popularization</a></li></ul></div>
      <div class="TdmEntry">
        <div>Bibliography</div>
      </div>
      <div class="TdmEntry">
        <ul>
          <li>
            <a id="tdmbibentmajor" href="bibliography.html">Major publications</a>
          </li>
          <li>
            <a id="tdmbibentyear" href="bibliography.html#year">Publications of the year</a>
          </li>
          <li>
            <a id="tdmbibentfoot" href="bibliography.html#References">References in notes</a>
          </li>
        </ul>
      </div>
    </div>
    <div id="main">
      <div class="mainentete">
        <div id="head_agauche">
          <small><a href="http://www.inria.fr">
	    
	    Inria
	  </a> | <a href="../index.html">
	    
	    Raweb 
	    2016</a> | <a href="http://www.inria.fr/en/teams/pi.r2">Presentation of the Project-Team PI.R2</a> | <a href="https://www.irif.fr/inria/pi.r2/">PI.R2 Web Site
	  </a></small>
        </div>
        <div id="head_adroite">
          <table class="qrcode">
            <tr>
              <td>
                <a href="pi.r2.xml">
                  <img style="align:bottom; border:none" alt="XML" src="../static/img/icons/xml_motif.png"/>
                </a>
              </td>
              <td>
                <a href="pi.r2.pdf">
                  <img style="align:bottom; border:none" alt="PDF" src="IMG/qrcode-pi.r2-pdf.png"/>
                </a>
              </td>
              <td>
                <a href="../pi.r2/pi.r2.epub">
                  <img style="align:bottom; border:none" alt="e-pub" src="IMG/qrcode-pi.r2-epub.png"/>
                </a>
              </td>
            </tr>
            <tr>
              <td/>
              <td>PDF
</td>
              <td>e-Pub
</td>
            </tr>
          </table>
        </div>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid3.html" accesskey="P"><img style="align:bottom; border:none" alt="previous" src="../static/img/icons/previous_motif.jpg"/> Previous | </a>
          <a href="./uid0.html" accesskey="U"><img style="align:bottom; border:none" alt="up" src="../static/img/icons/up_motif.jpg"/>  Home</a>
          <a href="./uid9.html" accesskey="N"> | Next <img style="align:bottom; border:none" alt="next" src="../static/img/icons/next_motif.jpg"/></a>
        </div>
        <br/>
      </div>
      <div id="textepage">
        <!--DEBUT2 du corps du module-->
        <h2>Section: 
      Research Program</h2>
        <h3 class="titre3">Proof theory and the Curry-Howard correspondence</h3>
        <a name="uid6"/>
        <h4 class="titre4">Proofs as programs</h4>
        <p>Proof theory is the branch of logic devoted to the study of the
structure of proofs. An essential contributor to this field is
Gentzen  <a href="./bibliography.html#pi.r2-2016-bid0">[57]</a> who developed in 1935 two logical formalisms
that are now central to the study of proofs. These are the so-called
“natural deduction”, a syntax that is particularly well-suited to
simulate the intuitive notion of reasoning, and the so-called
“sequent calculus”, a syntax with deep geometric
properties that is particularly well-suited for proof automation.</p>
        <p>Proof theory gained a remarkable importance in computer science when it
became clear, after genuine observations first by Curry in
1958  <a href="./bibliography.html#pi.r2-2016-bid1">[52]</a>, then by Howard and de Bruijn at the end of the
60's  <a href="./bibliography.html#pi.r2-2016-bid2">[70]</a>, <a href="./bibliography.html#pi.r2-2016-bid3">[89]</a>, that proofs had the very same
structure as programs: for instance, natural deduction proofs can be
identified as typed programs of the ideal programming language known
as <span class="math"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>λ</mi></math></span>-calculus.</p>
        <p>This proofs-as-programs correspondence has been the starting point to
a large spectrum of researches and results contributing to deeply
connect logic and computer science. In particular, it is from this
line of work that Coquand and Huet's Calculus of
Constructions  <a href="./bibliography.html#pi.r2-2016-bid4">[49]</a>, <a href="./bibliography.html#pi.r2-2016-bid5">[50]</a> stemmed out – a formalism that is both a logic
and a programming language and that is at the source of the Coq
system  <a href="./bibliography.html#pi.r2-2016-bid6">[87]</a>.</p>
        <a name="uid7"/>
        <h4 class="titre4">Towards the calculus of constructions</h4>
        <p>The <span class="math"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>λ</mi></math></span>-calculus, defined by Church  <a href="./bibliography.html#pi.r2-2016-bid7">[48]</a>, is a
remarkably succinct model of computation that is defined via only
three constructions (abstraction of a program with respect to one of
its parameters, reference to such a parameter, application of a program
to an argument) and one reduction rule (substitution of the formal
parameter of a program by its effective argument). The
<span class="math"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>λ</mi></math></span>-calculus, which is Turing-complete, i.e. which has the same
expressiveness as a Turing machine (there is for instance an encoding of
numbers as functions in <span class="math"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>λ</mi></math></span>-calculus), comes with two possible
semantics referred to as call-by-name and call-by-value evaluations.
Of these two semantics, the first one, which is the simplest to
characterise, has been deeply studied in the last
decades  <a href="./bibliography.html#pi.r2-2016-bid8">[44]</a>.</p>
        <p>To explain the Curry-Howard correspondence, it is important to
distinguish between intuitionistic and classical logic: following
Brouwer at the beginning of the 20<sup>th</sup> century,
classical logic is a logic that accepts the use of reasoning by
contradiction while intuitionistic logic proscribes it. Then,
Howard's observation is that the proofs of the intuitionistic natural
deduction formalism exactly coincide with
programs in the (simply typed) <span class="math"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>λ</mi></math></span>-calculus.</p>
        <p>A major achievement has been accomplished by Martin-Löf who designed in
1971 a formalism, referred to as modern type theory, that was both a
logical system and a (typed) programming language  <a href="./bibliography.html#pi.r2-2016-bid9">[80]</a>.</p>
        <p>In 1985, Coquand and Huet  <a href="./bibliography.html#pi.r2-2016-bid4">[49]</a>, <a href="./bibliography.html#pi.r2-2016-bid5">[50]</a> in the Formel
team of Inria-Rocquencourt explored an alternative approach
based on Girard-Reynolds' system <span class="math"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>F</mi></math></span>  <a href="./bibliography.html#pi.r2-2016-bid10">[58]</a>, <a href="./bibliography.html#pi.r2-2016-bid11">[83]</a>. This
formalism, called the
Calculus of Constructions, served as logical foundation of the first
implementation of Coq in 1984. Coq was called CoC at this time.</p>
        <a name="uid8"/>
        <h4 class="titre4">The Calculus of Inductive Constructions</h4>
        <p>The first public release of CoC dates back to 1989. The same
project-team developed the programming language Caml (nowadays called OCaml and coordinated by the Gallium team) that
provided the expressive and powerful concept of algebraic data types
(a paragon of it being the type of lists). In CoC, it was possible to simulate algebraic data types, but only through a
not-so-natural not-so-convenient encoding.</p>
        <p>In 1989, Coquand and Paulin  <a href="./bibliography.html#pi.r2-2016-bid12">[51]</a> designed an extension of
the Calculus of Constructions with a generalisation of algebraic
types called inductive types, leading to the Calculus of Inductive
Constructions (CIC) that started to serve as a new foundation for the
Coq system. This new system, which got its current definitive name
Coq, was released in 1991.</p>
        <p>In practice, the Calculus of Inductive Constructions derives its
strength from being both a logic powerful enough to formalise all common
mathematics (as set theory is) and an expressive richly-typed
functional programming language (like ML but with a richer type
system, no effects and no non-terminating functions).</p>
      </div>
      <!--FIN du corps du module-->
      <br/>
      <div class="bottomNavigation">
        <div class="tail_aucentre">
          <a href="./uid3.html" accesskey="P"><img style="align:bottom; border:none" alt="previous" src="../static/img/icons/previous_motif.jpg"/> Previous | </a>
          <a href="./uid0.html" accesskey="U"><img style="align:bottom; border:none" alt="up" src="../static/img/icons/up_motif.jpg"/>  Home</a>
          <a href="./uid9.html" accesskey="N"> | Next <img style="align:bottom; border:none" alt="next" src="../static/img/icons/next_motif.jpg"/></a>
        </div>
        <br/>
      </div>
    </div>
  </body>
</html>
