In
programming language theory
Programming language theory (PLT) is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of formal languages known as programming languages. Programming language theory is clos ...
and
proof theory
Proof theory is a major branchAccording to , proof theory is one of four domains mathematical logic, together with model theory, axiomatic set theory, and recursion theory. consists of four corresponding parts, with part D being about "Proof The ...
, the Curry–Howard correspondence is the direct relationship between
computer program
A computer program is a sequence or set of instructions in a programming language for a computer to Execution (computing), execute. It is one component of software, which also includes software documentation, documentation and other intangibl ...
s and
mathematical proof
A mathematical proof is a deductive reasoning, deductive Argument-deduction-proof distinctions, argument for a Proposition, mathematical statement, showing that the stated assumptions logically guarantee the conclusion. The argument may use othe ...
s. It is also known as the Curry–Howard isomorphism or equivalence, or the proofs-as-programs and propositions- or formulae-as-types interpretation.
It is a generalization of a syntactic
analogy between systems of formal logic and computational calculi that was first discovered by the American
mathematician
A mathematician is someone who uses an extensive knowledge of mathematics in their work, typically to solve mathematical problems. Mathematicians are concerned with numbers, data, quantity, mathematical structure, structure, space, Mathematica ...
Haskell Curry and the
logician William Alvin Howard. It is the link between logic and computation that is usually attributed to Curry and Howard, although the idea is related to the operational interpretation of
intuitionistic logic given in various formulations by
L. E. J. Brouwer,
Arend Heyting and
Andrey Kolmogorov (see
Brouwer–Heyting–Kolmogorov interpretation) and
Stephen Kleene (see
Realizability). The relationship has been extended to include
category theory
Category theory is a general theory of mathematical structures and their relations. It was introduced by Samuel Eilenberg and Saunders Mac Lane in the middle of the 20th century in their foundational work on algebraic topology. Category theory ...
as the three-way Curry–Howard–Lambek correspondence.
Origin, scope, and consequences
The beginnings of the Curry–Howard correspondence lie in several observations:
# In 1934
Curry observes that the
types of the combinators could be seen as
axiom-schemes for
intuitionistic implicational logic.
# In 1958 he observes that a certain kind of
proof system, referred to as
Hilbert-style deduction systems, coincides on some fragment with the typed fragment of a standard
model of computation known as
combinatory logic.
# In 1969
Howard observes that another, more "high-level"
proof system, referred to as
natural deduction, can be directly interpreted in its
intuitionistic version as a typed variant of the
model of computation known as
lambda calculus
In mathematical logic, the lambda calculus (also written as ''λ''-calculus) is a formal system for expressing computability, computation based on function Abstraction (computer science), abstraction and function application, application using var ...
.
The Curry–Howard correspondence is the observation that there is an isomorphism between the proof systems, and the models of computation. It is the statement that these two families of formalisms can be considered as identical.
If one abstracts on the peculiarities of either formalism, the following generalization arises: ''a proof is a program, and the formula it proves is the type for the program''. More informally, this can be seen as an
analogy that states that the
return type of a function (i.e., the type of values returned by a function) is analogous to a logical theorem, subject to hypotheses corresponding to the types of the argument values passed to the function; and that the program to compute that function is analogous to a proof of that theorem. This sets a form of
logic programming on a rigorous foundation: ''proofs can be represented as programs, and especially as lambda terms'', or ''proofs can be run''.
The correspondence has been the starting point of a large range of new research after its discovery, leading to a new class of
formal system
A formal system is an abstract structure and formalization of an axiomatic system used for deducing, using rules of inference, theorems from axioms.
In 1921, David Hilbert proposed to use formal systems as the foundation of knowledge in ma ...
s designed to act both as a
proof system and as a typed
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
based on
functional programming
In computer science, functional programming is a programming paradigm where programs are constructed by Function application, applying and Function composition (computer science), composing Function (computer science), functions. It is a declarat ...
. This includes
Martin-Löf's
intuitionistic type theory and
Coquand's
calculus of constructions (CoC), two calculi in which proofs are regular objects of the discourse and in which one can state properties of proofs the same way as of any program. This field of research is usually referred to as modern
type theory
In mathematics and theoretical computer science, a type theory is the formal presentation of a specific type system. Type theory is the academic study of type systems.
Some type theories serve as alternatives to set theory as a foundation of ...
.
Such
typed lambda calculi derived from the Curry–Howard paradigm led to software like Rocq in which proofs seen as programs can be formalized, checked, and run.
A converse direction is to ''use a program to extract a proof'', given its
correctness—an area of research closely related to
proof-carrying code. This is only feasible if the
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
the program is written for is very richly typed: the development of such type systems has been partly motivated by the wish to make the Curry–Howard correspondence practically relevant.
The Curry–Howard correspondence also raised new questions regarding the computational content of proof concepts that were not covered by the original works of Curry and Howard. In particular,
classical logic
Classical logic (or standard logic) or Frege–Russell logic is the intensively studied and most widely used class of deductive logic. Classical logic has had much influence on analytic philosophy.
Characteristics
Each logical system in this c ...
has been shown to correspond to the ability to manipulate the
continuation
In computer science, a continuation is an abstract representation of the control state of a computer program. A continuation implements ( reifies) the program control state, i.e. the continuation is a data structure that represents the computat ...
of programs and the symmetry of
sequent calculus to express the duality between the two
evaluation strategies known as call-by-name and call-by-value.
Because of the possibility of writing non-terminating programs,
Turing-complete models of computation (such as languages with arbitrary
recursive functions) must be interpreted with care, as naive application of the correspondence leads to an inconsistent logic. The best way of dealing with arbitrary computation from a logical point of view is still an actively debated research question, but one popular approach is based on using
monads to segregate provably terminating from potentially non-terminating code (an approach that also generalizes to much richer models of computation, and is itself related to modal logic by a natural extension of the Curry–Howard isomorphism). A more radical approach, advocated by
total functional programming, is to eliminate unrestricted recursion (and forgo
Turing completeness
In computability theory, a system of data-manipulation rules (such as a model of computation, a computer's instruction set, a programming language, or a cellular automaton) is said to be Turing-complete or computationally universal if it can b ...
, although still retaining high computational complexity), using more controlled
corecursion
In computer science, corecursion is a type of operation that is Dual (category theory), dual to recursion (computer science), recursion. Whereas recursion works analysis, analytically, starting on data further from a base case and breaking it dow ...
wherever non-terminating behavior is actually desired.
General formulation
In its more general formulation, the Curry–Howard correspondence is a correspondence between formal
proof calculi and
type systems for
models of computation. In particular, it splits into two correspondences. One at the level of
formulas and
types
Type may refer to:
Science and technology Computing
* Typing, producing text via a keyboard, typewriter, etc.
* Data type, collection of values used for computations.
* File type
* TYPE (DOS command), a command to display contents of a file.
* Ty ...
that is independent of which particular proof system or model of computation is considered, and one at the level of
proofs and
programs which, this time, is specific to the particular choice of proof system and model of computation considered.
At the level of formulas and types, the correspondence says that implication behaves the same as a function type, conjunction as a "product" type (this may be called a tuple, a struct, a list, or some other term depending on the language), disjunction as a sum type (this type may be called a union), the false formula as the empty type and the true formula as a unit type (whose sole member is the null object). Quantifiers correspond to
dependent function space or products (as appropriate).
This is summarized in the following table:
At the level of proof systems and models of computations, the correspondence mainly shows the identity of structure, first, between some particular formulations of systems known as
Hilbert-style deduction system and
combinatory logic, and, secondly, between some particular formulations of systems known as
natural deduction and
lambda calculus
In mathematical logic, the lambda calculus (also written as ''λ''-calculus) is a formal system for expressing computability, computation based on function Abstraction (computer science), abstraction and function application, application using var ...
.
Between the natural deduction system and the lambda calculus there are the following correspondences:
Corresponding systems
Intuitionistic Hilbert-style deduction systems and typed combinatory logic
It was at the beginning a simple remark in Curry and Feys's 1958 book on combinatory logic: the simplest types for the basic combinators K and S of
combinatory logic surprisingly corresponded to the respective
axiom schemes ''α'' → (''β'' → ''α'') and (''α'' → (''β'' → ''γ'')) → ((''α'' → ''β'') → (''α'' → ''γ'')) used in
Hilbert-style deduction systems. For this reason, these schemes are now often called axioms K and S. Examples of programs seen as proofs in a Hilbert-style logic are given
below.
If one restricts to the implicational intuitionistic fragment, a simple way to formalize logic in Hilbert's style is as follows. Let Γ be a finite collection of formulas, considered as hypotheses. Then δ is ''derivable'' from Γ, denoted Γ ⊢ δ, in the following cases:
* δ is an hypothesis, i.e. it is a formula of Γ,
* δ is an instance of an axiom scheme; i.e., under the most common axiom system:
** δ has the form ''α'' → (''β'' → ''α''), or
** δ has the form (''α'' → (''β'' → ''γ'')) → ((''α'' → ''β'') → (''α'' → ''γ'')),
* δ follows by deduction, i.e., for some ''α'', both ''α'' → ''δ'' and ''α'' are already derivable from Γ (this is the rule of
modus ponens
In propositional logic, (; MP), also known as (), implication elimination, or affirming the antecedent, is a deductive argument form and rule of inference. It can be summarized as "''P'' implies ''Q.'' ''P'' is true. Therefore, ''Q'' must ...
)
This can be formalized using
inference rules, as in the left column of the following table.
Typed combinatory logic can be formulated using a similar syntax: let Γ be a finite collection of variables, annotated with their types. A term T (also annotated with its type) will depend on these variables
� ⊢ T:''δ''when:
* T is one of the variables in Γ,
* T is a basic combinator; i.e., under the most common combinator basis:
** T is K:''α'' → (''β'' → ''α'')
here ''α'' and ''β'' denote the types of its arguments or
** T is S:(''α'' → (''β'' → ''γ'')) → ((''α'' → ''β'') → (''α'' → ''γ'')),
* T is the composition of two subterms which depend on the variables in Γ.
The generation rules defined here are given in the right-column below. Curry's remark simply states that both columns are in one-to-one correspondence. The restriction of the correspondence to
intuitionistic logic means that some
classical tautologies, such as
Peirce's law ((''α'' → ''β'') → ''α'') → ''α'', are excluded from the correspondence.
Seen at a more abstract level, the correspondence can be restated as shown in the following table. Especially, the
deduction theorem
In mathematical logic, a deduction theorem is a metatheorem that justifies doing conditional proofs from a hypothesis in systems that do not explicitly axiomatize that hypothesis, i.e. to prove an implication A \to B, it is sufficient to assume A ...
specific to Hilbert-style logic matches the process of
abstraction elimination of combinatory logic.
Thanks to the correspondence, results from combinatory logic can be transferred to Hilbert-style logic and vice versa. For instance, the notion of
reduction of terms in combinatory logic can be transferred to Hilbert-style logic and it provides a way to canonically transform proofs into other proofs of the same statement. One can also transfer the notion of normal terms to a notion of normal proofs, expressing that the hypotheses of the axioms never need to be all detached (since otherwise a simplification can happen).
Conversely, the non provability in intuitionistic logic of
Peirce's law can be transferred back to combinatory logic: there is no typed term of combinatory logic that is typable with type
:((''α'' → ''β'') → ''α'') → ''α''.
Results on the completeness of some sets of combinators or axioms can also be transferred. For instance, the fact that the combinator X constitutes a
one-point basis of (extensional) combinatory logic implies that the single axiom scheme
:(((''α'' → (''β'' → ''γ'')) → ((''α'' → ''β'') → (''α'' → ''γ''))) → ((''δ'' → (''ε'' → ''δ'')) → ''ζ'')) → ''ζ'',
which is the
principal type of X, is an adequate replacement to the combination of the axiom schemes
:''α'' → (''β'' → ''α'') and
:(''α'' → (''β'' → ''γ'')) → ((''α'' → ''β'') → (''α'' → ''γ'')).
Intuitionistic Natural deduction and typed lambda calculus
After
Curry emphasized the syntactic correspondence between intuitionistic
Hilbert-style deduction and typed
combinatory logic,
Howard made explicit in 1969 a syntactic analogy between the programs of
simply typed lambda calculus
The simply typed lambda calculus (), a form
of type theory, is a typed interpretation of the lambda calculus with only one type constructor () that builds function types. It is the canonical and simplest example of a typed lambda calculus. The ...
and the proofs of
natural deduction. Below, the left-hand side formalizes intuitionistic implicational natural deduction as a calculus of
sequents (the use of sequents is standard in discussions of the Curry–Howard isomorphism as it allows the deduction rules to be stated more cleanly) with implicit weakening and the right-hand side shows the typing rules of
lambda calculus
In mathematical logic, the lambda calculus (also written as ''λ''-calculus) is a formal system for expressing computability, computation based on function Abstraction (computer science), abstraction and function application, application using var ...
. In the left-hand side, Γ, Γ
1 and Γ
2 denote ordered sequences of formulas while in the right-hand side, they denote sequences of named (i.e., typed) formulas with all names different.
To paraphrase the correspondence, proving Γ ⊢ ''α'' means having a program that, given values with the types listed in Γ, manufactures an object of type ''α''. An axiom/hypothesis corresponds to the introduction of a new variable with a new, unconstrained type, the rule corresponds to function abstraction and the rule corresponds to
function application
In mathematics, function application is the act of applying a function to an argument from its domain so as to obtain the corresponding value from its range. In this sense, function application can be thought of as the opposite of function abs ...
. Observe that the correspondence is not exact if the context Γ is taken to be a set of formulas as, e.g., the λ-terms λ''x''.λ''y''.''x'' and λ''x''.λ''y''.''y'' of type would not be distinguished in the correspondence. Examples are given
below.
Howard showed that the correspondence extends to other connectives of the logic and other constructions of simply typed lambda calculus. Seen at an abstract level, the correspondence can then be summarized as shown in the following table. Especially, it also shows that the notion of normal forms in
lambda calculus
In mathematical logic, the lambda calculus (also written as ''λ''-calculus) is a formal system for expressing computability, computation based on function Abstraction (computer science), abstraction and function application, application using var ...
matches
Prawitz's notion of normal deduction in
natural deduction, from which it follows that the algorithms for the
type inhabitation problem can be turned into algorithms for deciding
intuitionistic provability.
Howard's correspondence naturally extends to other extensions of
natural deduction and
simply typed lambda calculus
The simply typed lambda calculus (), a form
of type theory, is a typed interpretation of the lambda calculus with only one type constructor () that builds function types. It is the canonical and simplest example of a typed lambda calculus. The ...
. Here is a non-exhaustive list:
* Girard-Reynolds
System F as a common language for both second-order propositional logic and polymorphic lambda calculus,
*
higher-order logic
In mathematics and logic, a higher-order logic (abbreviated HOL) is a form of logic that is distinguished from first-order logic by additional quantifiers and, sometimes, stronger semantics. Higher-order logics with their standard semantics are m ...
and Girard's
System Fω
* inductive types as
algebraic data type
* necessity
in
modal logic
Modal logic is a kind of logic used to represent statements about Modality (natural language), necessity and possibility. In philosophy and related fields
it is used as a tool for understanding concepts such as knowledge, obligation, and causality ...
and staged computation
* possibility
in
modal logic
Modal logic is a kind of logic used to represent statements about Modality (natural language), necessity and possibility. In philosophy and related fields
it is used as a tool for understanding concepts such as knowledge, obligation, and causality ...
and monadic types for effects
* The calculus (where abstraction is restricted to ''λx''.''E'' where ''x'' has at least one free occurrence in ''E)'' and CL
I calculus correspond to
relevant logic.
* The local truth (∇) modality in
Grothendieck topology or the equivalent "lax" modality (â—¯) of Benton, Bierman, and de Paiva (1998) correspond to CL-logic describing "computation types".
Classical logic and control operators
At the time of Curry, and also at the time of Howard, the proofs-as-programs correspondence concerned only
intuitionistic logic, i.e. a logic in which, in particular,
Peirce's law was ''not'' deducible. The extension of the correspondence to Peirce's law and hence to
classical logic
Classical logic (or standard logic) or Frege–Russell logic is the intensively studied and most widely used class of deductive logic. Classical logic has had much influence on analytic philosophy.
Characteristics
Each logical system in this c ...
became clear from the work of Griffin on typing operators that capture the evaluation context of a given program execution so that this evaluation context can be later on reinstalled. The basic Curry–Howard-style correspondence for classical logic is given below. Note the correspondence between the
double-negation translation used to map classical proofs to intuitionistic logic and the
continuation-passing-style translation used to map lambda terms involving control to pure lambda terms. More particularly, call-by-name continuation-passing-style translations relates to
Kolmogorov's double negation translation and call-by-value continuation-passing-style translations relates to a kind of double-negation translation due to Kuroda.
A finer Curry–Howard correspondence exists for classical logic if one defines classical logic not by adding an axiom such as
Peirce's law, but by allowing several conclusions in sequents. In the case of classical natural deduction, there exists a proofs-as-programs correspondence with the typed programs of Parigot's
λμ-calculus.
Sequent calculus
A proofs-as-programs correspondence can be settled for the formalism known as
Gentzen's
sequent calculus but it is not a correspondence with a well-defined pre-existing model of computation as it was for Hilbert-style and natural deductions.
Sequent calculus is characterized by the presence of left introduction rules, right introduction rule and a cut rule that can be eliminated. The structure of sequent calculus relates to a calculus whose structure is close to the one of some
abstract machines. The informal correspondence is as follows:
Related proofs-as-programs correspondences
The role of de Bruijn
N. G. de Bruijn used the lambda notation for representing proofs of the theorem checker
Automath, and represented propositions as "categories" of their proofs. It was in the late 1960s at the same period of time Howard wrote his manuscript; de Bruijn was likely unaware of Howard's work, and stated the correspondence independently. Some researchers tend to use the term Curry–Howard–de Bruijn correspondence in place of Curry–Howard correspondence.
BHK interpretation
The
BHK interpretation interprets intuitionistic proofs as functions but it does not specify the class of functions relevant for the interpretation. If one takes lambda calculus for this class of function, then the
BHK interpretation tells the same as Howard's correspondence between natural deduction and lambda calculus.
Realizability
Kleene
Stephen Cole Kleene ( ; January 5, 1909 – January 25, 1994) was an American mathematician. One of the students of Alonzo Church, Kleene, along with Rózsa Péter, Alan Turing, Emil Post, and others, is best known as a founder of the branch of ...
's recursive
realizability splits proofs of intuitionistic arithmetic into the pair of a recursive function and of
a proof of a formula expressing that the recursive function "realizes", i.e. correctly instantiates the disjunctions and existential quantifiers of the initial formula so that the formula gets true.
Kreisel's modified realizability applies to intuitionistic higher-order predicate logic and shows that the
simply typed lambda term inductively extracted from the proof realizes the initial formula. In the case of propositional logic, it coincides with Howard's statement: the extracted lambda term is the proof itself (seen as an untyped lambda term) and the realizability statement is a paraphrase of the fact that the extracted lambda term has the type that the formula means (seen as a type).
Gödel's
dialectica interpretation realizes (an extension of) intuitionistic arithmetic with computable functions. The connection with lambda calculus is unclear, even in the case of natural deduction.
Curry–Howard–Lambek correspondence
Joachim Lambek showed in the early 1970s that the proofs of intuitionistic propositional logic and the combinators of typed
combinatory logic share a common equational theory, the theory of
cartesian closed categories. The expression Curry–Howard–Lambek correspondence is now used by some people to refer to the relationships between intuitionistic logic, typed lambda calculus and cartesian closed categories. Under this correspondence, objects of a cartesian-closed category can be interpreted as propositions (types), and morphisms as deductions mapping a set of assumptions (
typing context) to a valid consequent (well-typed term).
Lambek's correspondence is a correspondence of equational theories, abstracting away from dynamics of computation such as beta reduction and term normalization, and is not the expression of a syntactic identity of structures as it is the case for each of Curry's and Howard's correspondences: i.e. the structure of a well-defined morphism in a cartesian-closed category is not comparable to the structure of a proof of the corresponding judgment in either Hilbert-style logic or natural deduction. For example, it is not possible to state or prove that a morphism is normalizing, establish a Church-Rosser type theorem, or speak of a "strongly normalizing" cartesian closed category. To clarify this distinction, the underlying syntactic structure of cartesian closed categories is rephrased below.
Objects (propositions/types) include
*
as an object
* given
and
as objects, then
and
as objects.
Morphisms (deductions/terms) include
* identities:
* composition: if
and
are morphisms
is a morphism
*
terminal morphisms:
* products: if
and
are morphisms,
is a morphism
* projections:
and
* evaluation:
* currying: if
is a morphism,
is a morphism.
Equivalently to the annotations above, well-defined morphisms (typed terms) in any cartesian-closed category can be constructed according to the following
typing rule
In type theory, a typing rule is an inference rule that describes how a type system assigns a type to a syntactic construction. These rules may be applied by the type system to determine if a program is well-typed and what type expressions ha ...
s. The usual categorical morphism notation
is replaced with
typing context notation
.
Identity:
:
Composition:
:
Unit type
In the area of mathematical logic and computer science known as type theory, a unit type is a type that allows only one value (and thus can hold no information). The carrier (underlying set) associated with a unit type can be any singleton set. ...
(
terminal object):
:
Cartesian product:
:
Left and right projection:
:
Currying:
:
Application:
:
Finally, the equations of the category are
*
*
*
*
(if well-typed)
*
*
*
*
*
*
*
*
These equations imply the following
-laws:
*
*
Now, there exists such that
iff
is provable in implicational intuitionistic logic.
Examples
Thanks to the Curry–Howard correspondence, a typed expression whose type corresponds to a logical formula is analogous to a proof of that formula. Here are examples.
The identity combinator seen as a proof of ''α'' → ''α'' in Hilbert-style logic
As an example, consider a proof of the theorem . In
lambda calculus
In mathematical logic, the lambda calculus (also written as ''λ''-calculus) is a formal system for expressing computability, computation based on function Abstraction (computer science), abstraction and function application, application using var ...
, this is the type of the identity function and in combinatory logic, the identity function is obtained by applying S = ''λfgx''.''fx''(''gx'') twice to K = ''λxy''.''x''. That is, . As a description of a proof, this says that the following steps can be used to prove :
* instantiate the second axiom scheme with the formulas , and to obtain a proof of ,
* instantiate the first axiom scheme once with and to obtain a proof of ,
* instantiate the first axiom scheme a second time with and to obtain a proof of ,
* apply modus ponens twice to obtain a proof of
In general, the procedure is that whenever the program contains an application of the form (''P'' ''Q''), these steps should be followed:
# First prove theorems corresponding to the types of ''P'' and ''Q''.
# Since ''P'' is being applied to ''Q'', the type of ''P'' must have the form and the type of ''Q'' must have the form for some and . Therefore, it is possible to detach the conclusion, , via the modus ponens rule.
The composition combinator seen as a proof of (''β'' → ''α'') → (''γ'' → ''β'') → ''γ'' → ''α'' in Hilbert-style logic
As a more complicated example, let's look at the theorem that corresponds to the B function. The type of B is . B is equivalent to (S (K S) K). This is our roadmap for the proof of the theorem .
The first step is to construct (K S). To make the antecedent of the K axiom look like the S axiom, set equal to , and equal to (to avoid variable collisions):
:
:
Since the antecedent here is just S, the consequent can be detached using Modus Ponens:
:
This is the theorem that corresponds to the type of (K S). Now apply S to this expression. Taking S as follows
:,
put , , and , yielding
:
and then detach the consequent:
:
This is the formula for the type of (S (K S)). A special case of this theorem has :
:
This last formula must be applied to K. Specialize K again, this time by replacing with and with :
:
:
This is the same as the antecedent of the prior formula so, detaching the consequent:
:
Switching the names of the variables and gives us
:
which was what remained to prove.
The normal proof of (''β'' → ''α'') → (''γ'' → ''β'') → ''γ'' → ''α'' in natural deduction seen as a ''λ''-term
The diagram below gives proof of in natural deduction and shows how it can be interpreted as the λ-expression of type .
a:β → α, b:γ → β, g:γ ⊢ b : γ → β a:β → α, b:γ → β, g:γ ⊢ g : γ
——————————————————————————————————— ————————————————————————————————————————————————————————————————————
a:β → α, b:γ → β, g:γ ⊢ a : β → α a:β → α, b:γ → β, g:γ ⊢ b g : β
————————————————————————————————————————————————————————————————————————
a:β → α, b:γ → β, g:γ ⊢ a (b g) : α
————————————————————————————————————
a:β → α, b:γ → β ⊢ λ g. a (b g) : γ → α
————————————————————————————————————————
a:β → α ⊢ λ b. λ g. a (b g) : (γ → β) → γ → α
————————————————————————————————————
⊢ λ a. λ b. λ g. a (b g) : (β → α) → (γ → β) → γ → α
Other applications
Recently, the isomorphism has been proposed as a way to define search space partition in
genetic programming
Genetic programming (GP) is an evolutionary algorithm, an artificial intelligence technique mimicking natural evolution, which operates on a population of programs. It applies the genetic operators selection (evolutionary algorithm), selection a ...
. The method indexes sets of genotypes (the program trees evolved by the GP system) by their Curry–Howard isomorphic proof (referred to as a species).
As noted by
INRIA research director Bernard Lang, the Curry-Howard correspondence constitutes an argument against the patentability of software: since algorithms are mathematical proofs, patentability of the former would imply patentability of the latter. A theorem could be private property; a mathematician would have to pay for using it, and to trust the company that sells it but keeps its proof secret and rejects responsibility for any errors.
Generalizations
The correspondences listed here go much farther and deeper. For example, cartesian closed categories are generalized by
closed monoidal categories. The
internal language of these categories is the
linear type system (corresponding to
linear logic), which generalizes simply-typed lambda calculus as the internal language of cartesian closed categories. Moreover, these can be shown to correspond to
cobordisms, which play a vital role in
string theory.
An extended set of equivalences is also explored in
homotopy type theory. Here,
type theory
In mathematics and theoretical computer science, a type theory is the formal presentation of a specific type system. Type theory is the academic study of type systems.
Some type theories serve as alternatives to set theory as a foundation of ...
is extended by the
univalence axiom ("equivalence is equivalent to equality") which permits homotopy type theory to be used as a foundation for all of mathematics (including
set theory
Set theory is the branch of mathematical logic that studies Set (mathematics), sets, which can be informally described as collections of objects. Although objects of any kind can be collected into a set, set theory – as a branch of mathema ...
and classical logic, providing new ways to discuss the
axiom of choice
In mathematics, the axiom of choice, abbreviated AC or AoC, is an axiom of set theory. Informally put, the axiom of choice says that given any collection of non-empty sets, it is possible to construct a new set by choosing one element from e ...
and many other things). That is, the Curry–Howard correspondence that proofs are elements of inhabited types is generalized to the notion of
homotopic equivalence of proofs (as paths in space, the
identity type or
equality type of type theory being interpreted as a path).
''Homotopy Type Theory: Univalent Foundations of Mathematics''
(2013) The Univalent Foundations Program. Institute for Advanced Study
The Institute for Advanced Study (IAS) is an independent center for theoretical research and intellectual inquiry located in Princeton, New Jersey. It has served as the academic home of internationally preeminent scholars, including Albert Ein ...
.
References
Seminal references
*
*
* De Bruijn, Nicolaas (1968), ''Automath, a language for mathematics'', Department of Mathematics, Eindhoven University of Technology, TH-report 68-WSK-05. Reprinted in revised form, with two pages commentary, in: ''Automation and Reasoning, vol 2, Classical papers on computational logic 1967–1970'', Springer Verlag, 1983, pp. 159–200.
* .
Extensions of the correspondence
*
*
*
*
* .
* .
* .
* . (Full version of the paper presented at ''Logic Colloquium '90'', Helsinki. Abstract in ''JSL'' 56(3):1139–1140, 1991.)
* .
* . (Full version of a paper presented at ''Logic Colloquium '91'', Uppsala. Abstract in ''JSL'' 58(2):753–754, 1993.)
* .
* .
* . (Full version of a paper presented at ''2nd WoLLIC'95'', Recife. Abstract in ''Journal of the Interest Group in Pure and Applied Logics'' 4(2):330–332, 1996.)
* , concerns the adaptation of proofs-as-programs program synthesis to coarse-grain and imperative program development problems, via a method the authors call the Curry–Howard protocol. Includes a discussion of the Curry–Howard correspondence from a Computer Science perspective.
* . (Full version of a paper presented at ''LSFA 2010'', Natal, Brazil.)
Philosophical interpretations
* . (Early version presented at ''Logic Colloquium '88'', Padova. Abstract in ''JSL'' 55:425, 1990.)
* . (Early version presented at ''Fourteenth International Wittgenstein Symposium (Centenary Celebration)'' held in Kirchberg/Wechsel, August 13–20, 1989.)
* .
Synthetic papers
* , the contribution of de Bruijn by himself.
*, contains a synthetic introduction to the Curry–Howard correspondence.
* , contains a synthetic introduction to the Curry–Howard correspondence.
*
*
Books
*
*
*
*
*
*, reproduces the seminal papers of Curry-Feys and Howard, a paper by de Bruijn and a few other papers.
* , notes on proof theory and type theory, that includes a presentation of the Curry–Howard correspondence, with a focus on the formulae-as-types correspondence
*, notes on proof theory with a presentation of the Curry–Howard correspondence.
*.
*, concerns the adaptation of proofs-as-programs program synthesis to coarse-grain and imperative program development problems, via a method the authors call the Curry–Howard protocol. Includes a discussion of the Curry–Howard correspondence from a Computer Science perspective.
*
*.
Further reading
* — gives a categorical view of "what happens" in the Curry–Howard correspondence.
External links
Howard on Curry-Howard
The Curry–Howard Correspondence in Haskell
The Monad Reader 6: Adventures in Classical-Land
Curry–Howard in Haskell, Pierce's law.
{{DEFAULTSORT:Curry-Howard Correspondence
1934 in computing
1958 in computing
1969 in computing
Dependently typed programming
Proof theory
Logic in computer science
Type theory
Philosophy of computer science