Talk:Combinatory logic

message: Is this the same subject as what is called "combinatory" logic?  "Combinatorial" usually means "pertaining to combinatorics"; is the same meaning intended here?
-- Mike Hardy
It is not about combinatorics. Combinators just combine together more terms, that's the reason of this name. --Blaisorblade (talk) 14:24, 6 January 2008 (UTC)
thread_title:  About combinatorics 

message: The title is wrong: it should be "combinatory logic". See for instance http://catalog.loc.gov/cgi-bin/Pwebrecon.cgi?Search_Arg=combinatorial+logic&Search_Code=SUBJ_&PID=14368&CNT=25&BROWSE=21&HC=18&SID=1 . "Combinatorial logic" is often used for boolean logic used in circuit design. I am renaming. AxelBoldt 19:50 Nov 23, 2002 (UTC)
Thanks.  Dominus 20:04 Nov 23, 2002 (UTC)
:Other title for this logic is Illative Combinatory Logic, briefly mentioned in Henk Barendregt Lambda Calculus as far as I remember. Addition to the article is done!  — Preceding unsigned comment added by Elias (talk • contribs) 15:00, 30 March 2011 (UTC)
replies: text: I reverted this change after reviewing appendix b of Barendregt Lambda Calculus. ILC is other Combinatory Logic, should be included either in other article or as a section in this one.  — Preceding unsigned comment added by Elias (talk • contribs) 03:37, 31 March 2011 (UTC)
thread_title:  Wrong title 

message: Wait a minute! Just being equivalent isn't enough -- there could still be lambdas in there! I changed the rule, but someone better than I should change the commentary.) 64.0.112.160
: 64.0.112.160 fixed the definition of T[ ]. I applied the same correction in section "Explanation of the T[ ] transformation". Hugo Herbelin (talk) 13:21, 23 December 2007 (UTC)
thread_title: ('''K''' ''E'') if ''x'' does not appear free in ''E''

message: There is a bad tendency for Wikipedia entries to take one view of something, and word things as if "that's the way it is".
I fixed the wording to say that 'one' way to view it is as equivalent to the Lambda calculus, and give another view and a reference to support it.
I, for reasons obvious to any who know me, chose a recent reference that has a good bibliography on some of it.  (There are some notes in my websites modal logic axioms pages that cover part of this.)
However, this is still a bit incomplete...  since it was in some reasonable sense a competitor of Lambda Calculus before the equivalence was proven.  There were, at the time, many different (competing) models of computation.
The "combinators as logic" view is common in early papers discussing for which systems Merideth's condensed detachment is complete. (And the interesting result that the completeness of Condensed Detachment depends on the axioms one is using for the system, and not on which logic system you have. See, for example [] or Hindley's book that is being reviewed there. )
The wikipedia pages are skimpy on any of the historical development...  But give the recent rise of Condensed Detachment in current computer investigations of minimal axiom sets for systems, there really ought to be (in my opinion) a page on Condensed Detachment and on Crue Merideth.
(See, for example, "New Elegant Axiomatizations of Some Sentential Logics " by Branden Fitelson (2001), [] and the related pages)
-- User:Nahaj
I forgot I had this comment out here...  Update:  There is now a Condensed Detachment page. Nahaj 17:47, 16 January 2006 (UTC)
thread_title:  Multiple views of the Lambda calculus 

message: Is the substitution syntax incorrect?  I think "E[a/v]" should be "E[v/a]" ... i.e. the variable comes first.
The page currently shows:
(λv.E a) => E[a/v]
On the Lambda calculus page, the following syntax is used for substitution:
((λ V. E ) E' ) == E [V/E' ]
--Ingenuus 05:31, 5 Jun 2005 (UTC)
replies: text: The usual reading of a construction like "E[a/v]" is: Substitute "a" for "v" in "E". Hence, since we are replacing the v's by a's the current notation is correct. It was wrong on the Lambda Calculus page. I changed it to the more readable: "E[v := a]" on both the Lambda Calculus page and the current page -- Koffieyahoo 14:04, 13 Jun 2005 (UTC)
thread_title:  Question about the substitution syntax 

