Talk:Curry–Howard correspondence

message: I have removed the term "Curry-Howard-Lambek" from the article as well as some weasel words "Some people refer to the Curry-Howard-Lambek" correspondence. The only place I am able to find the term Curry-Howard-Lambek is the nlab article on "computational trinitarianism" which makes some dramatic and sensational claims about how higher category theory, proof theory and programming language theory are but three perspectives on a single fundamental unifying phenomenon relating computation, logic and space. The hyperbolic language raises red flags for me as I think that it looks bad when Wikipedia articles are uncritical of sensationalist rhetoric. A second problem is that categorical treatments of type theory generally do not capture either beta reduction of programming languages or cut elimination in logics which are both central to the Curry-Howard correspondence.  — Preceding unsigned comment added by 100.11.110.225 (talk) 02:41, 13 October 2023 (UTC)
thread_title: Curry-Howard-Lambek

message: In the section Curry-Howard-Lambek correspondence there's a remark at the very end:
"Now, there exists t such that t:\!\!-~ \alpha_1 \times \ldots \times \alpha_n \vdash \beta iff \alpha_1, \ldots, \alpha_n \vdash \beta  is provable in implicational intuitionistic logic,."
No citation is offered.  This is incorrect -- to see why, just notice that \alpha_1 \times \alpha_2 \vdash \alpha_1 \times \alpha_2 is true in a CCC but its not true that \alpha_1 ,\alpha_2 \vdash \alpha_1 \times \alpha_2 in implicational intuitionistic logic.  The latter sentence is not even grammatical in implicational intuitionistic logic.
The relationship to intuitionistic logic is complicated; the logic provided corresponds to the fragment of intuitionistic logic with \top and \wedge, but not \bot and \vee.  Full intuitionistic logic corresponds to a calculus similar to the one presented, but for bicartesian categories.  I know this from folklore among logicians and independent research.  I will work on a citation.  -- Negacthulhu 10:04, 5 July 2010 (UTC)
thread_title:  An Error 

message: I've felt for some time that this article doesn't give a good introduction to the general reader of what the C-H isomorphism is really about.  I had started writing an article about the C-H isomorphism when this article was put up.  I haven't had an opportunity to finish mine, but perhaps someone would like to take it and use it, perhaps to supplement the article that is here now.
I've placed my partial draft at Curry-Howard isomorphism/Alt.  Please consider my version of that article to have been released under the terms of the GNU FDL.  I would be delighted if someone would complete it. -- Dominus 17:47, 13 May 2004 (UTC)
thread_title:  A Second Version 

message: I've taken these items from the main body: they shouldn't be public:
* Proof normalization
* Pierce's law as call-with-current-continuation cf. continuation
* Sequent calculus
* Product and union types analogous to and and or
* Exception types analogous to false
Also, I've charged in and moved the article from ...isomorphism to ...correspondence: it's my impression the latter is more common in the scientific literature, and it avoids the resulting sillinesses that arise when talking informally about an isomorphism. ---- Charles Stewart 18:29, 25 Aug 2004 (UTC)
replies: text: My impression was the opposite, and google finds five times as many hits for "isomorphism" as "correspondence". -- Dominus 21:50, 25 Aug 2004 (UTC)
replies: text:  I didn't try that.  Since a lot of these are Wikipedia mirros, it's not quite an unbiased test: I added the token "site:citeseer.ist.psu.edu" to the search and got 60 for correspondence and 167 for iso, which is a ratio of about 2.8.   Do you think the change should be reversed?  I'm running against the Wikipedia popularity policy here, but talking of correspondence rather than iso does relieve some tortured phrases. ---- Charles Stewart 22:41, 25 Aug 2004 (UTC)

text: Well in a very precise sense it is an isomorphism and therefore all the more remarkable. I've just run across this article and found it really doesn't express the most important part of the isomorphism (that it functions at the level of reductions as well). It needs considerable work. Francis Davey 22:24, 4 Dec 2004 (UTC)

