MENTAL
 Main Menu
 Applications
 Logic
 Curry-Howard Correspondence


Curry-Howard Correspondence
 CURRY-HOWARD
CORRESPONDENCE

"Types are propositions. Programs are demonstrations" (Haskell Curry).



Curry-Howard Correspondence

The Curry-Howard correspondence (or isomorphism) −by its proponents, the logicians Haskell Curry and William Alvin Howard− is considered one of the great discoveries in logic. It is based on a surprisingly simple idea but with profound consequences for the relationship between logic and computer science: For example, if int is the type of integers, the associated proposition is intp "integers are inhabited". If 3 is an integer, then this number is the demonstration of the proposition intp. If a programming language has integers, that is, if it has type int, then intp is V (true) and F (false) if it does not.

Once we have logical propositions associated with types, it is possible to define compound propositions (with logical operators) based on types: Given the established correspondence between types and propositions, the notation is usually unified: a type A is equivalent to the proposition A. Therefore: A program that performs a proof has some input types (corresponding to propositions) and an output type (corresponding to the proposition to be proved).

To prove a logical theorem T, all we have to do is construct a type t based on the input types (which are axioms) that reflects the structure of the theorem, and then find an element that has that type t. Examples of logical theorems are The inverse Curry-Howard correspondence −hence an isomorphism− is: The Curry-Howard correspondence connects:
The Curry-Howard correspondence and the unification between logic and computer science

It all started in 1934, when Haskell Curry interpreted the type as a proposition and an element of the type as a proof of the proposition. In 1958, Curry concluded that types made it possible to express intuitionistic logic. Later, William Alvin Howard discovered that a large number of intuitionistic logics could also be expressed, including higher-order intuitionistic logic. In 1969, Howard discovered a formal analogy between the programs of the lambda calculus and the proofs of natural deduction. The Curry-Howard correspondence has been the driving force behind a large spectrum of new research. In particular, it has led to a new class of formal systems that can act both as proof systems and as programming languages. This field of research is often referred to as "modern type theory". It has even been speculated that the Curry-Howard correspondence could be instrumental in achieving a common foundation for mathematical logic and computer science.


Specification in MENTAL

First, we must differentiate between class and type: A property can be intrinsic (the one denoted by the element itself) or extrinsic (associated from outside the element). An extrinsic property is also called an attribute or predicate.

] If x is an element of a class C and its corresponding type is t, the property is satisfied: For example, if we have that D={0...9} is the set of all digits, and we call d its corresponding type, we have the conditional equivalence In the Curry-Howard correspondence, if an element is of type t, that implies the proposition t≠∅ (t is inhabited or t is not empty). In MENTAL, if an element x is of type t], x/t and ((x/t)? = α) are satisfied.

In MENTAL we have the following features:
MENTAL and logical unification - computer science

Since the time of Gödel, Curry, Church, Turing, Shannon and von Neumann, the foundations of computer science have been intrinsically linked to mathematics, especially mathematical logic. This historical link was reinforced by the discovery of the Curry-Howard correspondence, which provided a direct connection between two disciplines: programming and formal logic.

However, this link has not been considered sufficient, as it was desired to achieve a complete isomorphism between programming and classical logic. Three main alternatives were tried. Some authors started from programming, selecting particular characteristics, as a foundation and tried to adapt classical logic to a type system. Other authors chose the opposite path: they chose logic as the foundation and tried to derive new programming paradigms, fields or concepts. Finally, a third group focused on the search for a common middle ground between programming and logic.

In essence, the problems were twofold: 1) how to do computations with logic; 2) how to do logic with computation.

MENTAL provides a very simple answer to these problems. The answer is simply to transcend logic and computation, so that the connection between computation and logic is made, not at the horizontal level, but at the vertical or deep level: through the primary archetypes: Thus, it is not necessary to look for a computational content to classical logic.



Bibliography