message: The most straight forward representation of natural numbers is not mentioned:
 zero == identity
 add1 == (λx.λz.zFx)
 zero? == (λx.xT)
 sub1 == (λx.xF)
user:Jos.koot
(format changed by me to make the definitions more readable -- UKoch (talk) 19:18, 5 October 2012 (UTC)
thread_title: numerals

message: The article on the B,C,K,W system was in an awful state. I cut out some stuff, but now it is rather short. Leibniz 21:40, 10 November 2006 (UTC)
thread_title: B,C,K,W system

message: The article asserts:
:The purest form of this view is the programming language Unlambda, whose sole primitives are the S and K combinators and character IO.
This is no longer the case. Lazy K eliminates the I/O primitives by making the "lazy stream" technique mandatory (i.e. a program is just a function on infinite lists of natural numbers). So it is purer. Unfortunately the article Lazy K doesn't exist yet, so I'm not going to change the link just yet. Hairy Dude 03:48, 5 January 2007 (UTC)
replies: text: IIRC Lazy K was AfD'd half a year ago, along with a host of other esoteric languages. -- EJ 11:02, 5 January 2007 (UTC)
thread_title:  Lazy K is "purer" than Unlambda 

message: I am grateful to the author(s) of the section on the reduction of the {S,K} basis to the minimalist basis {X}, as that is a confused subject in Curry et al (1972), Barendregt (1984), and Wolfram (2003). I wish someone would devise an elegant axiom set in terms of X alone.
BTW, as best as I can determine, Wikipedia regrettably has no entry on Quine's predicate functors. 202.36.179.65 18:21, 2 March 2007 (UTC)
thread_title: The X combinator

message: The section on the lambda calculus is one of the biggest sections in the page - this doesn't seem quite right. What is says is fine, but I don't think it belongs here.
cheers,
Tom Conway
: I agree, lambda calculus has it own page and the contents of the section on lambda calculus in the combinatory logic page which is not already present in the lambda calculus page would better move there.
: Lambda calculus is of course relevant for comparison with combinatory logic but the section Combinatory logic in computing already mentions lambda calculus and already highlights the connection with combinatory logic, which looks enough for a smooth reading of section Combinatory calculi.
: Lambda calculus is largely referred to in section Completeness of the S-K basis. Not so much for defining abstraction elimination (which could be done internally to combinatory logic, as it it done in Barendregt, chapter 7), but for stating that CL and lambda calculus have a similar expressivity (in fact the same expressivity if extensionality is added). I believe that with a slight reworking in the way the S-K section is presented, an external reference to the lambda calculus page would suffice.
: I have a side question: does anyone know where does the terminology combinatory calculus (used in the article) come from? Is it a strict synonym of combinatory logic with a more computational flavor or does it denote a different approach of combinatory logic (e.g. based on a notion of reduction rather than on a notion of equational reasoning)? In any case, it would certainly be good to give a short explanation in the article of why the two terminologies are used. Hugo Herbelin (talk) 14:27, 23 December 2007 (UTC)
thread_title:  Why is there a section on lambda calculus? 

message: I added X' ≡ λx.(x K S K) as an example of a one point basis in CL without extensionality. Jos.koot (talk) 21:22, 12 December 2007 (UTC)
thread_title: One point basis

message: Would not it be preferable to move the discussion topics that are not in a proper section (i.e. those coming before the table of contents) within sections. I think it would make the discussion page clearer as all discussed topic would then be on the same level)? Hugo Herbelin (talk) 14:35, 23 December 2007 (UTC)
thread_title:  Metadiscussion: encapsulating isolated discussion topics into proper sections? 

message: SKI combinator calculus talks about the same exact topic of this page; however, the treatment is really different, but I do not think they should be separate pages. The merge however is nontrivial, and I do not think I would be able (if the merge is accepted) to do it by myself. Any opinion?
--Blaisorblade (talk) 14:17, 6 January 2008 (UTC)
replies: text: A merge would be much natural since the SKI calculus is a particular instance of combinatory logic. A preliminary step could be to say more clearly in the lead section that SKI is a complete system of combinators for combinatory logic, where the combinator I, which is redundant, is included in order to shorten a bit the size of expressions. --Hugo Herbelin (talk) 18:30, 6 January 2008 (UTC)