text: The ideal WP article on this may be a way off. It should be a survey, initially, and certainly no more prescriptive than typical usage is (for example the Hilbert system business is not my approach, but I have seen in print someone saying it was a revelation etc.). I see there is now a compositionality article, which ought to be a help - but probably isn't right now. I like 'compilation' and Kolmogorov (i.e. that what CH does is to nail down some heuristics about solutions to problems in full gory syntactic detail). I used to think that 'compiler verification' was going to explain why we needed this (Chalst is going to think this all very naive, and others too, no doubt ...) until I realised that no one ever verifies compilers anyway. It's not hard to work out that four people looking at the article have come up with four perspectives; so this is time to knuckle down to some classic wiki editing that deals even-handedly withe everything that gets raised. Charles Matthews 17:14, 7 Dec 2004 (UTC)

text: My own impression, that there isn't an 'official' isomorphism, is reinforced rather than otherwise by all that. We could of course just call the page 'Curry-Howard' and have done. And the history should be on the page. Charles Matthews 08:30, 7 Dec 2004 (UTC)
replies: text: Certainly it should have a history section, and as noted above the rewriting aspect is weak.  To draw out the properly logical dimension of the rewriting aspect depends on making some account of Prawitz's inversion principle, which is a long put-off task for me.  As for the name, what about just formulae-as-types?  That actually occurs as a substring of Howard's manuscript title.---- Charles Stewart 11:16, 7 Dec 2004 (UTC)

text: We're a bit constrained by the principle that the title should be the common name. (Cf. recent hassles with Hausdorff dimension - it is well established here that the article title is not the place to deal with correct attribution.) I don't really like formulae-as-types; I once put it to Martin Hyland that the proofs-as-programs level was more perspicuous, and he said it was much better. Anyway I would prefer C-H in the title, just because that's how the computer scientists habitually refer to it. Charles Matthews 11:53, 7 Dec 2004 (UTC)
replies: text: In any case, I don't think your suggestion changes anything for the worse, and since it splits the difference between isomorphism/correspondence I guess applying the move is a good thing.  If there are no objections, I'll apply the change tomorrow ---- Charles Stewart 12:45, 7 Dec 2004 (UTC)
thread_title:  To Dos & Name change 

message: I've got a long past with this topic, so much so that I probably can't be objective about certain details: my doctorate was on the so-called classical Curry-Howard correspondence and begins with a rant about the misleading way the topic is made use of in many works in the field.  While the centre of the topic was Bill Howard's 1969 manuscript, which indeed presented an isomorphism between two formal systems, there are reasons to prefer not to call the topic the Curry-Howard isomorphism, and these are some of mine:
*Howard's manuscript was called The formulae-as-types notion of construction, the terminology formulae-as-types correspondence is closest to the source;
*The topic does not consist in the first place of showing an isomosophism, rather it consists of establishing first an intuitive observation of a correlation between certain notions of construction in type theory, and certain patterns of inference in logic; the presentation of an isomorphism is rather a virtuoso flourish that adds force to this observation.  To insist on talk of isomorphism obscures the most important part, which is the intuitive and I think necessarily informal part;
*There are many important aspects of the theory that cannot be put into isomorphism, because what would have to be regarded as the logical counterpart of the type theoretic construction makes no logical sense: the clearest development of this problem is in Zhaohui Luo's Computation and Reasoning, where he discusses the problems applying the formulae-as-types correspondence to the Extended Calculus of Constructions (essentially one cannot mix dependent sum with System F like polymorphism and expect the result to be entirely logic-like);
*There's something artificial about Howard's isomorphism: while the simply-typed lambda calculus is a calculus of an obviously fundamental nature, there's something forced about the logical end, namely the idea of labelling assumptions and implies elimination rules.  The labels are needed for the isomorphism to work, but before the work of Curry and Howard, no-one working with natural deduction thought to keep track of these; instead the assumption was simply that all assumptions matching the implies elimination rule are discharged.
As a last point, if I am convinced that 'Curry-Howard isomorphism' is the more widely used term, the people whose judgement I respect most mostly prefer 'formulae-as-types correspondence'; and at the risk of sounding elitist, I think we should prefer the better term even when it is less popular.  My preference for this page are:
#Formulae-as-types correspondence;
#Curry-Howard correspondence;
#Curry-Howard isomorphism;
with the latter only under sufferance; also note that the phrase 'Curry-Howard' is disrespectful to those logicians who contributed fundamental insights; I would particularly single out William Tait in this respect. ---- Charles Stewart 02:26, 7 Dec 2004 (UTC)
replies: text: My own impression, that there isn't an 'official' isomorphism, is reinforced rather than otherwise by all that. We could of course just call the page 'Curry-Howard' and have done. And the history should be on the page. Charles Matthews 08:30, 7 Dec 2004 (UTC)
replies: text: Certainly it should have a history section, and as noted above the rewriting aspect is weak.  To draw out the properly logical dimension of the rewriting aspect depends on making some account of Prawitz's inversion principle, which is a long put-off task for me.  As for the name, what about just formulae-as-types?  That actually occurs as a substring of Howard's manuscript title.---- Charles Stewart 11:16, 7 Dec 2004 (UTC)

