Talk:Logic programming

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
WikiProject Computer science (Rated B-class, Top-importance)
WikiProject iconThis article is within the scope of WikiProject Computer science, a collaborative effort to improve the coverage of Computer science related articles on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
B-Class article B  This article has been rated as B-Class on the project's quality scale.
 Top  This article has been rated as Top-importance on the project's importance scale.
edit·history·watch·refresh Stock post message.svg To-do list for Logic programming:

Logic programming and constraint programming[edit]

Although logic programming and constraint programming are closely related, I don't believe it's accurate to treat them as synonyms, or one as a subtype of the other. I have drafted a couple of paragraphs to clarify the difference and suggest why one is more appropriate than the other in various problem domains. Question: since the two have already been conflated, and there are multiple redirects to this page, what is the best way to make them again distinct? Glenn6502 02:05, 21 Apr 2004 (UTC)

Hi, you're right, the two aren't synonyms. But I think they can be discussed on the same page. Be bold. -- Arvindn 03:09, 21 Apr 2004 (UTC)

Hmm, is "commercial" an appropriate description of Mercury ? At least it's implementation is released under the GPL. Perhaps a better word might be "industrial-strength", "real-world" or something similar. (Mayhaps something about "programming-in-the-large", "robust", "modular" or something.) Just a Suggestion. StefanLjungstrand 23:32, 29 Apr 2004 (CEST)


I've never heard the phrase "logical programming" before reading this article. "Logic programming" gets 543,000 hits on google, "Logical programming" gets 5520, most of the first hits being derived from this article. I suggest we change. ---- Charles Stewart 11:50, 24 Sep 2004 (UTC)

