Newman's lemma
In theoretical computer science, specifically in term rewriting, Newman's lemma, also commonly called the diamond lemma, is a criterion to prove that an abstract rewriting system is confluent. It states that local confluence is a sufficient condition for confluence, provided that the system is also terminating. This is useful since local confluence is usually easier to verify than confluence.
The lemma was originally proved by Max Newman in 1942.Template:R A considerably simpler proof (given below) was proposed by Gérard Huet.Template:R A number of other proofs exist.Template:R
Statement and proof
The lemma is purely combinatorial and applies to any relation. Owing to the context where it is commonly applied, it is stated below in the terminology of abstract rewriting systems (this is simply a set whose elements are called terms, equipped with a relation called reduction, and see the corresponding article for definitions of termination, confluence, local confluence and normal forms).
Eriksson's polygon property lemma
A related result was shown by Kimmo Eriksson in 1993.Template:R Recall that an abstract rewriting system is locally confluent if for any two reductions and , there exists such that and . If additionally it is required that the reduction chains and have the same length, then the system is said to have the polygon property. Examples of rewriting systems with the polygon property include bubble sort and the chip-firing game.
References
- ↑ Template:Cite journal Cite error:
<ref>tag with name "newman" defined in<references>is not used in prior text. - ↑ Template:Cite journal Cite error:
<ref>tag with name "huet" defined in<references>is not used in prior text. - ↑ Template:Cite book Cite error:
<ref>tag with name "klop" defined in<references>is not used in prior text. - ↑ Template:Cite book Cite error:
<ref>tag with name "harrison" defined in<references>is not used in prior text. - ↑ Template:Cite book Cite error:
<ref>tag with name "cohn" defined in<references>is not used in prior text. - ↑ Template:Cite book Cite error:
<ref>tag with name "terese" defined in<references>is not used in prior text. - ↑ Template:Cite book Cite error:
<ref>tag with name "trat" defined in<references>is not used in prior text. - ↑ Template:Cite web Cite error:
<ref>tag with name "van-oostrom" defined in<references>is not used in prior text. - ↑ Template:Cite thesis Cite error:
<ref>tag with name "eriksson-thesis" defined in<references>is not used in prior text. - ↑ Template:Cite journal Cite error:
<ref>tag with name "eriksson-journal" defined in<references>is not used in prior text.