text: We're a bit constrained by the principle that the title should be the common name. (Cf. recent hassles with Hausdorff dimension - it is well established here that the article title is not the place to deal with correct attribution.) I don't really like formulae-as-types; I once put it to Martin Hyland that the proofs-as-programs level was more perspicuous, and he said it was much better. Anyway I would prefer C-H in the title, just because that's how the computer scientists habitually refer to it. Charles Matthews 11:53, 7 Dec 2004 (UTC)
replies: text: In any case, I don't think your suggestion changes anything for the worse, and since it splits the difference between isomorphism/correspondence I guess applying the move is a good thing.  If there are no objections, I'll apply the change tomorrow ---- Charles Stewart 12:45, 7 Dec 2004 (UTC)
thread_title: The naming problem

message: The basic idea of logic programming is that axioms are programs and proofs are program executions, i.e. computations. As far as I know, there has been no correspondence shown between these different ideas.Logperson (talk) 12:39, 26 February 2008 (UTC)
replies: text: Of course, as you already (or probably should) know: the relations between the two fall under the header of the Automath project and all other endeavors related to or inspired by it. So, your request is really an implicit request to include a link in the main article to Automath.  — Preceding unsigned comment added by 129.89.251.51 (talk) 21:49, 7 October 2011 (UTC)
thread_title:  Relationship with logic programming 