Just a thought after the fact: yes, logic programming is the accepted name. DoesPHalt 22:00, 12 Dec 2004 (UTC)
Right: I asked User:Charles Matthews to do the shift a couple of monyhs ago (see User talk:Charles Matthews/Archive6#Move(with delete) Logical programming; I should have put a comment to that effect here. I think the name "logical programming" was started because it sounds more in keeping with the list on programming paradigms. ---- Charles Stewart 09:35, 14 Dec 2004 (UTC)

Added discussion about claim to be declarative[edit]

User:Koffieyahoo reverted my contributions.

So I have added some discussion to the article.--Carl Hewitt 05:39, 13 July 2005 (UTC)

Okay so basically the two changes you made were:

  1. Add reference to the Scientific Community Metaphor
  2. Delete reference to relevant literature.

I deleted the first one as that article does not explain at all that this has anything to do with logic programming, Adapt that page first and then add back the reference here. I re-added the second one because it refers to bakctracking, which is absolutely relevant. Koffieyahoo 12:05, 13 July 2005 (UTC)

Logic Programming != prolog[edit]

While this article reflects the early history of logic programming (and how many people) have come to see the term, in the academic community the term "Logic Programming" is typically applied to a much larger class of of system than those restricted to Horn Clauses. For instance, there has been a lot of recent(ish) interest in finite-domain nonmonotonic logic programming paradims like Gelfond & Lifschitz's stable models semantics (Aka Answer Set programming or Datalog) and Disjunctive logic programming, both of which can account for both classical (i can show this isn't true) and epistemic (I can't show that this is true) negation, and disjunction in the heads of rules, while these systems are not turing complete (as they are limited to finite domains) they can be used for a lot of interesting problems because you aren't stuck with the constraints of programming in horn-clauses as you are with prolog.

I'm not trying to criticise the existing article, but imho "Logic Programming" needs broadening a bit.

I concur that it would be good to broaden the discussion. Regards,--Carl Hewitt 21:29, 31 October 2005 (UTC)
I certainly concur as well. I added a paragraph about linear logic programming to help make the point. I can add other issues about logic and declarativeness as I get a chance. -Dale Miller (9 Dec 2006) —The preceding unsigned comment was added by (talk) 10:25, 9 December 2006 (UTC).
The pendulum has maybe swung too far the other way now: the history section doesn't regard the invention of PROLOG as worth a mention... --- Charles Stewart 21:13, 31 October 2005 (UTC)
The history section discusses Kowalski's claims although perhaps too briefly. Regards,--Carl Hewitt 21:29, 31 October 2005 (UTC)

Citations and references[edit]

IMO articles read better if we use the Harvard citation style together with a format for references which gives authors and dates together, eg. the APA style. So the first item:

  • John McCarthy. Programs with common sense Symposium on Mechanization of Thoght Processes. National Physical Laboratory. Teddington, England. 1958.
becomes (with some copyedits) either:
  1. John McCarthy. (1959). 'Programs with common sense'. In Proceedings of the Symposium on Mechanisation of Thought Processes held at the National Physical Laboratory, Teddington (1958). London: HMO Stationery Office.
    (the APA style)
  2. John McCarthy, 1959. 'Programs with common sense'. In Proceedings of the Symposium on Mechanisation of Thought Processes held at the National Physical Laboratory, Teddington (1958). HMO Stationery Office, London.
    (the style that I have been preferring, which just moves the date from the default latex position).

I know Carl Hewitt has put many such references, and it may be more effort than he is willing to invest to change this, but I would like to begin to follow this referencing policy. Other "logic in CS/AI" articles have been following this, and Paolo Libertore has software allowing the automatic formatting of WP markup from .bib entries.

Some other points of style:

  • When it exists, the date of publication should be preferred for references. So 1959, the date of publication of the proceedings is to be preferred to 1958, the date of McCarthy's talk.
  • Single quotes should be used for articles and contributions to edited volumes and italicised emphasis for names of books, journals and conference proceedings. Bold is generally too loud for references sections.

If there is agreement to the above, I shall reformat the references section, at least for this article. --- Charles Stewart 21:11, 31 October 2005 (UTC)

It is fine with me for you to reformat. Regards,--Carl Hewitt 21:19, 31 October 2005 (UTC)

Rule-based programming[edit]

Whilst editing programming paradigms, I've found that rule-based programming is redirected to logic programming. I think they are different enough to warrant separate articles. Specifically, the former form the basis of many computer algebra systems, which have comparatively little to do with logic programming. Is that fair?

Yes, this seems fair to me. Regards,--Carl Hewitt 06:34, 29 November 2005 (UTC)

Opening Sentence[edit]

"Logic programming (sometimes called logical programming) is a programming paradigm that is claimed to be declarative (i.e., based on mathematical logic) but this claim is controversial (see Limitations of Prolog as logic programming below)." Prolog may be controversial, but incorporating such weirdness into the definition of logic programming isn't particularly helpful. This is an article about logic programming, and debates about which schools of practice best reflect logic programming should be down in the article body.

Google definitions shows that this article once began with "Logic programming is a declarative programming paradigm in which a set of attributes that a solution should have are specified rather than set of steps to obtain such a solution. The most widely used logic programming language is Prolog. Other, more modern include Mercury, Visual Prolog, Oz and the Scientific Community Metaphor." This explains a bit more and I'm putting it back in modified version. Scientific Community Metaphor doesn't really seem to belong in this list, which is otherwise of programming languages~ I'm replacing it with Fril, which deserves mention.

The phrase declarative programming paradigm in which a set of attributes that a solution should have are specified rather than set of steps to obtain such a solution doesn't make much sense. So it has been replaced with more accurate statements.-- 09:10, 21 February 2006 (UTC)

"There are two families of logic programming languages: an original sequential form Prolog and a later concurrent form." Concurrency has certainly entered into later implementations of logic programming languages, but if we're going to suggest that this is the defining factor that creates the two main families of programming languages, we had best put a source on this rather bold decision. Also it doesn't really belong in this top part.

Put in reference to Shapiro [1989]. Article needs to report on situation in Logic Programming in general, not just sequential backtracking dialects.-- 09:10, 21 February 2006 (UTC)

Then what's this about "logical deduction was incapable of carrying out concurrent computation in open systems"? Perhaps there should be a section on concurrency and logic programming. If this relates more to Prolog specifically, which is not really such a good representation of logic programming anymore, then it could go into discussions on Prolog instead.

Good idea to put in section on Concurrency in Logic Programming.-- 09:10, 21 February 2006 (UTC)

Thanks. Chira 08:19, 21 February 2006 (UTC)

"kind of programming that is related to mathematical logic" isn't a useful description (I've never heard of a programming language that isn't related to mathematical logic). Perhaps it's more accurate than "in which a set of attributes that a solution should have are specified rather than set of steps to obtain such a solution" but it's also more useless. Perhaps someone can come up with a better opening definition. The comment about the history of logic programming don't help explain what it is, either: those should go down in the history section. Chira 09:13, 21 February 2006 (UTC)

Good idea to tighten this up. -- 09:50, 21 February 2006 (UTC)


The last section describes John McCarthy's advice taker proposal. This idea inspired many researchers working in Artificial Intelligence during the following years, myself included. I particularly remember Pat Hayes in Edinburgh visiting McCarthy in the late 60s to work with him on the advice taker. One result of this was the famous situation calculus paper, which appeared in 1969. Pat later contributed to the beginnings of logic programming, as the history section of this article mentions.

The first paragraph quotes McCarthy as writing:

"programs to manipulate in a suitable formal language (most likely a part of the predicate calculus) common instrumental statements. The basic program will draw immediate conclusions from a list of premises. These conclusions will be either declarative or imperative sentences. When an imperative sentence is deduced the program takes a corresponding action.”

It is not obvious to me how this relates to logic programming as it is commonly understood, even in the broader sense of this article. In particular, the last sentence of the quote seems to be more of a description of condition-action rules in production systems than it is a description of logic programming.

It could be said that production systems are the suitable formal language that McCarthy was describing, in which case this section is more appropriate for the production system article. On the other hand, the next paragraph of this section suggests that the section would be more appropriate for the article on common sense or for a new article on the advice taker.

Robert Kowalski 12:21, 10 January 2007 (UTC)

I recommend starting a new article on the advice taker with references to it from logic programming and common sense. 14:40, 13 January 2007 (UTC)

Perhaps what is needed here is a section on knowledge representation, which subsumes both this section and the applications section as well. 18:05, 13 January 2007 (UTC)

I would totally agree with this, except that then a forced reference would be which is not exactly very useful when it comes to philosophy. --Jacinto Dávila 21:40, 30 January 2007 (UTC)

I deleted the philosophy section, which is now in the advice taker article. I agree that the knowledge representation section here needs to be expanded/changed. Also, there should be links to the advice taker article, from the common sense and McCarthy articles, which are now missing.

I deleted the Applications section, because it gives a misleading impression that logic programming has limited applications. A new section on Knowledge Representation is badly needed. Also a section on Problem-solving, i.e. different ways of executing logic programs, would be very useful.


We've gone through this before. Carl Hewitt and company are among the few who believe that that part of concurrent programming that can be analyzed at all can be analyzed through mathematical logic. — Arthur Rubin | (talk) 16:24, 30 March 2007 (UTC)

It would be useful if you could provide citations to the published literature to support your dispute. --2ndMouse 18:36, 30 March 2007 (UTC)
I claim that Hewitt, himself, is not a WP:RS in the field. If you rewrite to state that Carl Hewitt claims that concurrent programming cannot be implemented through mathematical logic, or if you can find sources other than Hewitt and his students, I have no objection. — Arthur Rubin | (talk) 20:07, 30 March 2007 (UTC)
The claim seems to have originated with Hewitt and his students. However, it has been published in the refereed literature many times and there does not appear to be any counterclaim in the published literature. What is the basis of your objection? --2ndMouse 20:32, 30 March 2007 (UTC)
What about Kowalski? Church's thesis? — Arthur Rubin | (talk) 21:46, 30 March 2007 (UTC)
I put in a clarification in Computability_theory_(computer_science)#Power_of_Concurrent_Computation. --2ndMouse 22:25, 30 March 2007 (UTC)
Besides, aren't you banned from editing articles related to Carl Hewitt? — Arthur Rubin | (talk) 21:47, 30 March 2007 (UTC)
The ban expired on 17 February 2007.--2ndMouse 22:28, 30 March 2007 (UTC)
You still haven't stopped Wikilawyering, have you? Please read Wikipedia:Requests for arbitration/Carl Hewitt more carefully: there was no time limit placed on your probation and banning from autobiographical editing. —Ruud 23:31, 30 March 2007 (UTC)

I have reverted Hewitt's changes to the version which significantly revised by no one less than Robert Kowalski himself. —Ruud 00:12, 31 March 2007 (UTC)

Reversion by Ruud Koot[edit]

What do you think of the reversion by Ruud Koot? -- 02:28, 31 March 2007 (UTC)

I agree with these changes, for two main reasons. First, these recent edits reintroduce Carl Hewitt's earlier characterization of logic programming as logic used for computing in a much more general sense than logic programming is generally understood, as characterised for example by the Association for Logic Programming

It's interesting that this web page does not actually define "logic programming". Do you have a proposed definition?-- 20:30, 2 April 2007 (UTC)

Second, they reintroduce Carl Hewitt's criticism of logic programming, as he redefines it, as not universal. This kind of criticism could be made against virtually any technology and it is both irrelevant and unnecessarily hostile. 09:56, 31 March 2007 (UTC)

These are legitimate points of controversy.
  • Some of the followers of Kowalski would like to restrict the definition of Logic Programming to backward chaining. The grounds for this restriction seem to be that Prolog was restricted to backward chaining and so a tradition grew up in some parts of the literature to adhere to this restriction. Other parts of the literature beginning with the earlier Planner language and its successors to this day do not adhere to this restriction, which seems somewhat arbitrary. For example McCarthy's original proposal for logic programming used forward chaining which was incorporated in successor work.
  • Also the current article is unnecessarily hostile to Kowalski and Hayes in that it seems likely that what they had in mind when they propounded their theses was computation (as in Turing Machines and the lambda calculus) and they did not envisage that current computation would turn out differently. So the article should be changed to reflect this. Also the article might mention the Representation Theorem for concurrent computation so all of this doesn't seem so mysterious.
  • At the same time, it is remarkable that logic programming (in the general sense of what can be programmed in logic) turned out not to be universal for computation (in the sense that there are concurrent computations that cannot be implemented in logic) and this published result should be reported in the article with no attempt at suppression.
What do you think of these proposed revisions?-- 15:57, 31 March 2007 (UTC)
The current article would be unnecessarily hostile to Kowalski if it implied that his interpretation did not apply to "current computation" without specific sources that he did not intend it to. I think only Carl Hewitt and students believe that "current computation would turn out differently" and that "logic programming ... turned out not to be universal for computation". Hewitt is a prolific writer, but I haven't seen evidence that his views are accepted by the computer science community.
As for the Representation Theorem, the article probably should reference it if it really is a "theorem", as opposed to a redefinition of concurrent computation. — Arthur Rubin | (talk) 16:41, 31 March 2007 (UTC)
I think that you have got Kowalski's position exactly wrong (based on some communications on mailing lists). You should contact Kowalski directly. At this point it is widely accepted that logic programming is not universal, e.g., from seminars and conversations at CMU, MIT, Stanford, and SRI and elsewhere by those who have read the published literature.
As for the Representation Theorem, you can review the proof yourself in:
Thanks for the reference. That clearly applies only to the actor model, which appears not to be mainstream. It does not need to be in any article not specifically about that model. — Arthur Rubin | (talk) 02:51, 1 April 2007 (UTC)
Since the actor model is very general, the Representation Theorem applies to the other main stream models as well. For example it applies to petri net and process calculi models via a 2-phase commit protocol to handle the synchronization. The relevance of the Representation Theorem is that it helps explain how it is possible to have a logical representation of concurrent computations without it being possible for logic to actually carry out the concurrent computations.-- 17:25, 1 April 2007 (UTC)
I do not concur that the actor model is "very general", nor that the Representation Theorem applies to any other methodology. Is there any source other than Hewitt et. al. for the validity of the Representation Theorem to other asynchronous computing models? — Arthur Rubin | (talk) 20:47, 2 April 2007 (UTC)
As I understand it, the purpose of the Wikipedia it not to decide truth but rather to report on published work (please correct me if I am wrong). The Representation Theorem was published in the refereed proceedings of a workshop of AAMAS and then the paper was selected for inclusion in a published volume of Springer Verlag. Also the paper is available on line. Do you see some problem with the proof?
There is a section on the application of the two-phase commit protocol in Synchronous channels in process calculi which shows how to carry out the required construction. -- 02:16, 3 April 2007 (UTC)
It's not entirely correct to say that the purpose of Wikipedia is to ... report on published work. The Undue weight clause requires us to decide which works represent the mainstream view, and to give space in articles accordingly. I don't see the actor model as mainstream, nor any refutation of the assertion that Kowalski represents the mainstream view that logic can model any computation. — Arthur Rubin | (talk) 15:35, 3 April 2007 (UTC)
You don't seem to understand that the Representation Theorem says exactly how logic can model any computation. It's just that logic is not capable of implementing certain concurrent computations. Also you are wrong about the the Actor model not being part of the mainstream. Are you aware of the illustrious researchers who have contributed to its development? At the this point the two most prominent models of concurrency are the Actor model and process calculi.
Also you have very badly misrepresented the current position of Kowalski. For example see the following:
  • Robert Kowalski. "The Logical Way to be Artificially Intelligent." CLIMA VI. Springer Verlag. 2006.-- 02:28, 4 April 2007 (UTC)
The Representation Theorem, as noted in that paper, is philosophical in content, rather than being related to computation theory.
A reading of the paper reveals that the Representation Theorem is related to computation theory. It is a mathematical theorem of computation that is formally stated and proved in the paper. -- 14:34, 4 April 2007 (UTC)
As for Kowalski's views, we'll have to let him decide. He edits here from time to time. — Arthur Rubin | (talk) 05:23, 4 April 2007 (UTC)
Excellent suggestion!-- 14:34, 4 April 2007 (UTC)

One issue is whether logic programming is to be understood, as the current version of the article characterizes it, as: "based upon the fact that a backwards reasoning theorem-prover applied to declarative sentences in the form of implications

   B1 and … and Bn implies H

treats the implications as goal-reduction procedures

   to show/solve H, show/solve B1 and … and Bn."

I believe that this is the generally accepted view of logic programming. It is a very restricted form of logic, but it is sufficient for Turing-computability.

This view is much more restrictive than Carl Hewitt's notion that it is

"the use of mathematical logic for computer programming".

This broader view might be called "logical programming", as Carl Hewitt suggested in an earlier version of the logic programming article. I see no problem with having a separate article called "logical programming", to deal with this broader view.

Good idea! So should we establish a separate article on Logical programming?-- 14:34, 4 April 2007 (UTC)

The other issue is whether "logic programming is universal". However, this issue is concerned with the broader questions of whether "mathematical logic for computer programming" is universal and whether Turing-computability is universal. As it happens, I agree with Carl Hewitt, that both logic and Turing-computability are not universal (in some sense). However, it seems to me that the issues involved are more suitable for the articles on logic and on computability than they are for the article on logic programming. Robert Kowalski 10:30, 4 April 2007 (UTC)

Excellent points. Do you think that these issues should be addressed in the new article on Logical programming?-- 14:34, 4 April 2007 (UTC)
Almost certainly not. Logical programming is a very bad name. Logic programming is questionable; perhaps it should be renamed to Logic of programming or Logic in programming. — Arthur Rubin | (talk) 17:55, 4 April 2007 (UTC)

Why do you think that the name is bad? Your suggestion Logic of programming is certainly off the mark in that it is not about the logic of programming. Likewise your suggestion Logic in programming is also off the mark because it is not about logic in programming.-- 18:44, 4 April 2007 (UTC)
The article appears to be about how logic can model programming or a specific logical model of programming; how could logical programming possibly the correct term. — Arthur Rubin | (talk) 22:43, 4 April 2007 (UTC)
The thrust of Kowalski's contribution seems to be that just as Logic programming is a kind of programming; so Logical programming is a more general kind of programming that can be implemented "logically" , i.e., using mathematical logic.-- 06:29, 5 April 2007 (UTC)
And the question of universality should possibly be in a an article on computability, rather than on programming. — Arthur Rubin | (talk) 17:55, 4 April 2007 (UTC)
And "", aka Carl, you definitely shouldn't be editing this article if you're considering adding one of his previous suggestions.) — Arthur Rubin | (talk) 17:55, 4 April 2007 (UTC)
And I was wrong about the Representation Theorem being philosophical. It's a badly phrased definition. — Arthur Rubin | (talk) 17:55, 4 April 2007 (UTC)

