Talk:Knuth–Bendix completion algorithm

message: The algorithm described in the article appears to me to be a special case of the Knuth-Bendix algorithm that is described in Knuth and Bendix's paper from Computational Problems in Abstract Algebra.
In that paper, the algorithm operated not on strings, but on expression trees that could contain wildcard terms.  Rather than finding a pair of confluent string-rewriting rules by finding two rules whose left sides shared a prefix and suffix, it would perform an expression unification on the left-hand sides; if the rules could be unified, a new rule was added to the system.  
A typical example might involve a (prefix) binary operator symbol x, a unary operator symbol i, and a nullary operator symbol e.  One might have the rules:
:xxABC -> xAxBC   (associative law)
:xDiD -> e            (right inverse)
Where A, B, C, and D are term variables that can stand for arbitrary terms.  Unifying the left-hand sides yields the assignments A = A, B = B, C = ixAB, D = xAB. so that:
:xxABixAB -> xAxBixAB  (a special case of the first rule)
:xxABixAB -> e                     (a special case of the second rule)
From which one can then derive:
:xAxBixAB -> e
The original Knuth-Bendix paper used this technique, and the algorithm, to find minimal sets of axioms for group theory, among other examples.  Group theory normally starts with axioms like:
: xeA -> A   (left identity)
: xAe -> A   (right identity)
: xiAA -> e  (left inverse)
: xAiA -> e  (right inverse)
(Taking e to mean the identity element, iA to mean the inverse of A, and xAB to mean the product of A and B.)   But in fact any three of these imply the fourth, and the algorithm was able to find a proof of this and to eliminate one of the axioms.  The example I showed above has inferred the group-theoretic identity A(B(AB)-1) = e from the associative law and the right inverse law.
The algorithm described in the Wikipedia article, appears to be a much more limited special case.
-- Dominus 02:06, 16 August 2006 (UTC)
replies: text: I doubt the current version is detailing the algorithm in its full generality also. It would be nice to describe the algorithm for a general equational specification and the resultant term rewriting system -- I have such a description (Term Rewriting Systems, Terese), but I don't quite have the time currently to provide it. Dysprosia 05:05, 16 August 2006 (UTC)
replies: text: You're right, see the older discussion. It's just that nobody has had time to do anything about it. If this goes on for long enough (weeks or months), I might find some. This is not a promise ;-). --Stephan Schulz 05:49, 16 August 2006 (UTC)

text:  The new tag about dispute of accuracy might be a little misleading.  The current algorithm is quite correct as stated, and is the (unoptimized) Knuth-Bendix completion procedure for finding a reduced confluent rewriting system for a finitely presented monoid.  The scope of the algorithm is fairly clearly indicated in that section.  The only dispute is whether to offer the algorithm for finitely presented monoids as the algorithm.  Resolving the dispute might be as simple as renaming the section.  I'll do that and remove the dispute tag later this week if no one objects. JackSchmidt 00:15, 9 October 2007 (UTC)
replies: text: I agree that would be preferable; thanks.  Moreover, I don't think there is any dispute that the algorithm as presented is not the algorithm.  In this case, at least, there is a canonical source, namely the Knuth-Bendix paper reprinted in Leech.  The algorithm as presented in that paper is the algorithm.  -- Dominus 01:29, 9 October 2007 (UTC)

text: I don't think that the presented algorithm is entirely accurate because it is missing a critical pair case, namely when the lhs(left hand side) of one rewriting rule is completely enclosed in the lhs of another rule, e.g., {d->abc, e->b}, then abc will rewrite to d or aec and since this is not detected by the current algorithm it cannot be made confluent.  Adding this case will make the algorithm correct.  — Preceding unsigned comment added by Silvescu (talk • contribs) 16:11, 24 September 2012 (UTC)
thread_title: Wrong Algorithm

message: The focus of my academic interest in the last 20 years is to automate the abstract mathematical reasoning in order to make it applicable by those, who have no time to endeepen in mathematics.  Now I turn the importance from low to high, see the reason for that below.  In fact, also the field should be changed from simple applied mathematics to artificial intelligence and applied mathematics, but I don't know how to do it.
It turned out during the last 15 years, that the abstract idea behind the Knuth-Bendix is simply essential to the automatically find and localise the calculation/deduction ideas needed in the applied abstract mathematics.  The Knuth-Bendix critical pairs surviving the upcoming reduction phase of the algorithm are in fact the ideas.  As soon as we replace the notion of critical pair with the notion of interferencing pair of knowledge resources, then the Knuth-Bendix will tell us, how to find key ideas in a much more general situation.  Hence it is only the historical surface, that the Knuth-Bendix is illustrated using classical structures like groups or rings or alike.
:
I completely agree, that the article is too technical.  I suggest to remove almost all the technical details, and we have to tell the whole Knuth-Bendix idea in a much more human way.  Sorry, but in the near future I do not see enough time to do it myself.  But I encourage everybody to do it, to forget about the technical details, and to focus on the later much wider use of the algorithm.  It is also very important to tell the reader, that Knuth-Bendix algorithm is NOT an algorithm in fact!
prohlep (talk) 22:32, 18 July 2008 (UTC)
replies: text: I think the lead makes that clear using the term semi-algorithm in the first sentence. 86.127.138.67 (talk) 10:22, 21 April 2015 (UTC)
thread_title:  Comment 

message: The article and the example are unfortunately quite useless. Regarding the example, x^3=1 of course implies (xy)^3=1 if it is meant to be under generalization, and the set definition notation is equally incorrect in the first place. If x and y are meant to be constants, then the set definition notation is even more buggy. Sigh.
:"x^3=1 of course implies (xy)^3=1" - Not true, these are finitely presented monoids and there is no unification going on. You cannot substitute x->xy in the first expression to get the second. However somwhat in  in the spirit of your comment I think (xy)^3 should be written explicitly as xyxyxy and the same for x^3.  — Preceding unsigned comment added by Silvescu (talk • contribs) 16:40, 24 September 2012 (UTC)
replies: text: Then maybe we should rename x, y in a, b. Sth that looks more constants than variables.--Fschwarzentruber (talk) 21:10, 29 May 2016 (UTC)
thread_title:  Bad Article and Example