message: I'm having a pretty hard time reading this article.  I have only a vague idea of what intuitionistic logic is, I don't know what "Hilbert-style" logic is, and I only know what "the empty type" and "the singleton type" are from the discussion later in the article that explains that they are bottom and unit, which I have vague ideas about from ⓐ trying to read papers on formal logic and ⓑ using OCaml.
:The simplest remedy for this is to simply link everything up to Intuitionistic_logic, Heyting_algebra, Complete_heyting_algebra (which is the same thing as a "locale", which in turn is the type of lattice the Open_sets of a Topological_space form; also see Birkhoff's_representation_theorem, Pointless_toplogy and Stone_duality), Typed_lambda_calculus, Categorical_abstract_machine, Category_theory, Categorical_logic, Topos, Proof_theory, Sequent_calculus, Natural_deduction and Gentzen. There's never a reason, opportunity (or excuse) to say "I don't know" when you're in the middle of the an Encyclopedia(!)
But I know what the lambda-calculus is, I have some experience programming in OCaml, and I've proved simple theorems in first-order predicate logic textbook exercises, although I don't know which first-order predicate logic.  Last year I wrote a λ-calculus interpreter that works by reducing λ-expressions to combinator graphs (although I had forgotten this was called "abstraction elimination") and then performing combinator-graph reduction to evaluate them.
So I have the idea, perhaps unreasonable, that I ought to be able to read an article introducing the Curry-Howard isomorphism.  A friend of mine explained some of the basics to me some years ago: that you can write functions with type α × β → α, or α × β → β, or α → β → α, or α → β → β, or α × (α → β) → β, but not functions of type, say, α → β, because then what would type β be?  Nor can you write a function of type α × (β → α) → β, because that function doesn't have any way to come up with any particular value of type β; all it has is an input that could transform some value of type β to a value of type α, if you had a β to start with.  And that this corresponds pretty much exactly to the 
But the article doesn't seem to be written with people like me in mind.  It assumes a lot of background knowledge that I don't have, and without which I am unable to make much sense of the article.  I have tried to read papers on the application of symbolic logic to programming occasionally for ten years now, without success.
On the perhaps vain hope that this is merely an oversight, rather than that the article is intended for people who already know a lot about symbolic logic, I am listing the things that I wish were explained in the article:
* What are "product types" (tuple types?), "sum types" (discriminated unions?), "the empty type" (an empty set, i.e. the absence of a result for programs that crash or hang?) and "the singleton type"?
* What are "dependent product" and "dependent sum"?
* Are the formulas "α → (β → α)" and "(α → (β → γ)) → ((α → β) → (α → γ))" the only possible axiom schemes? ("schemas"?)
* Is "Γ₁, α, Γ₂ ⊢ α" supposed to be parsed as "(Γ₁, α, Γ₂) ⊢ α" or as "Γ₁, α, (Γ₂ ⊢ α)"?  Do the commas mean "and"?  If so, why are there two Γs?
* In the table of inference rules, I am guessing that the things above the line are the sufficient conditions from which we can derive the things below the line?  But I thought the things on the left side of the ⊢ were the sufficient conditions for deriving the thing on the right side of the ⊢?  Are the horizontal line and ⊢ just different notations for the same thing?
* What does "Γ₁, x : α, Γ₂ ⊢ x : α" mean?  I guess the colon indicates that what comes before it is of the type that follows it?  Does this mean that we can deduce that x is of type α, or something else?  Or does it represent that we can compute the value of x itself, given its value?  I have the impression, perhaps false, that even if my other confusions about notation would be obvious to anyone who knew anything about logic, that the meaning of this side of the table is likely to only be comprehensible to someone who already understands the correspondence.
* I assume the "constructor" under "Programming side" refers to things like Just and Nothing, which construct a value of some type, and not the meaning of "constructor" from C++?  What is a "destructor" in that context, just any function that pattern-matches on values of such a type?
* In the example of proving α → α, in the first step, where do the formulas α, β → α, and α come from?  They clearly aren't the types of S, K, and K.
I am restricting my complaints to sections that I feel I would have some hope of understanding if the notation and vocabulary were explained.  Perhaps placing some examples earlier in the article, before explaining the general principles, would help too.
If there is another article that explains this stuff, or if it is felt peripheral to the point of this article, maybe there could be a link early in the article saying, "The symbolic logic notation used in this article is briefly explained in some thousand-word-or-less article explaining the basics of the notation"?
I think that, in general, one of the things that makes an article encyclopedic is that it is accessible to the lay public.
I hope this is helpful, and I am grateful for the work of the article's many editors over the years in attempting to bring the Curry-Howard light to us unenlightened peons, even though their work has not been able to penetrate my thick skull. 
Kragen Javier Sitaker (talk) 10:54, 22 December 2008 (UTC)
replies: text: I think these are all good criticisms that should be addressed... One quick fix: it might help to read section 4 on natural deduction<->lambda calculus before reading section 3 on Hilbert-style deduction<->combinatory logic. It seems section 4 explains some of the notation used in section 3, such as the list notation for contexts...and in general lambda calculus/ND make a lot more sense than combinatory logic/Hilbert-style deduction ;) Perhaps section 4 was written first, and the order was reversed to reflect the chronological order? From an expository point-of-view, I think it would be best to explain ND<->λ first, since both sides (or at least the right-) are most familiar. Noamz (talk) 08:39, 30 September 2009 (UTC)
thread_title:  Who is the audience? 

message: The second paragraph of the first section ends with, "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." This seems like a non sequitur. What is a "form of logic programming" supposed to mean? Functional programming? Noamz (talk) 08:15, 30 September 2009 (UTC)
thread_title:  Minor question on Origin, scope, and consequences 

