![]() |
Dependency Pairs |
![]() |
AProVE Help System → Techniques → | Dependency Pairs |
We start with a given TRS R and first split the signature in two parts: the defined symbols D (marked in blue) and the remaining symbols C (the constructors, marked in orange), where the set D consists of those symbols that occur as root symbols of a rule of R. For all defined symbols f we build a new corresponding tuple symbol F (tuple symbols are marked in cyan). Then for each rule l → r ∈ R where a subterm s of r has a defined root we construct the dependency pair l' → s'. Here, l' is built of l by replacing the root symbol of l by the corresponding tuple symbol. The same is done with s' and s. We usually write s → t for a dependency pair and use the letter P for a set of DPs.
For example for the TRS
minus(x, 0) → x
minus(s(x), s(y)) → minus(x, y)
quot(0, s(y)) → 0
quot(s(x), s(y)) → s(quot(minus(x, y), s(y)))
QUOT(s(x), s(y)) → QUOT(minus(x, y), s(y))
QUOT(s(x), s(y)) → MINUS(x, y)
MINUS(s(x), s(y)) → MINUS(x, y)
{ QUOT(s(x), s(y)) → QUOT(minus(x, y), s(y)) } andAs the dependency graph is in general not computable AProVE uses recent approximations for the real graph. EDG* is used for the termination case [HM '03] and EIDG** is case of innermost termination [GTSKF '03].
{ MINUS(s(x), s(y)) → MINUS(x, y) }