The published paper states a theorem and gives a proof. Why do you think that the Representation Theorem is a definition? -- 18:44, 4 April 2007 (UTC)
I fail to see how the set of "computations of S" can be different from the set of time abstractions of progressions of operations from/in S, especially since there's no definition of "computation" in the paper. — Arthur Rubin | (talk) 22:43, 4 April 2007 (UTC)
You seem to have missed that DenoteS is the least fixed point of ProgressionS and obeys all of the Laws for Actors which axiomatically define computation.-- 07:29, 5 April 2007 (UTC)
So the "theorem" is primarily a definition of "computation" in the actor model. — Arthur Rubin | (talk) 13:29, 5 April 2007 (UTC)
You seem to have missed the point of the just previous comment that the Laws for Actors axiomatically define and characterize computation. It is then necessary to prove the Representation Theorem.-- 17:19, 5 April 2007 (UTC)
I think not. The statement
The denotation DenoteS of an Actor system S is the set of all computations of S.
Looks as if it might be more a definition of "computation" than of Denote, making the theorem a definition. I suppose "denote" or Denote may mean something different in Actor systems than in English. But even if "computation" is defined elsewhere, the theorem reads that "computations" are exactly time-abstracted timed progressions from the initial state. This should be trivial, and is trivial in all definitions of computation that I'm familiar with.
Can you explain how "computation" is defined so this not trivial? — Arthur Rubin | (talk) 17:40, 5 April 2007 (UTC)
Computation is defined and characterized earlier in the paper in terms of Actor laws. Because of the problem of unbounded nondeterminism, it is not trivial to develop a denotational characterization of the computations, which was first accomplished by Will Clinger in his dissertation that is highly recommended reading. What is Commitment? Physical, Organizational, and Social just has a simpler construction than Clinger. Concurrent computation is not the same as nondeterministic Turing Machine and lambda calculus computation.-- 19:32, 5 April 2007 (UTC)
I disagree. The word "computation" doesn't appear earlier in the paper. — Arthur Rubin | (talk) 20:58, 5 April 2007 (UTC)
It seems that you missed the immediately preceding section 3 titled "Actors and Events" whose first sentence is "Actors are the universal primitives of concurrent digital computation." This section presents some Actor laws which define and characterize concurrent computation.-- 21:57, 5 April 2007 (UTC)


Exactly. (Actor model) computations are exactly the time-abstracted timed progressions of (Actor) events. If that's not trivial, then there's something fundamentally wrong with the Actor model. (And what this might have to do with "logic programming", "logical programming", "logic of programming", or "login in programming" is not at all clear.)
The relationship is clearly explained in the previous version of Logic programming that was reverted by Ruud Koot: Computations that cannot be implemented by Logical Programming are outside the capabilities of the nondeterministic lambda calculus. Likewise the Representation Theorem for concurrency is a generalization of the denotational models of the nondeterministic lambda calculus (that do not embody unbounded nondeterminism). Note that Logical Programming as defined by Kowalski is a generalization of Logic Programming. Consequently Logic Programming is even more limited than Logical Programming.-- 17:56, 6 April 2007 (UTC)
For what it's worth, there's no evidence that the paper is published, so we can't use it a reference, anyway, other than as to Carl's opinion. — Arthur Rubin | (talk) 22:16, 5 April 2007 (UTC)

The paper was published in the refereed proceedings of COIN at AAMAS'06. A revised version is published in Springer Verlag Lecture Notes in Artificial Intelligence edited by Javier Vázquez-Salceda and Pablo Noriega.-- 18:00, 6 April 2007 (UTC)

Opening sentences and references should reflect widely-held views[edit]

The opening sentences of the current version of this article do not reflect widely-held views about logic programming. They criticize logic programming by suggesting it is a flawed variant of something else called "logical programming". In doing so, they steer the reader toward the article on "logical programming", which emphasizes the contribution of Carl Hewitt and other American AI researchers toward understanding the relationship between logic and computation. I have never heard of "logical programming" as distinct from logic programming, and this view of logic programming would surely not be endorsed by the logic programming community. (This is to say nothing of the fact that the current opening sentence is run-on and ungrammatical.)

The references section contains references that have very little to do with logic programming per se, and vastly overemphasize American AI researchers such as Sussman, Cordell Green, Hewitt, McCarthy and Winograd. All of these researchers are very important in the general field of logic as applied to AI, but have had little or no impact on logic programming per se. A rather egregious example of this is the presence of Hewitt's paper "The repeated demise of logic programming", a recent (2006) very informal workshop paper, when seminal papers from people like Colmerauer, van Emden, and David H. D. Warren are absent.

It's hard to escape the conclusion that the article was edited by someone with an overinflated view of Carl Hewitt's influence on logic programming. Hewitt's PLANNER system was very influential to AI in general -- there is no question of that. It is certainly important to point out the connection in this article. But it is completely unnecessary, and rather insulting to the field of logic programming, to suggest that logic programming is merely a flawed variant of Hewitt's and other American researchers' ideas.

A little about me: I did my PhD on semantics of logic programming languages in 1991, my thesis was published by Cambridge University Press, I have had articles on logic programming published in Theoretical Computer Science and Journal of Logic Programming, I originated the comp.lang.prolog FAQ and maintained it for several years, and I wrote the article on Prolog for the Macmillan Handbook of Programming Languages (ed. Peter Salus). I have had no bone to pick with Carl Hewitt before this day -- in fact, I found the article only because I was searching for a more printable version of "The repeated demise of logic programming".

I have been a Wikipedia contributor for a few months. I am not editing this article yet because I don't want to get into an edit war, and the article history seems to suggest that that will be the result. However, I certainly want to register my opposition to the opening sentences and the references section of the current article, and to state my opinion that they do not reflect widely-held views of logic programming.

JamesHAndrews 23:28, 10 April 2007 (UTC)JamesHAndrews

I have a question. What exactly is logic programming? The term seems to be used in various ways. For example “Algorithm = Logic + Control” uses forward reasoning as well as backward reasoning.-- 17:07, 15 April 2007 (UTC)

I agree with James Andrews and object to the edit "Revision as of 20:12, 9 April 2007 (Talk)(We think that Kowalski's proposal should be adopted that "logical programming" be used for the general sense of using logic as the language of programming.)"

I certainly did not propose this major alteration of the logic programming article. I had hoped that that the supporters of Carl Hewitt would be satisfied with presenting their own views in a new article on logical programming and would allow the logic progamming article to deal with its subject in its own terms.Robert Kowalski 12:33, 11 April 2007 (UTC)

It looks like some people at Stanford attempted to start a new article on Logical programming as you suggested but that it was reverted for some reason. Maybe you can do better.-- 01:08, 14 April 2007 (UTC)
It's the Brits vs the Americans!-- 04:57, 16 April 2007 (UTC)

What is Logic Programming?[edit]

That's a good question. I, for one, do not have an "exact" definition. I have written or contributed to three encylopedia articles about logic programming:

Hogger, C. and Kowalski, R., "Logic Programming" in Encyclopedia of Artificial Intelligence, (ed. S. Stuart) John Wiley and Sons Inc., 1987, pp. 544-558. Also revised article in second edition, 1992, pp. 873-891.

Kowalski, R., "Logic Programming Principles", in Encyclopedia of Computer Science and Engineering, Revised Edition, (eds. A. Ralston and E. Reilly), Van Nostrand Reinhold Company Inc., 1993 pp. 778-783. Fourth edition (eds. A Ralston , D Hemmendinger , E. Reilly) 2000.

Kowalski, R.A., “Logic Programming”, MIT Encyclopaedia of Cognitive Science (eds. R A Wilson and F C Keil) MIT Press, 1999, pp. 484-486.

The MIT Encyclopaedia article skirts the issue with the following characterisation:

"Logic programming is the use of logic to represent programs and of deduction to execute programs in logical form. To this end, many different forms of logic and many varieties of deduction have been investigated. The simplest form of logic, which is the basis of most logic programming, is the Horn clause subset of logic....."

The second sentence of the Algorithm = Logic + Contol paper, on the other hand, states:

"In this paper, we are concerned not only with the use of predicate logic as a programming language in its own right, but with its tool for the analysis of algortithms."

Like most concepts, the concept of logic programming does not seem to have an exact definition. However, there is a generally accepted view of logic progamming, which my three encyclopedia articles attempted to capture. This view is quite close to the current version of the wikipedia article,and rather different from Carl Hewitt's recent views. In fact, I was not aware that Carl Hewitt held such different views until he started editing the wikipedia article. Robert Kowalski 11:43, 16 April 2007 (UTC)

I don't understand. How do your views differ from Carl Hewitt?-- 16:27, 16 April 2007 (UTC)

It is a matter of getting the balance right. If you type "logic programming" into Google Scholar or just plain Google, you will get a good idea about the range of topics associated with logic programming. In my opinon, the wikipedia article should broadly reflect that range of activity. At the moment, it is not too bad, except for a large number of idiocyncratic references at the end of the article. On the other hand, there are several topics, such as inductive logic programming, datalog and meta-programming, still missing.Robert Kowalski 10:12, 17 April 2007 (UTC)