message: I'm not sure it's a good idea to talk about Church vs Curry and intersection/union types so soon.  Currently the article states only that there is a choice of how to interpret the universal and existential quantification, but this applies just as well in the binary case of conjunction and disjunction.  So I think it would be better to discuss intersection and union types (both binary & infinitary versions) either in a later section, or perhaps leave them out of the article entirely (because I don't think there is a well-established answer as to what they correspond on the logic side). Noamz (talk) 08:26, 30 September 2009 (UTC)
replies: text: Agreed.  I've just read that part of the article for the first time, and I think at best it is confusing, at worst it is wrong.  The links to "intersection types" and "union types" don't help, because they only talk about binary intersections and unions, which is the normal meaning of the term.  It seems that what is meant is intersection (or union) indexed by an element of a type - which seems like a dependent type to me, and that's what I'm used to seeing them called even when they are curry-style.  Church vs curry affects what kinds of expressions are in the language, but it doesn't affect the structure of the types.  I think leaving out this distinction is best unless someone has a good reference for why it's important to make it.  —Preceding unsigned RowanD (talk) 07:33, 19 July 2010 (UTC)
thread_title:  Church vs Curry in General Formulation 

message: Hi, Thank you if you can answer!
I'm living in France and try to learn mathematical logic on french and english wikipedia ,because mathematics fascinate me and I got interested in Automated theorem proving ...The question may appear to be stupid, but I don't understand what does it permit to use such a correspondence in proof assistant? From what I understood, it can be useful for normalisation of deductions ( changing deduction to one which is nicer), but I don't understand how it can permit to more easily prove that a statement is true or false?
I'll be very grateful if you can answer me!
Thank you for all of you for having written this page.
--Nicobzz (talk) 16:28, 23 December 2010 (UTC)
replies: text: It means you can have a computer do the proof for you, instead of doing it by hand.  It also means that when you have a proof, then you also have an algorithm, and so maybe you can use that algorithm to compute something useful.  You can also automatically search for proofs, using, for example, genetic algorithms. More generally, simply being aware of the correspondence makes it easier to think clearly about what one is actually doing. 99.153.64.179 (talk) 21:24, 26 June 2013 (UTC)
thread_title: What is the interest in using of The curry-howard correspondence for proof assistant for instance Coq?

message: At the risk of making this article longer, there should be some quick review of homotopy type theory which, one could say, is version 2.0 of the ideas here.  After reviewing a bunch of basic type-theory articles at WP (e.g. product type, dependent type) its woefully clear that these are lacking as compared to what can be found in e.g. chapter 1 of the HoTT book. The ncatlab website one-ups the HoTT book in these areas, e.g.  by not only defining terms but also showing how category theory models some of these ideas from type theory.  So, I guess I'm saying that each one of these correspondences could be worked up into a full-fledged article: e.g. how a dependent product type is like an universal quantifier, worked out in detail.   This correspondence goes even further: John Baez has an article "Rosetta Stone" which notes that cartesian-closed cats are generalized by symmetric monoidal categorys; that the internal language of CCC's being simply typed lambda calc is similarly generalized by linear logic, and that both of these correspond in turn to cobordisms. (The mind-bender is, of course, that cobordisms underlie string theory, and homotopy underlies K-theory so the connections/equivalences/etc are... fascinating?) So basically, the correspondence described here is broader/deeper/wider than this article lets on, and even the basics here can certainly be articulated in much greater detail. 99.153.64.179 (talk) 21:18, 26 June 2013 (UTC)
replies: text: I just now added a tame version of above to the end of the article. Much work is still needed on many other articles; besides the many different basic type articles, but also these red links: equality type identity type which eventually should lead to univalence axiom, but also  more simply judgement (type theory) judgement (logic) judgement (sequent calculus) to discuss the internal/external split of reasoning about logic. And inhabited type  is a redlink.  99.153.64.179 (talk) 22:17, 26 June 2013 (UTC)
thread_title:  Homotopy type theory 

message: 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) : (β → α) -> (γ → β) -> γ → α
Started to format with LaTeX, but I failed.
\frac{a:\beta\to\alpha,\ b:\gamma\to\beta,\ g:\gamma \mathop{\ \vdash\ }b:\gamma\to\beta\qquad\qquad a:\beta\to\alpha,\ b:\gamma\to\beta\mathop{\ \vdash\ } g:\gamma}{\frac{a:\beta\to\alpha\mathop{\ \vdash\ }}{\mathop{\ \vdash\ }}}
I do not know how to do this without the \infer macro
I also think that Bfgx=f(gx) where x : α, g : α → β, f : β → γ, Bfg : α → γ is more familiar for  programmers and those who know Bfg  as f.g
If I failed to fix this, what to say my intent to build commuting diagrams.
maybe someone more skilled than me can make this  article more readable  — Preceding unsigned comment added by 2806:107E:4:15E:218:DEFF:FE2B:1215 (talk) 10:32, 27 May 2017 (UTC)
thread_title:  I have tried to format this, because I can not read it, but I gave up