Proofs are Programs

Key Contribution Filter Key Contribution topics

Share This
table started by warren for the Proofs are Programs Base
There is no user-contributed description yet.
+

x

   
x Key concept x Date x Contributors x Why this is interesting x Key artifacts
x name x image x article
+

Do you know something that's missing from this view? Add it!

If you have a list you can use our wizard to match it with topics that may already be in Freebase.
Go to the import tool »
Russell's paradox Russell1907-2
In the foundations of mathematics, Russell's paradox (also known as Russell's antinomy), discovered by Bertrand Russell in 1901, showed that the naive set theory of Frege leads to a contradiction. It might be assumed that, for any formal criterion,...
1901 Bertrand Russell Showed that the naive set theory of Frege leads to a contradiction -- that the set of all sets cannot contain itself. This lead the way to type theory, which allows the contradiction to be avoided.  
Type inference  
Type inference, or implicit typing, refers to the ability to deduce automatically the type of a value in a programming language. It is a feature present in some strongly statically typed languages. It is often characteristic of — but not limited to ...
1978 J. Roger Hindley This is the Curry-Howard correspondence in action -- used to deduce the types of polymorphic programs from their structure and primitive operations. First discovered by the logician Hindley in 1969 and re-discovered by the computer scientist Milner in 1978. ML
Robin Milner
Symbolic logic  
Symbolic logic is the area of mathematics which studies the purely formal properties of strings of symbols. The interest in this area springs from two sources. First, the symbols used in symbolic logic can be seen as representing the words used in...
1879 Gottlob Frege Revolutionized the world of logic with his book Begriffsschrift which introduced the concept of symbolic logic, thus ending the era of Aristotelian logic of the preceeding 2000 years. Begriffsschrift
Curry–Howard correspondence Coq plus comm screenshot
The Curry–Howard correspondence is the direct relationship between computer programs and mathematical proofs. Also known as Curry–Howard isomorphism, proofs-as-programs correspondence and formulae-as-types correspondence, it refers to the...
1969 Haskell Curry Howard put together the work of Curry and Feys in 1969: proofs are programs, types are propositions, realizing the syntactic analogy between systems of formal logic and computational calculi. The formulae-as-types notion of construction
William Alvin Howard Formulae-as-types (1969 mimeograph)
Intuitionistic type theory  
Intuitionistic type theory, or constructive type theory, or Martin-Löf type theory or just Type Theory is a logical system and a set theory based on the principles of mathematical constructivism. Intuitionistic type theory was introduced by Per...
1971 Per Martin-Löf Martin-Lof extended the Curry-Howard correspondence to predicate logic by introducing dependent types, that is types which contain values. His Intuitionistic type theory internalizes the interpretation of intuitionistic logic proposed by Brouwer, Heyting and Kolmogorov.  
Lambda calculus  
In mathematical logic and computer science, lambda calculus, also written as λ-calculus, is a formal system for function definition, function application and recursion. It was introduced by Alonzo Church in the 1930s as part of an investigation into...
1932 Alonzo Church Church developed the theory of lambda calculus as a new formulation of logical deduction, and in 1936 realized that lambda terms could be used to express every function that could ever be computed by a machine. (Turning was his student at Princeton from 1936-1938.) Church reduced all calculation to the notion of substitution.  
Typed lambda calculus  
A typed lambda calculus is a typed formalism that uses the lambda-symbol (λ) to denote anonymous function abstraction. In this context, types are usually objects of a syntactic nature that are assigned to lambda terms; the exact nature of a type...
1940 Alonzo Church Church introduced the typed lambda calculus to circumvent the problem of Russel's paradox as it applied to Frege's logic. This became the basis for typed programming languages like Algol and functional languages such as Haskell.  
Type polymorphism  
In computer science, polymorphism is a programming language feature that allows values of different data types to be handled using a uniform interface. The concept of parametric polymorphism applies to both data types and functions. A function that...
1972 Jean-Yves Girard Girard showed that the second-order propositional logic can be projected into the second-order polymorphic lambda calculus with quantifiers over type variables. System F
Type polymorphism  
In computer science, polymorphism is a programming language feature that allows values of different data types to be handled using a uniform interface. The concept of parametric polymorphism applies to both data types and functions. A function that...
1974 John C. Reynolds Reynolds showed that the second-order polymorphic lambda calculus can be projected into the second-order propositional logic with no loss of information.  
Type polymorphism  
In computer science, polymorphism is a programming language feature that allows values of different data types to be handled using a uniform interface. The concept of parametric polymorphism applies to both data types and functions. A function that...
1975 Robin Milner   A type theory of polymorphism in programming
Subformula property     1934 Gerhard Gentzen Gentzen's subformula property eliminated diversions in the proof process and demonstrated the property of logical consistency. This paved the way for proofs to be interpreted as programs.  
Sequent calculus Excluded middle proof
In proof theory and mathematical logic, sequent calculus is a widely known family of formal systems sharing a certain style of inference and certain formal properties. The first sequent calculi, systems LK and LJ, were introduced by Gerhard Gentzen...
1934 Gerhard Gentzen Gentzen could only demonstrate the subformula property and proof simplification for the sequent calculus, not for natural deduction.  
Natural deduction logic  
A natural deduction is an instruction on how to use binary logic to move from one line to another, during a linear sequential proof. Every natural deduction, is one of the tautologies of propositional logic. As an example of a natural deduction,...
1934 Gerhard Gentzen Gentzen simplified Frege's system of deduction to reflect various axioms within the structure of the inference rules as introduction and elimination pairs.  
Natural deduction logic  
A natural deduction is an instruction on how to use binary logic to move from one line to another, during a linear sequential proof. Every natural deduction, is one of the tautologies of propositional logic. As an example of a natural deduction,...
1956 Dag Prawitz Prawitz showed how to simplify Gentzen's natural deduction proofs directly.  
Combinatory logic  
Combinatory logic is a notation introduced by Moses Schönfinkel and Haskell Curry to eliminate the need for variables in mathematical logic. It has more recently been used in computer science as a theoretical model of computation and also as a basis...
1956 Haskell Curry Curry and Feys defined combinators, a simplified variant of lambda expressions. Curry noted a correspondence between the types of the combinators and the laws of logic as formulated by Hilbert.  
Robert Feys
Peirce's law  
Peirce's law in logic is named after the philosopher and logician Charles Sanders Peirce. It was taken as an axiom in his first axiomatisation of propositional logic. In propositional calculus, Peirce's law says that ((P→Q)→P)→P. Written out, this...
1990 Timothy G. Griffin In 1990, Griffin showed that Peirce's Law is the type of the continuation operator call/cc in Scheme. This remarkable observation demonstrates the relevance of the Curry-Howard correspondence even to control operators in programming languages. A formulae-as-types notion of control
Peirce's law  
Peirce's law in logic is named after the philosopher and logician Charles Sanders Peirce. It was taken as an axiom in his first axiomatisation of propositional logic. In propositional calculus, Peirce's law says that ((P→Q)→P)→P. Written out, this...
1885 Charles Peirce Peirce axiomized propositional logic in the 19th century, and one of his axioms, now known as Peirce's law, implies the law of excluded middle. It wasn't until 115 years later that its relationship to programming languages was discovered.  
Curry–Howard correspondence Coq plus comm screenshot
The Curry–Howard correspondence is the direct relationship between computer programs and mathematical proofs. Also known as Curry–Howard isomorphism, proofs-as-programs correspondence and formulae-as-types correspondence, it refers to the...
2003 Philip Wadler Wadler shows the relationship between various programming language calling conventions to Gentzen's original sequent calculus. Call-by-value is dual to call-by-name
Edit Collection Schema
All topics in this collection are typed as Key Contribution
Use Data from this Collection
Choose a format:

Images and articles are not included in export files, which are limited to 1000 items. Complete data dumps are also available here.

Flag this Collection
Why do you want to flag this collection?