OK, but what is the disagreement with Hewitt?-- 15:12, 17 April 2007 (UTC)

Probably the best way to understand the disagreement with Hewitt is to look at the history of edits to the logic programming article.Robert Kowalski 17:22, 17 April 2007 (UTC)

We looked at the history and it's not clear what the disagreement is.-- 18:06, 17 April 2007 (UTC)

Is that the royal "we", the editoral "we", or a comment that multiple people are using the IP address (meaning all edits in the CH-dominated articles from that IP address should be reverted). — Arthur Rubin | (talk) 22:30, 17 April 2007 (UTC)

We are on wireless at a conference in which the Wikipedia is being cited as a great success!-- 00:02, 18 April 2007 (UTC)

BTW, wasn't Carl Hewitt banned?-- 16:59, 18 April 2007 (UTC)

He is banned from making autobiographical edits. As long as he doesn't repeatedly violate that ban he won't be fully banned from editing, meaning he is currently allowed to discuss issues on the talk page. This should be constructive comments, unless he wants to risk being ignored by the people who can decided to make changes to the article based on his comments. —Ruud 19:28, 18 April 2007 (UTC)

I don't get it[edit]

This article reads like one Ph.D. precisely defining logic programming to another Ph.D. who already knows what they're talking about. Definitions like "B1 and … and Bn implies H" don't help if you don't explain further. Break it down for me. How can you do anything with "B1 and … and Bn implies H"? This page would be a lot more useful if people who haven't already been exposed to logic programming can walk away understanding the gist of it. indil 20:41, 8 October 2007 (UTC)

I think all that's needed here is a simple and concrete (i.e. real world) example of backward and forward chaining, written so that a high school student could understand it. (Think "Sunday supplement"/"Time Magazine" level of detail and type of prose.) That should do the trick for the general reader. Otherwise, this is an excellent article. ---- CharlesGillingham (talk) 00:09, 7 December 2007 (UTC)

I agree that some examples would be helpful. I wonder why Arthur Rubin | (talk) reverted the example by Logperson.Robert Kowalski (talk) 09:58, 7 December 2007 (UTC)

Primarily the damaged Wikiformat. It's reinserted and reformatted, now. — Arthur Rubin | (talk) 13:31, 7 December 2007 (UTC)

Have the issues brought up in April 07 been resolved?[edit]

Does the article, as it stands today, represent a consensus view of what logic programming is? It's not clear from the discussion if these issues finally got resolved, or were just dropped. ---- CharlesGillingham (talk) 00:14, 7 December 2007 (UTC)

I think all editors without severe COI issues concur, but that's just me and Ruud. — Arthur Rubin | (talk) 00:53, 7 December 2007 (UTC)
Good to know. That's what it looked like. Thanks. ---- CharlesGillingham (talk) 02:21, 7 December 2007 (UTC)
Since then a new contribution has appeared: History of Logic Programming by Carl Hewitt. Since Hewitt is prohibited from editing the article, I added it to the external links.-- (talk) 20:13, 8 March 2008 (UTC)

What does "COI" mean? I think the biggest remaining problem is the biased list of references at the end of the article, as point out by JamesHAndrews. Also, there are some areas, such as constraint logic programming, inductive logic programming and metaprogramming, missing. Robert Kowalski (talk) 09:58, 7 December 2007 (UTC)

COI is WP:COI, conflict of interest. I had forgotten about you, but most of the rest of the editors were essentially Carl Hewitt, who is banned from editing articles about him or his work. That has led some of us to keep CH's material in the rare instances that it actually appears to be relevant to the article, because he is banned from adding it. — Arthur Rubin | (talk) 13:39, 7 December 2007 (UTC)

Curry-Howard isomorphism[edit]

The Curry-Howard isomorphism is quite different from logic programming in the sense of this article. In this article, axioms are programs and proofs are computations. In the Curry-Howard isomorphism, proofs are programs, which is very different. A quick google search reveals no research relating the two. —Preceding unsigned comment added by Logperson (talkcontribs) 12:33, 26 February 2008 (UTC)

History of Logic Programming by Carl Hewitt[edit]

Please add History of Logic Programming by Carl Hewitt to the external links.-- (talk) 20:43, 11 March 2008 (UTC)

The article became famous here when it was censored by the Wikipedia. Does anyone know why it was censored?-- (talk) 20:25, 14 March 2008 (UTC)

Our professor says that Kowalski objected to the article which led to it being excised from the Wikipedia. He also said that the article is by far the best one on the history of logic programming (even though it is from Hewitt's point of view).-- (talk) 20:44, 15 March 2008 (UTC)
Kowalski has nothing to do with. In fact, he seemed to agree that Hewitt's articles are signficant. No, this reference to Carl's article was deleted from this Wikipedia article because it appears to be a class project to add it, and Hewitt and his students are forbidden from adding material about Hewitt or by Hewitt. — Arthur Rubin (talk) 22:00, 15 March 2008 (UTC)
Perhaps they are referring to Kowalski's complaint to Ruud Koot on November 10, 2007-- (talk) 05:15, 17 March 2008 (UTC)

Funny, same thing happened here. —Preceding unsigned comment added by (talk) 00:05, 15 March 2008 (UTC)

Carl and his students are banned from editing information related to Carl, per an ArbComm decision. If someone else in the field, preferrably someone with an account, would add the material, it might stay. However, it appears the Carl means something completely different by "Logic programming" than we do, so it still couldn't be in this article. — Arthur Rubin (talk) 06:59, 15 March 2008 (UTC)
There is an interesting discussion in the article about the controversy between Kowalski and Hewitt as to what is logic programming. Sounds like the Wikipedia is firmly on the side of Kowalski-- (talk) 20:44, 15 March 2008 (UTC)
I don't think Kowalski commented on this article. At least, I took no notice of it at the time. — Arthur Rubin (talk) 22:00, 15 March 2008 (UTC)
Perhaps they are referring to the fact that you are taking Kowalski's side in the controversy with Hewitt over the definition of logic programming.-- (talk) 05:15, 17 March 2008 (UTC)
It is not Kowalski's side of the controversy. It is the commonly accepted notion of logic programming versus Hewitt's definition, which is actually a redefinition of a commonly understood concept, which can be found defined, as in this article, in all the usual AI textbooks, such as Russell-Norvig, Poole-Goebel-Mackworth, Lugar, and Nilsson. If there is a place in Wikipedia for this external link to Hewitt's views on this matter, it is better in the article on Carl Hewitt than in the article on logic programming. (talk) 05:34, 17 March 2008 (UTC)
The article by Hewitt says that Logic Programming is "the logical deduction of computational steps". I looked at the Wikipedia article and in the textbooks, but there is no common short definition of Logic Programming. What do you think is the commonly accepted definition?-- (talk) 20:30, 17 March 2008 (UTC)
Logic programming is evolving concept. Originally it meant only Horn clauses executed by SLD, which is complete for deriving logical consequences and also Turing complete,but was extended to Horn clauses with negation as failure executed by SLDNF. Other extensions include abductive logic programming and answer set programming. All these extensions share the idea that computation can be reduced to deduction.
Hewitt’s definition "the logical deduction of computational steps" is too vague to be definition. If you try to make it more precise it doesn’t make sense. In any case, why should one person redefine concept that has generally accepted understanding, even if it doesn’t have rigid definition. (talk) 01:14, 18 March 2008 (UTC)
It does seem that our understand of logic programming has evolved with time. Arguably, the original logical lambda calculus of Church (the one with logical propositions) was the first real logic programming language.
Horn clause execution by SLD seems more like a hack because it only does backward chaining. Even Kowalski (who evidently coined the term "logic programming") has used forward chaining over the years.
Using the definition in his article, Hewitt argued persuasively that (at least for concurrent systems) that computation cannot be reduced to deduction. So we had better not take that as the definition :-)
So it seems that Hewitt's definition is good for some things. But I agree that is not as precise as we would like. So the question is: How can the Hewitt definition be improved?-- (talk) 01:36, 18 March 2008 (UTC)
We concur :-) --BytesCafe (talk) 02:10, 18 March 2008 (UTC)
OK. So maybe not all computation can or should be reduced to deduction. But it is fair to say that logic programming is concerned with the part of computation that can be reduced to deduction. Certainly Turing computability can be reduced to deduction. On the other hand, there is no good purpose served by taking a familiar concept, which has a commonly accepted understanding and terminology, and changing that terminology to mean something different. We would then need new term for the old concept. Natural language then becomes unusable. It is more practical to introduce new term for new concept, such as “logical programming” for Hewitt’s idea, as he earlier suggested. (talk) 03:26, 18 March 2008 (UTC)
Yes, it seems perfectly consistent with Hewitt's definition to say that logic programming is concerned with that part of computation that can be reduced to deduction. And you are right that Turing computability and indeed all of sequential nondeterministic computing can be reduced to deduction. Also all of the parallel lambda calculus can be reduced to deduction. All of these examples involve the logical deduction of computational steps. So there doesn't seem to be any conflict.-- (talk) 04:54, 18 March 2008 (UTC)
But Hewitt’s “definition” is not really definition. Computation as deduction is also vague. Logic programming has generally understood meaning within a community of researchers, textbook writers and students. It is not correct for one person to impose own definition on everyone else. (talk) 07:06, 18 March 2008 (UTC)
It seems that the "logical deduction of computational steps" is the best short form definition that we have so far. (Although Hewitt has clearly been a proponent of this definition; it is not clear that he first invented it.) Of course, anyone who has a better idea is free to propose it so certainly no one person has a monopoly here.
Also the community seems to be deeply divided between a resolution camp and a concurrency camp, both of which go back to the genesis of the field. So there doesn't seem to be a single generally understood meaning of logic programming.-- (talk) 08:05, 18 March 2008 (UTC)
Look in any AI textbook. Do a google search. You will see there is generally understood notion of logic programming. It does not have rigid and precise definition. If you want to introduce a new or different notion, you should use a different name, maybe logical programming, for example. (talk) 08:24, 18 March 2008 (UTC)
The divide is deeply entrenched in the literature of some four decades. Google Scholar has plenty of publications by both sides.
I'm afraid that trying to introduce "logical programming" at this point would simply cause more confusion. What would we say is the difference between "logical programming" and "logic programming"? -- (talk) 14:47, 18 March 2008 (UTC)
I'd like to see evidence that anyone other than Hewitt uses "logic programming" the way Hewitt does. Many of his concepts are unique to him and are more-or-less rejected by the consensus of all who use the related concepts. — Arthur Rubin (talk) 15:10, 18 March 2008 (UTC)
It would be useful to know which related concepts you have in mind. That way we could have a better idea who you are talking about.-- (talk) 18:07, 18 March 2008 (UTC)
It seems that this controversy snuck up on Kowalski and Hewitt. They didn't realize that they had been talking past each other for decades!-- (talk) 16:45, 18 March 2008 (UTC)

