left

Dependency Pairs

right
AProVE Help SystemTechniquesDependency Pairs

What are dependency pairs?

We only give a short introduction to dependency pairs here. For a more detailed introduction we refer to [AG '00].

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

we get the following three dependency pairs:

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)

From infinite reductions to infinite chains

With dependency pairs it is possible to define the notion of P-chains over R: a (possible infinite) sequence s1 → t1, s2 → t2, s3 → t3, ... of (variable renamed) dependency pairs from P is a chain iff there exists a substitution σ such that t1σ →*R s2σ, t2σ →*R s3σ, ...
In [AG '00] it is shown that the following two properties are equivalent So, we can show termination of R by showing absence of infinite chains. There is a corresponding result for innermost termination where one has to show absence of innermost chains.

From infinite chains to SCCs

The next thing AProVE uses is the dependency graph. Its nodes are the dependency pairs and to nodes are connected iff they build a chain. Now, every infinite chain must correspond to a cycle in the dependency graph. Therefore, it is sufficient to show that there are no P-chains over R for every maximal cycle P (that is a strongly connected component - SCC - in the graph). Hence, AProVE partitions the dependency graph into its SCCs and works on these. In the example we get two SCCS:
{ QUOT(s(x), s(y)) → QUOT(minus(x, y), s(y)) } and
{ MINUS(s(x), s(y)) → MINUS(x, y) }
As 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].