text: A merge doesn't make sense because the presnt article on combinatory logic is already too long. The article on combinatory logic should probably be broken down into a number of separate articles. A B Carter (talk) 21:59, 14 May 2008 (UTC)

text: oppose Too much information specific to both articles. Potatoswatter (talk) 05:14, 11 March 2010 (UTC)

text: oppose' The topics are related, but they have too much unique information and each deserves an article Joaogcosta 22:12, 21 June 2010 (UTC)
thread_title:  Merger proposal 

message: Here, in Combinatory logic#Conversion of a lambda term to an equivalent combinatorial term, the correct conversion seems to be
:T[λx.λy.(y x)] 
::        = T[λx.T[λy.(y x)]] (by 5)
::        = T[λx.(S T[λy.y] T[λy.x])] (by 6)
::        = T[λx.(S I       T[λy.x])] (by 4)
::        = T[λx.(S I       (K x))] (by 3 and 1)
::        = (S T[λx.(S I)] T[λx.(K x)]) (by 6)
::        = (S (S T[λx.S] T[λx.I])   T[λx.(K x)]) (by 6)
::        = (S (S (K S) (K I))   T[λx.(K x)]) (by 3 twice)
::        = (S (S (K S) (K I))   (S T[λx.K] T[λx.x])) (by 6)
::        = (S (S (K S) (K I))   (S (K K)   T[λx.x])) (by 3)
::        = (S (S (K S) (K I))   (S (K K)   I)) (by 4)
The application in this case should look like
:          (S (S (K S) (K I))   (S (K K)   I) x y)
::        = (S (K S) (K I) x  (S (K K)   I x) y)
::        = (K S x (K I x) (S (K K) I x) y)
::        = (S (K I x) (S (K K) I x) y)
::        = (K I x y (S (K K) I x y))
::        = (I y (S (K K) I x y))
::        = (y (S (K K) I x y))
::        = (y (K K x (I x) y))
::        = (y (K (I x) y))
::        = (y (I x))
::        = (y x)
Current example -- (S (K (S I))   (S (K K)   I)) -- reduces to (y x) as well, but it couldn't be constructed by applying the six rules literally.
Am I right? Ximaera (talk) 10:00, 3 August 2008 (UTC)
replies: text: No. Notice that the conversion rules are nondeterministic, there is more than one possibility how to construct a combinatorial term using the rules. In this particular example, it is possible express T[λx.(S I)] as (S T[λx.S] T[λx.I]) = (S (K S) (K I)) by rules 6 and 3 as you have done, but it is also possible to express it directly as (K (S I)) using just rule 3 as is done in the article. — Emil J. (formerly EJ) 10:47, 4 August 2008 (UTC)
thread_title:  Example of conversion to the S-K basis seems to be incorrect 

message: Since headings are bold there is no reason to use bold in them.  Why is the removal of redundant bolding causing problems for this page? Rich Farmbrough, 08:40, 8 September 2009 (UTC)
replies: text: It's not redundant. It's clearly visible in browsers such as lynx, and it's semantically distinct. — Emil J. 10:41, 8 September 2009 (UTC)
thread_title: Bolding in headings

message: I noticed that there is presently no connection to term rewriting systems at all. Should the definition of CL be formulated as a special form of TRS?  —Preceding unsigned comment added by 83.85.21.120 (talk) 21:48, 7 February 2011 (UTC)
thread_title:  Term Rewriting 