What I find most curious is that Kowalski doesn't have a succinct counterproposal to defining logic programming as the logical deduction of computational steps.-- (talk) 14:10, 19 March 2008 (UTC)

We were also wondering.--BytesCafe (talk) 01:54, 20 March 2008 (UTC)
If Kowalski's position is so wishy-washy, why does it have any credibility?-- (talk) 17:12, 22 March 2008 (UTC)
"We" were wondering while all the IPs and BytesCafe refer to themselves as "we". We (most Wikipedians reading this discussion) believe this to be a class project, and therefore subject to deletion. We (Wikipedia) do not recognize "role accounts", and it's policy that they should be blocked. — Arthur Rubin (talk) 17:24, 22 March 2008 (UTC)
You dodged an interesting question, namely, "Why has the Kowalski 'wishy-washy' approach persisted?" There must be sociotechnical reasons.-- (talk) 21:23, 22 March 2008 (UTC)
What I find curious is that this well-defined definition has retained use, in spite of the fact that it redefines both words of the term in order to make it fit. I think we would need references, other than Hewitt's works, that use the term as he defines it, in order for it to be included. As an aside, could the multiple IPs identify themselves? I think most of them are students in one of Carl's (or his student's) classes, or possibly as class project to get Hewitt's definition in Wikipedia. — Arthur Rubin (talk) 14:27, 19 March 2008 (UTC)
Now I get it: NPOV is any published point of view except Hewitt's :-) —Preceding unsigned comment added by (talk) 02:45, 21 March 2008 (UTC)
Hewitt's point of view is notable, in an article other than one specifically about him and his concepts, only if someone other than he or his students thinks it's notable. That restricts the scope considerably. — Arthur Rubin (talk) 13:23, 21 March 2008 (UTC)
In other words, *you* think it's not notable.-- (talk) 20:45, 21 March 2008 (UTC)
Well, I do think it's not notable, but, because Hewitt spammed all articles about subject in which he made a contribution, no matter how minor, we can't take his word about anything any more. So we need independent sources that his contributions are notable before they can be included. Kowalski would probably do. — Arthur Rubin (talk) 23:46, 21 March 2008 (UTC)
Most curious, this opinion by Arthur Rubin! Who is he? —Preceding unsigned comment added by (talk) 06:16, 9 April 2008 (UTC)
I'm basing my opinion, not on any special knowledge of logic programming, but on the on-Wikipedia actions of those championing Carl Hewitt's views. Unless you want to revisit the ArbComm decision banning Carl and his students from editing Wikipedia articles about Carl or his views, this definition of logic programming cannot stand without proof of notability. — Arthur Rubin (talk) 12:59, 9 April 2008 (UTC)
And what do you have against Hewitt's artice? Everybody in the field seems to know about it and the controversy with Kowalski. —Preceding unsigned comment added by (talk) 14:34, 9 April 2008 (UTC)
All the anons posting here know about Hewitt's article. Whether anyone else does has yet to be determined. — Arthur Rubin (talk) 21:56, 9 April 2008 (UTC)
Why so dense, Arthur. Do you really believe that there are any active researchers that don't know about the article? —Preceding unsigned comment added by (talk) 00:02, 18 June 2008 (UTC)
Do you actually personally know any of the members of the community? (talk) 09:32, 10 April 2008 (UTC)
I disagree. We have lots of things about Hewitt here.--ComputerHistoryMuseum (talk) 18:49, 2 April 2008 (UTC)
Another entry in the WP:SOCK drawer. — Arthur Rubin (talk) 20:01, 2 April 2008 (UTC)
Yeah, it would be good to hear from Kowalski. Didn't he use to edit the Wikipedia?-- (talk) 05:24, 22 March 2008 (UTC)
Logic Programming has probably retained use because it describes certain phenomena. The question is "Can we scientifically characterize the phenomena?"
PS. You don't seem to know much about Silicon Valley :-) --BytesCafe (talk) 02:22, 20 March 2008 (UTC)

New paper available[edit]

There is a new paper "History of Logic Programming: What went wrong, What was done about it, and What it might mean for the future" available at [1]

It was discussed on Lambda the Ultimate at [2].-- (talk) 18:31, 15 June 2008 (UTC)

Hmmm. Is there a WP:RS involved here? There certainly isn't one listed. — Arthur Rubin (talk) 21:27, 15 June 2008 (UTC)

Fernando Pereira the photographer[edit]

Can somebody please unlink the name Fernando Pereira in the article? The link is going to a photographer, not the logician. Thanks, EdJohnston (talk) 15:25, 13 May 2008 (UTC)

Yes, please. The logician's page is at Short bio at the bottom. I just don't know how to handle the disambiguation ... —Preceding unsigned comment added by (talk) 13:28, 1 July 2008 (UTC)

Development of Logic Programming: What went wrong, What was done about it, and What it might mean for the future[edit]

There is a new published paper that has been mysteriously deleted from the article:

The paper was presented at AAAI'08 in Chicago and was well received by the audience. -- (talk) 07:45, 14 July 2008 (UTC)

It seems that the reference to the paper was deleted because of concerns about WP:RS. This is must curious because the reference is for an academic peer-reviewed publication and WP:RS says "Academic and peer-reviewed publications are highly valued and usually the most reliable sources in areas where they are available"-- (talk) 07:59, 14 July 2008 (UTC)

I'm afraid we only have Carl Hewitt's word that it's relevant. As he and his students have been actively editing Wikipedia to — enhance — his reputation beyond belief, we now need an independent source of relevance for any new contributions. See, for example. Wikipedia:Requests for arbitration/Carl Hewitt. — Arthur Rubin (talk) 12:16, 14 July 2008 (UTC)

How do you think that the paper came to be refereed, published and then presented at AAAI'08? Did Hewitt and his students do this all by themselves? The AAAI would never allow Hewitt's students to referee the paper because of conflict of interest. —Preceding unsigned comment added by (talk) 16:36, 14 July 2008 (UTC)

Carl (Hewitt) frequently redefines terms, so even if this were refereed — noting that conference proceedings are not normally refereed, at least in the hard sciences — we only have your, and possibly his, word that this is relevant to what the real world calls logic programming. (As an aside, I can assure you that one of my papers in a conference proceedings journal was not refereed. But I only suggest my papers as references for articles on talk pages, not on the articles, themselves.) — Arthur Rubin (talk) 17:25, 14 July 2008 (UTC)
As an exception, Computer Science conference papers are normally refereed, and conferences can be more important than journals - at least the top-level conferences have a much higher impact than any CS journal. However, this is not true of workshops, where papers are only lightly reviewed, without a very high barrier for publication. The confusion between AAAI and the AAAI Workshop done above is no less than suspicious. Actually, it is just one among AAAI Workshops: see, Finally, the paper has just 2 citations. I have to admit that it is much better than most papers I have recently read from Hewitt, i.e. it is barely acceptable. It requires devotion to be understood and faith to be believed. --Blaisorblade (talk) 17:00, 21 October 2010 (UTC)

In Computer Science these proceedings are normally refereed. In the particular case of the "What Went Wrong" series, the proceedings themselves say that that were refereed.-- (talk) 19:33, 14 July 2008 (UTC)

I just noticed that the article already has a reference to Hewitt's work from a previous proceedings in the same series! Doesn't it make sense to update it with the more recent publication?-- (talk) 19:38, 14 July 2008 (UTC)

It probably makes more sense to remove Hewitt from the article entirely. — Arthur Rubin (talk) 21:10, 14 July 2008 (UTC)

Arthur, I don't care about your silly feud with Hewitt. Please repair your changes to the article.-- (talk) 10:12, 15 July 2008 (UTC)

Hewitt's attempt to "enhance" his reputation by putting links to his papers and opinions where they are not notable is what we are talking about. Perhaps he (and his students) have reformed, and this particular paper is notable and relevant. I wouldn't want to bet on it, though. The ArbComm ruling I reported earlier suggests that any reference to Hewitt or one of his papers, which is not made by an estabished editor, may be reverted. — Arthur Rubin (talk) 13:40, 15 July 2008 (UTC)
I think that you are wrong about this. Academics do not believe that Wikipedia can enhance their reputation. For example, it would be absurd for a hiring, promotion, or awards committee to take into account what Wikipedia says about someone.
Instead academics seem to have a very different motivation: it really bugs them to have articles that are inaccurate. So they try to correct articles to make them more accurate.-- (talk) 00:01, 16 July 2008 (UTC)
I used to think that, also. Dr. Hewitt convinced me otherwise. — Arthur Rubin (talk) 00:43, 16 July 2008 (UTC)

This is weird. You seem to know next to nothing. Yet, you have very strong opinions about what the community thinks. And judging from the AAAI, your opinions are the opposite of the consensus of the community.-- (talk) 16:01, 15 July 2008 (UTC)

What community? (I can't say what I think of Hewitt without violating WP:BLP, so suffice it to say that the papers of his that I read sense not make.) — Arthur Rubin (talk) 18:14, 15 July 2008 (UTC)
The consensus is that because of the sustained incredible hostility that Wikipedia has expressed towards academics, they should steer clear of contributing to it.-- (talk) 22:50, 16 July 2008 (UTC)
Wikipedia (to the extent that it has a single POV) is hostile to trolls, not to academics. Dr. Hewitt was acting like a troll, so he's being treated as one. If he were to return, and comment on articles in his field to the extent they don't mention him, he'd probably be welcome. — Arthur Rubin (talk) 23:49, 16 July 2008 (UTC)
Interesting, people in the AAAI don't seem to have your particular problem. However, they do offer tutorials that might be able to help you with it.-- (talk) 00:12, 16 July 2008 (UTC)

Reorganizing the references[edit]

I have reorganized the references to reflect how they are used to verify the article. ---- CharlesGillingham (talk) 22:19, 6 September 2008 (UTC)

Middle History of Logic Programming[edit]

Hewitt has published his version on Google Knol. See Middle History of Logic Programming. —Preceding unsigned comment added by (talk) 16:48, 23 September 2008 (UTC)

Development of Logic Programming[edit]

A more general treatment by the same author as above has been published on Google Knol. See Development of Logic Programming. -- (talk) 07:22, 1 October 2008 (UTC)

Protection of Carl Hewitt edits[edit]

As soon as protection is removed from the logic programming article, an anonymous editor adds references to Hewitt's work. The page is then protected again, but Hewitt's edits remain. The overall effect is to prevent other anonymous editors from removing Hewitt's banned editing. Is this the intention of the protection? Or merely an unintended result? (talk) 08:32, 11 December 2008 (UTC)

It's probably people rubbernecking at the controversy between Kowalski and Hewitt that seems to have moved from here to Google Knol. See the following:

In CACM, Hassan Aït-Kaci recently argued against the Kowalski's restrictive view of Logic Programming[edit]

Recently Hassan Aït-Kaci has pointed out:

It would be like saying Prolog and SLD-Resolution is the only way to do Logic Programming. To some extent, the LP [Logic Programming] community's insistence on clinging to this "exclusive method" has contributed to the relative disinterest in LP following its development in the 1980's and 1990's. [1]
  1. ^ Hassan Aït-Kaci. Children's Magic Won't Deliver the Semantic Web CACM. March 2009.

-- (talk) 05:26, 13 March 2009 (UTC)

There is no reason to get personal. Like it or not, SLD-Resolution is the standard textbook definition of logic programming. (talk) 12:01, 13 March 2009 (UTC)
According to "Middle History of Logic Programming":
"Kowalski's approach leads directly to the conclusion that Logic Programming is not computationally universal (see section above). On the other hand since 1969, Hewitt et. al. have sought to use the term logic programming in the more general sense of this article, namely, The logical deduction of computational steps. Even with this more general approach, computation is not reducible to Logic Programming. Nevertheless, Logic Programming provides an important contribution to computing with its own valuable properties.
If the more general definition of Logic Programming (i.e. the logical deduction of computational steps) is accepted, then the field has a very long history with contributions by Bruce Anderson, Bruce Baumgart, Fischer Black, Eugene Charniak, Alonzo Church, Alain Colmerauer, Julian Davies, Jan Derksen, Ted Elcock, Scott Fahlman, Richard Fikes, Frederick Fitch, Gerhard Gentzen, Cordell Green, Pat Hayes, Carl Hewitt, Robert Kowalski, Bill Kornfeld, Drew McDermott, Zohar Manna, John McCarthy, Nils Nilsson, Alan Robinson, Philippe Roussel, Jeff Rulifson, Earl Sacerdoti, Erik Sandewall, Gerry Sussman, Richard Waldinger, Terry Winograd, etc.
Keith Clark, Alain Colmerauer, Pat Hayes, Robert Kowalski, Alan Robinson, Philippe Roussel, etc. deserve a lot of credit for promoting the concept of logic programming and helping to build the logic programming community. And the traditions of this community should not be disrespected. At the same time, the term logic programming (like functional programming) is highly descriptive and should mean something. Over the course of history, the term functional programming has grown more precise and technical as the field has matured. Logic Programming should be on a similar trajectory. Accordingly, Logic Programming should have a precise and general characterization, i.e., the logical deduction of computational steps."
-- (talk) 14:53, 13 March 2009 (UTC)
Wikipedia is not the place to change accepted definitions of terms that have a well-established usage. If you want to change the definition, you should convince the academic community first. (talk) 18:04, 13 March 2009 (UTC)
The academic community is deeply divided on this one. According to the references in Middle History of Logic Programming, Hewitt, et. al. got there first in 1969 with Kowalski, et. al. coming along later in belated reaction when Pat Hayes returned from Stanford with news for Kowalski about Planner and then Papert and Sussman pronounced uniform proof procedures using resolution a "losing approach" in their famous seminar at Edinburgh.-- (talk) 18:28, 13 March 2009 (UTC)
in reaction to Hewitt, et. al., Kowalski, et. al. created Prolog, which is a subset of Planner!!!-- (talk) 01:29, 14 March 2009 (UTC)

Ah, the natives are getting restless. But that's the usual consequence of censorship. —Preceding unsigned comment added by (talk) 19:58, 15 March 2009 (UTC)

Interesting. As Planner was never actually implemented, that makes it even more confused as to who was "first" with a valid approach. Carl, still, is not allowed to edit Wikipedia articles which refer to him.
You (the anon IPs pretending to be "friends of Carl") are the cause of the so-called censorship. Self-promotion is grounds for expulsion from any collabortive editing system. — Arthur Rubin (talk) 20:44, 15 May 2009 (UTC)
Unfortunately, you are dead wrong. Planner was fully implemented in Popler by Julian Davies at Edinburgh. The most complete academic history is "Middle History of Logic Programming" on ArXiv. (talk) 15:29, 16 May 2009 (UTC)
That's Carl's interpretation. It may be accurate, but the article here on Planner says it was never implemented. (As I'm not watching it, if you can find a real source that it was implemented, go ahead and add it.) — Arthur Rubin (talk) 21:03, 16 May 2009 (UTC)
Actually, the article here on Planner says that it was implemented as described by others below. (talk) 22:34, 4 June 2009 (UTC)
The reference is as follows:
  • Julian Davies. Popler 1.6 Reference Manual University of Edinburgh, TPU Report No. 1, May 1973. (talk) 22:13, 16 May 2009 (UTC)
According to an email by Aaron Sloman on March 2,1994:
Popler "provided the most complete implementation of the language Planner designed by Carl Hewitt at MIT and reported in his PhD thesis around 1971." (talk) 03:46, 17 May 2009 (UTC)
Hewitt's comments are only usable in articles if some other reliable source reports them, due to improper Wikipedia editing by Hewitt and his students. — Arthur Rubin (talk) 04:41, 24 June 2010 (UTC)


An editor recently added the {{cleanup}} tag to this article. I would like to see some description of what cleanup might be needed, or the tag should probably be removed. — Arthur Rubin (talk) 19:33, 21 June 2010 (UTC)

The lead section should be a synthesis of the article. Some of its material, namely the example, should be in the body of the article.
The article looks like a list of disconnected topics, and does not provide an overall picture of LP to someone not in the field.
The article should relate the various logic programming models to each other, and explain their advantages and disadvantages.
Carbo1200 (talk) 09:37, 22 June 2010 (UTC)
A lot of the problem seems to come from the unhelpful distinction between broad sense and narrow sense of logic programming. The discussion of the broad sense seems to be a leftover from the days when Carl Hewitt was editing the article to give prominence to PLANNER.
I believe there is a good case for dropping the distinction and focussing on the standard notion as represented by the logic programming conferences, journal, and textbooks. This will make the article much more coherent, because the different logic programming models are then all extensions of the basic Horn clause logic programming model.Logperson (talk) 19:04, 22 June 2010 (UTC)
I tried to clean it up a bit by bringing in more recent work by Kowalski and Hewitt that provides a more unified frameowork.Untalker (talk) 23:38, 22 June 2010 (UTC)
That is not helpful. Removing earlier works by Hewitt might be more constructive. — Arthur Rubin (talk) 23:57, 22 June 2010 (UTC)
I don't know. If Kowalski and Hewitt are getting closer together, maybe there is hope for this aricle. Also, we could put to rest some of the reputation for Hewitt hatred that Wikipedia is developing in academia.Untalker (talk) 01:26, 23 June 2010 (UTC)
Due to Logperson's (probably correct) interpretation of the source of the confusion, perhaps we should remove Hewitt's contributions entirely. — Arthur Rubin (talk) 01:47, 23 June 2010 (UTC)
The problem has a lot to do with terminology. At one time Hewitt seemed content to have a separate article on logical programming, which would cover the broader notion. But that view did not receive much support. Kowalski seems to use the term "Computational Logic" for the broader view that includes backward and forward reasoning, reserving the term "Logic Programming" for the narrower and more conventional view. Why not start a new article on logical programming or Computational Logic? And focus this article on logic programming as ordinarily understood?
In any case, it seems to me that the emphasis in this article on PLANNER is mistaken, because PLANNER was never viewed as a programming language, which is why it was embedded in LISP. "Logic Programming" should mean logic as a programming language, which PLANNER was never intended to be.Logperson (talk) 13:40, 23 June 2010 (UTC)
Micro-Planner was embedded in Lisp because of computer limitations circa 1970. Popler was a full-fledged implementation of essentially the entirety of Planner. The future of Logic Programming is to become a kind of programming that is done in general purposes programming languages. It is important to understand that Logic Programming is not a general purpose programming paradigm for the reasons detailed in Common sense for concurrency and inconsistency tolerance using Direct Logic(TM) and the Actor Model. (talk) 03:16, 24 June 2010 (UTC)
For example, Logic Programming can conveniently be done in ActorScriptTM, which is is probably the most advanced Logic Programming language currently defined. (talk) 15:09, 24 June 2010 (UTC)
That seems like a good idea. The visual difference between "Logic programming" and "Logical programming" being so small, perhaps "Computational logic", would be preferrable, unless that's used primarily for automated theorem proving methods. There are significant differences between "logic programming" as seen in computer science, and as seen in mathematics, and the articles probably need have nothing to do with each other. — Arthur Rubin (talk) 18:22, 23 June 2010 (UTC)

In this respect, practice will be to use Logic Programming for programming that performs both forward chaining and backward chaining as first introduced by Planner. After all, the first publication on Planner was titled "A Language for Proving Theorems in Robots" in which the forward chaining and backward chaining was performed by "theorems." Attempting to single out just backward chaining and call it "Logic Programming" will fail. The most comprehensive published overview and history of the area covered by this article is Middle History of Logic Programming: Resolution, Planner, Edinburgh Logic for Computable Functions, Prolog and the Japanese Fifth Generation Project. (talk) 02:56, 24 June 2010 (UTC)

Hewitt's comments are only usable in articles if some other reliable source reports them, due to improper Wikipedia editing by Hewitt and his students. "Direct Logic" is not usable in any case. — Arthur Rubin (talk) 04:41, 24 June 2010 (UTC)

To be honest, I don't see a big emphasis on Planner in this article : just look how many times it is mentionned. This is not one of the issue I raised. Still, are there any sources for saying that the narrower view is more common ? Some sources say that there is a resurgence of datalog : this is a pure logic programming paradigm, right ? In any case, the bigger issue is that this article is a list of disconnected topics. It should explain what are the different subsets of logic addressed by which LP class, and why. Carbo1200 (talk) 07:19, 24 June 2010 (UTC)

The confusion comes from a historical accident: After studying Planner, Kowalski arbitrarily decided to try to exclude forward chaining from Logic Programming. This attempted exclusion was popular for a while becuase of the lack of concurrency in programming languages available in 1974, which made difficulties implementing both forward chaining and backward chaining. The restriction on Logic Programming to just backward chaining makes no sense. Kowalski has given up and started including forward chaining in his latest work. (talk) 15:27, 24 June 2010 (UTC)
I have no objection to including forward chaining, except to note that "historically", it hasn't generally been included. If Kowalski's "latest work" is published, it seems appropriate to note that.
I do object to including Hewitt's propaganda without independent sources of relevance and accuracy. — Arthur Rubin (talk) 16:01, 24 June 2010 (UTC)
Historically, Church's Foundation of Logic, McCarthy's Advice Taker, Planner, and Edinburgh Logic for Computable Functions all included forward chaining. (talk) 16:47, 24 June 2010 (UTC)

Forward chaining controversy (was "The fallacy of deriving what is the case from what ought to be the case")[edit]

As I see it, the role of an encyclopedia is to present what is the case, and not what ought to be the case. Hewitt’s arguments mainly concern what some people believe logic programming ought to be. There may be a role for such issues in the article, but they shouldn’t be allowed dominate it. Here is a concrete proposal: Structure the article into three main parts.

Part 1 could deal with logic programming as commonly understood, as presented for example in Stuart and Russell’s AI book. There are some tricky issues here - for example the fact that logic programming can be understood purely declaratively, but is also associated with backward reasoning, understood in terms of goal-reduction procedures. In any case, the standard notion of logic programming, which would be presented here, is that it is based on Horn clauses augmented with negation as failure. The purely declarative view is associated with Datalog, and the declarative/procedural view with Prolog.

Part two might deal with extensions. Many of these extensions, like constraint logic programming and concurrent logic programming and maybe answer set programming and abductive logic programming, are motivated by particular classes of applications. Still others, like metalogic programming and tabling, have general applicability.

Part three could focus on criticisms. The broader notion of logic programming could come in here, as well as some of Hewitt’s criticisms.-Logperson (talk) 17:13, 24 June 2010 (UTC)

The following seems like a lot to sweep under ther rug: Church's Foundation of Logic, McCarthy's Advice Taker, Planner-like languages (QA-4, Conniver, QLisp, etc.), and Logic for Computable Functions all included forward chaining. And they all came before the proposal to restrict Logic Programming to backward chaining. Now that Kowalski has reversed his position and includes forward chaining in his latest work, there is an additional complication. (talk) 17:36, 24 June 2010 (UTC)
The term "logic programming" did not exist before the 1976 Logic Programming Workshop at Imperial College. Kowalski uses the term "Computational Logic" to distingush his latest work from "logic programming".Logperson (talk) 18:57, 24 June 2010 (UTC)
None of the Wikipedia articles on lambda calculus, LCF, or Advisor Taker refer to Logic Programming. Only the PLANNER article does.Logperson (talk) 19:55, 24 June 2010 (UTC)
The term "programming using theorems in Planner" was much spoken of before 1976. In his paper, McCarthy wrote that in the Advice Taker, "the procedures will be described as much as possible in the language itself and, in particular, the heuristics are all so described" which is what Logic Programming is all about. Programing using Prolog rules is just a simplification of programming using Micro-Planner backward chaining theorems whose simplest form is logical implication. So who is fooling whom? (talk) 00:34, 25 June 2010 (UTC)
In LCF, logic programs operate on a special data type called "Theorem" to produce new theorems by forward and backward chaining. (talk) 00:53, 25 June 2010 (UTC)

In his latest work, Kowalski wrote:

"In the simplest versions of logic programming, the focus of attention is simply on solving achievement goals. As a consequence, conditionals are used only to reason backwards, to reduce achievement goals to sub-goals. However, in the more comprehensive version of Computational Logic studied in this book, conditionals are used both backwards to solve achievement goals and forwards to derive consequences of observations."

The above would seem to indicated that forward chaining is part of a more comprehensive version of Logic Programming than the simplest versions, which used only backward chaining.. (talk) —Preceding undated comment added 02:34, 25 June 2010 (UTC).

No. The quote states quite clearly that Kowalski views forward reasoning as a feature of Computational Logic, and not of logic programming.Logperson (talk) 22:08, 25 June 2010 (UTC)

Computational Logic is Kowalski's name for a vast and not yet completely defined enterprise that "incorporates procedural representations of knowledge from AI and Computing, production systems from AI and Cognitive Science, and decision theory from Management Science, Cognitive Psychology and Philosophy" including abductive and probabilistic reasoning, etc. On the other hand he stated that backward chaining is one of the "simplest versions of logic programming" whose "more comprehensive version" incorporates forward chaining.

In the vast literature on programming using logic, Prolog was the anomaly in restricting itself to just backward chaining. Now Kowalski has given up this restriction. (talk) 05:31, 26 June 2010 (UTC)

This discussion is going nowhere. Even though Kowalski clearly distinguishes Logic Programming from what he regards as Computational Logic, the views of no one person alone can decide this issue. On the other hand, the Russell-Norvig Introduction to AI should carry some weight. It focuses entirely on what the wikipedia article calls the "narrow view" of logic programming.

Also, the focus of this discussion on forward and backward reasoning is highly misleading. It completely disregards both the syntactic restrictions associated with logic programming clauses, and the declarative semantics.Logperson (talk) 15:37, 26 June 2010 (UTC)

There is no particular reason to prefer Russell-Norvig as an authority over Kowalski who wrote "The basic rules of inference are forward and backward reasoning."
Logperson seems committed to the (long-ago abandoned) thesis that "Prolog = Logic Programming." (talk) 17:23, 26 June 2010 (UTC)
Kowalski wrote this in relation to his version of Computational Logic, not in relation to Logic Programming. And yes, there is a reason to prefer Russell-Norvig, first because their textbook is used in approximately 90% of all AI courses, second because they are neutral.Logperson (talk) 19:20, 26 June 2010 (UTC)

Kowalski's work is a primary source that is preferable to the the Russell-Norvig undergraduate textbook, which is a secondary source (with the biases of Russell and Norvig). Why are you opposed to forward chaining? (talk) 20:51, 26 June 2010 (UTC)

Without checking the details, in Wikipedia, secondary sources are preferred to primary sources. — Arthur Rubin (talk) 23:33, 26 June 2010 (UTC)
Kowalski agrees with Russell-Norvig. His use of forward reasoning is in connection with what he calls Computational Logic, which is an extension of Logic Programming. I have nothing against forward reasoning or Computational Logic. I do object to arguing that because logic ought to include the use of forward reasoning for problem-solving, therefore logic programming does include forward reasoning.Logperson (talk) 05:24, 27 June 2010 (UTC)
Saying that forward chaining is excluded from Logic Programming only made sense for Kowalski when he was resisting the inclusion of forward chaining. When programs intermix forward and back chaining as Kowalski now allows, it makes no sense to exclude forward chaining from Logic Programming. So Kowalski has introduced a more general system called Computational Logic that includes forward chaining amongst many other extensions including abduction, probabilistic reasoning, etc. And he wrote that the "simplest versions" of Logic Programming used only backward chaining. So presumably the less simple versions of Logic Programming also use forward chaining.
The bottom line is that now that even Kowalski intermixes forward and backward chaining, Logic Programming naturally includes both forward and backward chaining becasue there is no longer any way to cleanly separate out just the backward chaining. (talk) 22:40, 27 June 2010 (UTC)

Edit request from, 22 November 2010[edit]

{{edit semi-protected}} The link to Fernando Pereira is for the wrong Fernando Pereira (the one linked is a Dutch photographer, while the one referred to is a Portuguese artificial intelligence researcher. The link below is to the web page of the Fernando Pereira referred to in the article. (talk) 15:54, 22 November 2010 (UTC)

Done Thanks. -Atmoz (talk) 17:47, 22 November 2010 (UTC)

Jacques_Cohen links to embriologist researcher not a CS reasarcher remove that please ! — Preceding unsigned comment added by (talk) 14:18, 24 February 2012 (UTC)

The introduction of the article is misleading[edit]

It fails to identify clearly the main distinguishing feature of logic programming, namely that it uses the language of logic, with its declarative reading, to represent programs and to perform computation. The article should not be concerned with other uses of logic or other kinds of programming, no matter how important they may be in their own right.

For example, John McCarthy advocated the use of logic as a language for knowledge representation and problem solving in AI, without suggesting that it should also be used for representing programs and for performing computation. Rather, he invented and promoted the mostly functional language LISP as a programming language without regarding it as a competitor to logic.

Carl Hewitt invented the programming language PLANNER, as a “language for proving theorems and manipulating models in a robot”. It anticipated and contributed to the development of logic programming, but it abandoned the declarative reading of logic in favor of a variety of procedural interpretations, including both backwards and forwards reasoning, and a notion similar to logic programming’s negation as failure. According to Kowalski and others, it was in large part the attempt to give PLANNER a declarative, logical interpretation that resulted in the invention of logic programming.

But neither McCarthy’s Advice Taker nor Hewitt’s PLANNER are logic programming languages, in the sense that the term has been in use since the mid 1970s. The Advice Taker is both declarative and logical, but it does not aspire to be a programming language. PLANNER uses logic, but abandons the declarative reading of logic in favor of various imperative readings. In contrast, logic programming and its various extensions, as it is generally understood, is based on the idea of using logical sentences of the form

G if G1 and … and Gn

to represent computer programs.

Some forms of logic programming, so understood, are purely declarative. For example, the kinds of programs written in datalog and in answer set programming. Other forms combine declarative and procedural interpretations, as in pure Prolog.

Unless there are convincing counter-arguments, I propose to edit the article along these lines. Compulogger (talk) 19:22, 19 August 2012 (UTC)

A Little Reedit of the Intro[edit]

The new intro is very missleading. I suppose there was an edit. The german article does a better job: , it mentions axioms instead of Horn Clause form. The field of logic programming is much broader than Prolog. The edit should be undone, it is based on a miss understanding of logic programming. Jan Burse (talk) 13:12, 26 August 2012 (UTC)
Just done a little edit and relativized the intro. Also saying the Clause form is G if G1 and .. and Gn was errorneous. The clause form is more general. So I replaced this by Horn clause form. A reference to Lloyd concerning the buggy clause form is also dubious, since his normal programs look a little different, namely G if [~]G1 and .. and [~]Gn. Hope this is fine. Hope this is fine. Jan Burse (talk) 13:23, 26 August 2012 (UTC)

Hi Janburse. Thank you for trying to improve my edits. However, I think you misunderstood the statement that logic programming and its various extensions, as it is generally understood, is based on the idea of using logical sentences of the form

G if G1 and … and Gn

1. Nothing here states that the Gi are atomic formula. Nor do your edits suggest that they are atomic. 2. The word "based" is intended to take into account that this is the basis of logic programming, not that it covers all forms of logic programming. 3. However, I completely agree that disjunctive logic programs should be mentioned, but they maybe they deserve a separate section in their own right.

Indeed, my edits to the introduction were only a start. The article is too concerned with history and not enough with technicalities. I hope to make further edits as soon as I have a little more time.

Best wishes. Compulogger (talk) 20:20, 26 August 2012 (UTC)

Hi, later in the course of the introduction, when sub-goaling is introduced as the procedural reading, this implies that G, G1, .., Gn are goals. Since it says "goal-reduction". Further take for example a CLP(*) model, this is a quite extreme example, since the program is most often just a very big query. This is an aspect that is also not reflected in the article. That a program is: rules + query, and not only: rules. But I was hesitant to also fix that. Jan Burse (talk) 16:26, 27 August 2012 (UTC)

programming paradigms[edit]

Would it not be appropriate to mention Logtalk in relation to Prolog as it brings OOP and more into most any Prolog?

Would it not be approproate to mention Icon (Unicon, Object Icon) in which failure is also used instead of boolean test?

G. Robert Shiplett 18:15, 15 January 2013 (UTC)

Logtalk can certainly be mentioned, but I don't think Icon has ever been considered an LP language. It has pattern matching and goal-directed execution, but I don't think it deals with rules and predicates, nor does it have logical variables and unification. QVVERTYVS (hm?) 14:17, 18 January 2014 (UTC)

Concurrent logic programming[edit]

I created a new article and moved some of the material from this article into the new one. I removed the discussion of Ehud Shapiro's influence on the FGCS Project, because it is repeated both in the article on FGCS and in the article on Ehud Shapiro. Moreover, some of the discussion is dubious, in any case.

Note that the section on concurrent constraint logic programming both in this article and in the article on concurrent constraint logic programming actually applies to concurrent logic programming, and is not specific to concurrent constraint logic programming. This should be cleaned up. Logperson (talk) 16:58, 14 May 2014 (UTC)


In my opinion, the article places too much emphasis on history. I will move the history and Prolog sections to the end of the article, to give them less emphasis. Another (and perhaps better) alternative would be to shorten and move the history and prolog sections to the end of the article, and create a new article on the history of logic programming. Logperson (talk) 13:14, 9 August 2014 (UTC)

Your edits haven't improved the article at all. Articles about scientific/engineering ideas typically start out with the history of the idea, see e.g. quantum mechanics. I'm going to move the history back up. QVVERTYVS (hm?) 09:23, 11 August 2014 (UTC)
I'm sorry you didn't like my moving the history section to the end, and I agree that your restructuring is an improvement both on the original and on my own edit. But when you state that you don't like my "edits", did you mean only this particular "edit" involving the history section, or the other "edits" as well? Logperson (talk) 20:03, 11 August 2014 (UTC)
Actually I meant that particular edit. Your examples seem fine. Sorry. QVVERTYVS (hm?) 09:59, 12 August 2014 (UTC)


The statement "Consequently, the indeterminacy of computations implies that not all logical consequences of the program can be deduced" represents Hewitt's POV, which may by dominant, but is not universal. The entire paragraph needs to be attributed, but the rest is (at least vaguely) attributed. — Arthur Rubin (talk) 17:18, 16 August 2014 (UTC)

Clean up[edit]

There have been a lot of changes since the "clean up" tag was inserted in 2010 at the top of the article. Of course, there are a lot of further improvements that can be made to the article. But, it seems to me, the article is now "clean" enough to stop drawing attention to its remaining deficiencies. Can someone in authority (administrator ?) have a look at this issue? Thanks. Logperson (talk) 08:07, 20 August 2014 (UTC)

You don't need an admin for that. Just remove the tag if you think the page is clean enough. QVVERTYVS (hm?) 13:41, 20 August 2014 (UTC)
Thanks, Quertyus, I'll do that. Logperson (talk) 13:59, 20 August 2014 (UTC)

This article is significantly obsolete and inaccurate.[edit]

This article is significantly obsolete and inaccurate.

More accurate information can be found here:

In particular the following deficiencies and inaccuracies in the article need to be fixed:

  • Lack of discussion of the distinction between Logic Programs as originally developed at MIT and Logic Programming as developed by Kowalski et. al.
  • Lack of discussion of the distinction between assertions (denoted by |-) and goals (denoted by ||-) including discussion of forward inference in Logic Programs dating back to Planner.
  • Lack of discussion of the distinction between massively concurrent processing of Logic Programs in ActorScript versus sequential backtrack control in Planner and Prolog
  • Lack of discussion of inconsistency robustness in logic programs

Carl (talk)

Just noticed a citation needed tag from March 2014 with vague reference in brackets: Carl Hewitt[citation needed] has argued that, concurrent logic programming is not based on logic in his sense that computational steps cannot be logically deduced [Hewitt and Agha, 1988]. Raquel Baranow (talk) 18:42, 6 November 2016 (UTC)
Thanks Racquel! See the following article for discussion of the issue: Inconsistency Robustness for Logic Programs
Carl (talk) 18:52, 6 November 2016 (UTC)
Carl All I could find in that article to support that statement was at footnote 29 with a ref to Hewitt 2011. Raquel Baranow (talk) 18:05, 7 November 2016 (UTC)
Raquel Baranow There is extensive discussion in the section "Is Computation Subsumed by Deduction?" on pages 21-26.
Carl (talk) 19:30, 7 November 2016 (UTC)

Delete redirect Relational programming?[edit]

According to the header of this talk page, Relational programming was merged to Logic programming. However, the term "relation programming" isn't mentioned at Logic programming at all, and apparently no content was actually merged when Relational programming was turned into a redirect to Logic programming. So perhaps Relational programming should be deleted? – Tea2min (talk) 12:11, 30 June 2018 (UTC)

It would be better to add something about Relational programming here. The type of material we need is hinted at in There was an old article on Relational programming that you can still see under the Relational programming redirect but it's not very clear. At a minimum, we ought to have something that clarifies the connection between logic programming and relational programming. EdJohnston (talk) 15:57, 30 June 2018 (UTC)
"Relational programming" seems to be the name for logic programming, preferred by many functional programmers. See for example: Friedman, D.P., Byrd, W.E., Kiselyov, O. and Hemann, J., 2018. The reasoned schemer. MIT Press. Here is a quote from the MIT Press web page: "Summary A new edition of a book, written in a humorous question-and-answer style, that shows how to implement and use an elegant little programming language for logic programming. The goal of this book is to show the beauty and elegance of relational programming, which captures the essence of logic programming. The book shows how to implement a relational programming language in Scheme, or in any other functional language, and demonstrates the remarkable flexibility of the resulting relational programs."Logperson (talk) 15:26, 9 July 2018 (UTC)