Difference between revisions of "Term Rewriting"

From Termination-Portal.org
Jump to navigationJump to search
Line 1: Line 1:
 +
== General ==
 +
 
We use an adaption of the [https://project-coco.uibk.ac.at/ARI/ ARI format]. Our format differs from the formt used at COCO as follows:
 
We use an adaption of the [https://project-coco.uibk.ac.at/ARI/ ARI format]. Our format differs from the formt used at COCO as follows:
  
 
* We do not impose any variable conditions, so a rewrite rule is a pair of arbitrary terms.
 
* We do not impose any variable conditions, so a rewrite rule is a pair of arbitrary terms.
* Identifiers (i.e., names of variables or function symbols) must be valid [https://smtlib.cs.uiowa.edu/papers/smt-lib-reference-v2.6-r2021-05-12.pdf SMT-LIB symbols], whereas COCO uses a more liberal definition. Both simple and quoted symbols are allowed.
+
* Identifiers must be valid [https://smtlib.cs.uiowa.edu/papers/smt-lib-reference-v2.6-r2021-05-12.pdf SMT-LIB symbols], whereas COCO uses a more liberal definition. Both simple and quoted symbols are allowed.
* Rules are annotated with optional costs, which are natural numbers. So rules are defined as follows:
+
* Rules are annotated with optional costs, which are natural numbers. This allows, e.g., to model relative rewriting (by setting the cost of relative rules to 0). Categories may disallow costs. So rules are defined as follows:
<code>
+
<pre>
rule ::= ( rule term term cost?)
+
rule ::= ( rule term term cost? )
cond ::= :cost number
+
cond ::= :cost number
</code>
+
</pre>
 +
 
 +
In contrast to the former XTC format, the goal of the analysis is implicitly specified by the category.
 +
 
 +
== Termination ==
 +
 
 +
All termination categories consider termination w.r.t. arbitrary start terms.
 +
 
 +
=== Relative Termination ===
 +
 
 +
All categories for relative termination consider full rewriting.
 +
See [https://project-coco.uibk.ac.at/ARI/trs.php here] for the format of all categories for relative termination.
 +
 
 +
==== TRS Relative ====
 +
 
 +
* no further restrictions
 +
 
 +
==== SRS Relative ====
 +
 
 +
* just unary function symbols
 +
 
 +
=== Non-Relative Termination ===
 +
 
 +
All categories for non-relative termination disallow costs.
 +
 
 +
==== TRS Standard ====
 +
 
 +
* full rewriting
 +
* see [https://project-coco.uibk.ac.at/ARI/trs.php here]
 +
 
 +
==== SRS Standard ====
 +
 
 +
* full rewriting
 +
* just unary function symbols
 +
* see [https://project-coco.uibk.ac.at/ARI/trs.php here]
 +
 
 +
==== TRS Contextsensitive ====
 +
 
 +
* context-sensitive rewriting
 +
* see [https://project-coco.uibk.ac.at/ARI/cstrs.php here]
 +
 
 +
==== TRS Equational ====
 +
 
 +
Here, a ''theory'' may be added to declarations of function symbols.
 +
 
 +
<pre>
 +
fun ::= ( fun identifier number theory? )
 +
theory ::= :theory [A | C | AC]
 +
</pre>
 +
 
 +
* full rewriting modulo associativity / commutativity / associativity and commutativity
 +
 
 +
==== TRS Innermost ====
 +
 
 +
* innermost rewriting
 +
* see [https://project-coco.uibk.ac.at/ARI/trs.php here]
 +
 
 +
==== TRS Outermost ====
 +
 
 +
* outermost rewriting
 +
* see [https://project-coco.uibk.ac.at/ARI/trs.php here]
 +
 
 +
==== TRS Conditional ====
 +
 
 +
* full conditional rewriting
 +
* see [https://project-coco.uibk.ac.at/ARI/ctrs.php here]
 +
* currently, we only support the condition-type ''oriented''
 +
 
 +
==== TRS Conditional - Operational Termination ====
 +
 
 +
* TODO clarify the difference to ''TRS Conditional''
 +
* see [https://project-coco.uibk.ac.at/ARI/ctrs.php here]
 +
* currently, we only support the condition-type ''oriented''
 +
 
 +
== Complexity ==
 +
 
 +
See [https://project-coco.uibk.ac.at/ARI/trs.php here] for all complexity categories.
 +
 
 +
=== Runtime Complexity ===
 +
 
 +
All categories for runtime complexity consider basic start terms only.
 +
 
 +
==== Runtime Complexity Innermost ====
 +
 
 +
* innermost rewriting
 +
 
 +
==== Runtime Complexity Full ====
 +
 
 +
* full rewriting
 +
 
 +
=== Derivational Complexity ===
 +
 
 +
All categories for derivational complexity consider arbitrary start terms.
 +
 
 +
==== Derivational Complexity Innermost ====
 +
 
 +
* innermost rewriting
 +
 
 +
==== Derivational Complexity Full ====
 +
 
 +
* full rewriting

Revision as of 19:37, 15 April 2024

General

We use an adaption of the ARI format. Our format differs from the formt used at COCO as follows:

  • We do not impose any variable conditions, so a rewrite rule is a pair of arbitrary terms.
  • Identifiers must be valid SMT-LIB symbols, whereas COCO uses a more liberal definition. Both simple and quoted symbols are allowed.
  • Rules are annotated with optional costs, which are natural numbers. This allows, e.g., to model relative rewriting (by setting the cost of relative rules to 0). Categories may disallow costs. So rules are defined as follows:
rule ::= ( rule term term cost? )
cond ::= :cost number

In contrast to the former XTC format, the goal of the analysis is implicitly specified by the category.

Termination

All termination categories consider termination w.r.t. arbitrary start terms.

Relative Termination

All categories for relative termination consider full rewriting. See here for the format of all categories for relative termination.

TRS Relative

  • no further restrictions

SRS Relative

  • just unary function symbols

Non-Relative Termination

All categories for non-relative termination disallow costs.

TRS Standard

  • full rewriting
  • see here

SRS Standard

  • full rewriting
  • just unary function symbols
  • see here

TRS Contextsensitive

  • context-sensitive rewriting
  • see here

TRS Equational

Here, a theory may be added to declarations of function symbols.

fun ::= ( fun identifier number theory? )
theory ::= :theory [A | C | AC]
  • full rewriting modulo associativity / commutativity / associativity and commutativity

TRS Innermost

  • innermost rewriting
  • see here

TRS Outermost

  • outermost rewriting
  • see here

TRS Conditional

  • full conditional rewriting
  • see here
  • currently, we only support the condition-type oriented

TRS Conditional - Operational Termination

  • TODO clarify the difference to TRS Conditional
  • see here
  • currently, we only support the condition-type oriented

Complexity

See here for all complexity categories.

Runtime Complexity

All categories for runtime complexity consider basic start terms only.

Runtime Complexity Innermost

  • innermost rewriting

Runtime Complexity Full

  • full rewriting

Derivational Complexity

All categories for derivational complexity consider arbitrary start terms.

Derivational Complexity Innermost

  • innermost rewriting

Derivational Complexity Full

  • full rewriting