Newman's lemma

From testwiki
Jump to navigation Jump to search

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).

Template:Math theorem

Template:Math proof

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 a→b and a→c, there exists d such that b→∗d and c→∗d. If additionally it is required that the reduction chains b→∗d and c→∗d 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.

Template:Math theorem

Template:Math proof

References

  1. ↑ Template:Cite journal Cite error: <ref> tag with name "newman" defined in <references> is not used in prior text.
  2. ↑ Template:Cite journal Cite error: <ref> tag with name "huet" defined in <references> is not used in prior text.
  3. ↑ Template:Cite book Cite error: <ref> tag with name "klop" defined in <references> is not used in prior text.
  4. ↑ Template:Cite book Cite error: <ref> tag with name "harrison" defined in <references> is not used in prior text.
  5. ↑ Template:Cite book Cite error: <ref> tag with name "cohn" defined in <references> is not used in prior text.
  6. ↑ Template:Cite book Cite error: <ref> tag with name "terese" defined in <references> is not used in prior text.
  7. ↑ Template:Cite book Cite error: <ref> tag with name "trat" defined in <references> is not used in prior text.
  8. ↑ Template:Cite web Cite error: <ref> tag with name "van-oostrom" defined in <references> is not used in prior text.
  9. ↑ Template:Cite thesis Cite error: <ref> tag with name "eriksson-thesis" defined in <references> is not used in prior text.
  10. ↑ Template:Cite journal Cite error: <ref> tag with name "eriksson-journal" defined in <references> is not used in prior text.