Rewrite order

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Lua error in package.lua at line 80: module 'strict' not found.

File:Triangle diagram of rewrite rule application.pdf
Rewriting s to t by a rule l::=r. If l and r are related by a rewrite relation, so are s and t. A simplifcation ordering always relates l and s, and similarly r and t.

In theoretical computer science, in particular in automated theorem proving and term rewriting, a binary relation (→) on the set of terms is called a rewrite relation if it is closed under contextual embedding and under instantiation; formally: if lr implies u[lσ]pu[rσ]p for all terms l, r, u, each path p of u, and each substitution σ. If (→) is also irreflexive and transitive, then it is called a rewrite ordering,[1] or rewrite preorder. If the latter (→) is moreover well-founded, it is called a reduction ordering,[2] or a reduction preorder. Given a binary relation R, its rewrite closure is the smallest rewrite relation containing R.[3] A transitive and reflexive rewrite relation that contains the subterm ordering is called a simplification ordering.[4]

Properties

  • The converse, the symmetric closure, the reflexive closure, and the transitive closure of a rewrite relation is again a rewrite relation, as are the union and the intersection of two rewrite relations.[5]
  • The converse of a rewrite order is again a rewrite order.
  • While rewrite orders exist that are total on the set of ground terms ("ground-total" for short), no rewrite order can be total on the set of all terms.[note 3][6]
  • A term rewriting system {l1::=r1,...,ln::=rn, ...} is terminating if its rules are subset of a reduction ordering.[note 4][2]
  • Conversely, for every terminating term rewriting system, the transitive closure of (::=) is a reduction ordering,[2] which needn't be extendable to a ground-total one, however. For example, the ground term rewriting system { f(a)::=f(b), g(b)::=g(a) } is terminating, but can be shown so using a reduction ordering only if the constants a and b are incomparable.[note 5][7]
  • A ground-total and well-founded rewrite ordering[note 6] necessarily contains the proper subterm relation on ground terms.[9]
  • Conversely, a rewrite ordering that contains the subterm relation[note 7] is necessarily well-founded, when the set of function symbols is finite.[6][note 8]
  • A finite term rewriting system {l1::=r1,...,ln::=rn, ...} is terminating if its rules are subset of the strict part of a simplification ordering.[4][10]

Notes

<templatestyles src="Reflist/styles.css" />

Cite error: Invalid <references> tag; parameter "group" is allowed only.

Use <references />, or <references group="..." />

References

Lua error in package.lua at line 80: module 'strict' not found.

<templatestyles src="Reflist/styles.css" />

Cite error: Invalid <references> tag; parameter "group" is allowed only.

Use <references />, or <references group="..." />

<templatestyles src="Asbox/styles.css"></templatestyles>

  1. Dershowitz, Jouannaud (1990), sect.2.1, p.251
  2. 2.0 2.1 2.2 Dershowitz, Jouannaud (1990), sect.5.1, p.270
  3. Dershowitz, Jouannaud (1990), sect.2.2, p.252
  4. 4.0 4.1 Dershowitz, Jouannaud (1990), sect.5.2, p.274
  5. Dershowitz, Jouannaud (1990), sect.2.1, p.251
  6. 6.0 6.1 Dershowitz, Jouannaud (1990), sect.5.1, p.272
  7. 7.0 7.1 Dershowitz, Jouannaud (1990), sect.5.1, p.271
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Else, t|p > t for some term t and position p, implying an infinite descending chain t > t[t]p > t[t[t]p]p > ... [7][8]
  10. Lua error in package.lua at line 80: module 'strict' not found. Here: p.287; the notions are named slightly different.


Cite error: <ref> tags exist for a group named "note", but no corresponding <references group="note"/> tag was found, or a closing </ref> is missing