message: Near the beginning, it states
"Combinatory logic can be viewed as a variant of the lambda calculus, in which lambda expressions (representing functional abstraction) are replaced by a limited set of combinators, primitive functions from which bound variables are absent."
However, this not only contradicts Haskel Curry's distinction between calculi and algebras ...
"The term 'algebra' is used in this book as a name for a system with free  variables but no bound variables. Thus the system of Example 5 (Sec.  2C3) is an algebra and is aptly called propositional algebra. In  contradistinction the term 'calculus' will, as a rule, be used to  describe a system with bound variables, so that it is suitable to speak  of a calculus of lambda conversion, a predicate calculus, etc. These  terms agree with ordinary mathematical usage, where the distinguishing  characteristic of the infinitesimal calculus, as opposed to elementary  algebra, is the presence of bound variables in the former" -- "Foundations of Mathematical Logic" by Haskell B. Curry (sec. 4A1)
but also text in the definition later on:
 "The primitive functions themselves are combinators, or functions that, when seen as lambda terms, contain no free variables."
I think the introductory text needs to be fixed. Free and bound variables can be confusing!  — Preceding unsigned comment added by 99.190.134.97 (talk) 21:29, 2 February 2012 (UTC)
thread_title:  Bound variables vs Free variables 

message: The technical term for what is called "Conversion of a lambda term to an equivalent combinatorial term" in this article
is usually called "Bracket Abstraction". The name probably stems from the way the core part of the algorithm was intially written (my guess):
    [x]E = KE,  
    [x]x = I,  
    [x]Ex = E,  
    [x]EX = BE([x]X),  
    [x]XE = C([x]X)E,  
    [x]XY = S([x]X)([x]Y).
The above is Schönfinkel’s algorithm with Curry's combinators.
:M. Schönfinkel. 
:Über die Bausteine der Mathematischen Logik. 
:Mathematische Annalen, 92:305–316, 1924.
Jan Burse (talk) 12:24, 4 December 2012 (UTC)
thread_title:  Technical Term 

message: I have two problems with the definition of T[ ] as it is in this article:
1. With these rules you can't transform the expression \x.y as rule 3 requires that x is not free in y. Yet it is free according to the definition of free and bound variables in Lambda calculus#Free and bound variables. This would also mean that at least transformation 4 in the example is incorrect.
2. T[ ] is a function from lambda expressions to combinatory expressions. This means that in rule 5, a combinatory expression is applied to a lambda, which then has to be transformed again into combinatory. This makes no sense, you can't mix combinatory and lambda expressions that way.
I hope I am correct and someone will clarify this. --SemperVinco (talk) 06:28, 22 May 2014 (UTC)
replies: text: Oops, never mind, rule 3 is correct. Still, rule 5 is weird. SemperVinco (talk) 08:46, 25 May 2014 (UTC)
thread_title:  Are there still problems with the transformation T[ ]? 

message: I fixed quite a few incorrect italicizations in E₁, changing it to E₁, and similarly with the subscript 2.  Is there a reason why that notation was used, rather than E1 and E2? Michael Hardy (talk) 00:00, 27 July 2014 (UTC)
thread_title:  incorrect italics, etc. 

message: Combinatory logic is a notation to eliminate the need for variables in mathematical logic.
A combinatory term has one of the following forms:
*x
*P
*(E1 E2)
where x is a variable, ...
If there are should be no variables then why combinatory term can be a variable?  — Preceding unsigned comment added by 95.106.255.17 (talk) 12:16, 6 August 2014 (UTC)
replies: text: I fixed the introductory sentence: it's quantification and binding that is eliminated. ComputScientist (talk) 15:13, 6 August 2014 (UTC)
thread_title:  Is variable a combinatory term? 

message: Hello fellow Wikipedians,
I have just modified  on Combinatory logic. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
*Added archive https://web.archive.org/web/20160304083208/http://tromp.github.io/cl/LC.pdf to http://tromp.github.io/cl/LC.pdf
When you have finished reviewing my changes, please set the checked parameter below to true or failed to let others know (documentation at ).
Cheers.—InternetArchiveBot (Report bug) 12:05, 28 November 2016 (UTC)
thread_title:  External links modified 

message: Hello fellow Wikipedians,
I have just modified one external link on Combinatory logic. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
*Added archive https://web.archive.org/web/20081029051502/http://cstein.kings.cam.ac.uk/~chris/combinators.html to http://cstein.kings.cam.ac.uk/~chris/combinators.html
When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.
Cheers.—InternetArchiveBot (Report bug) 04:19, 11 August 2017 (UTC)
thread_title:  External links modified