The TRS could be proven non-terminating. The proof took 537 ms.

The following reduction sequence is a witness for non-termination:

rev#(cons(___x, nil)) →* rev#(cons(___x, nil))

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (0ms).
 | – Problem 2 was processed with processor SubtermCriterion (0ms).
 | – Problem 3 was processed with processor PolynomialOrdering (0ms).
 | – Problem 4 was processed with processor BackwardInstantiation (5ms).
 |    | – Problem 5 was processed with processor BackwardInstantiation (3ms).
 |    |    | – Problem 6 was processed with processor BackwardInstantiation (2ms).
 |    |    |    | – Problem 7 remains open; application of the following processors failed [ForwardInstantiation (2ms), Propagation (1ms)].

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

rev#(cons(x, xs)) → rev#(cons(x, nil))app#(cons(x, xs), ys) → app#(xs, ys)
shuffle#(cons(x, xs)) → shuffle#(rev(xs))shuffle#(cons(x, xs)) → rev#(xs)

Rewrite Rules

app(nil, xs) → nilapp(cons(x, xs), ys) → cons(x, app(xs, ys))
rev(nil) → nilrev(cons(x, xs)) → append(xs, rev(cons(x, nil)))
shuffle(nil) → nilshuffle(cons(x, xs)) → cons(x, shuffle(rev(xs)))

Original Signature

Termination of terms over the following signature is verified: app, append, rev, shuffle, nil, cons

Strategy


Parameters


The following SCCs where found

rev#(cons(x, xs)) → rev#(cons(x, nil))

app#(cons(x, xs), ys) → app#(xs, ys)

shuffle#(cons(x, xs)) → shuffle#(rev(xs))

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

app#(cons(x, xs), ys) → app#(xs, ys)

Rewrite Rules

app(nil, xs) → nilapp(cons(x, xs), ys) → cons(x, app(xs, ys))
rev(nil) → nilrev(cons(x, xs)) → append(xs, rev(cons(x, nil)))
shuffle(nil) → nilshuffle(cons(x, xs)) → cons(x, shuffle(rev(xs)))

Original Signature

Termination of terms over the following signature is verified: app, append, rev, shuffle, nil, cons

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

app#(cons(x, xs), ys) → app#(xs, ys)

Problem 3: PolynomialOrdering



Dependency Pair Problem

Dependency Pairs

shuffle#(cons(x, xs)) → shuffle#(rev(xs))

Rewrite Rules

app(nil, xs) → nilapp(cons(x, xs), ys) → cons(x, app(xs, ys))
rev(nil) → nilrev(cons(x, xs)) → append(xs, rev(cons(x, nil)))
shuffle(nil) → nilshuffle(cons(x, xs)) → cons(x, shuffle(rev(xs)))

Original Signature

Termination of terms over the following signature is verified: app, append, rev, shuffle, nil, cons

Strategy


Parameters


Polynomial Interpretation

Improved Usable rules

rev(cons(x, xs)) → append(xs, rev(cons(x, nil)))rev(nil) → nil

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

shuffle#(cons(x, xs)) → shuffle#(rev(xs))

Problem 4: BackwardInstantiation



Dependency Pair Problem

Dependency Pairs

rev#(cons(x, xs)) → rev#(cons(x, nil))

Rewrite Rules

app(nil, xs) → nilapp(cons(x, xs), ys) → cons(x, app(xs, ys))
rev(nil) → nilrev(cons(x, xs)) → append(xs, rev(cons(x, nil)))
shuffle(nil) → nilshuffle(cons(x, xs)) → cons(x, shuffle(rev(xs)))

Original Signature

Termination of terms over the following signature is verified: app, append, rev, shuffle, nil, cons

Strategy


Instantiation

For all potential predecessors l → r of the rule rev#(cons(x, xs)) → rev#(cons(x, nil)) on dependency pair chains it holds that: Thus, rev#(cons(x, xs)) → rev#(cons(x, nil)) is replaced by instances determined through the above matching. These instances are:
rev#(cons(_x, nil)) → rev#(cons(_x, nil))

Problem 5: BackwardInstantiation



Dependency Pair Problem

Dependency Pairs

rev#(cons(_x, nil)) → rev#(cons(_x, nil))

Rewrite Rules

app(nil, xs) → nilapp(cons(x, xs), ys) → cons(x, app(xs, ys))
rev(nil) → nilrev(cons(x, xs)) → append(xs, rev(cons(x, nil)))
shuffle(nil) → nilshuffle(cons(x, xs)) → cons(x, shuffle(rev(xs)))

Original Signature

Termination of terms over the following signature is verified: append, app, rev, shuffle, cons, nil

Strategy


Instantiation

For all potential predecessors l → r of the rule rev#(cons(_x, nil)) → rev#(cons(_x, nil)) on dependency pair chains it holds that: Thus, rev#(cons(_x, nil)) → rev#(cons(_x, nil)) is replaced by instances determined through the above matching. These instances are:
rev#(cons(__x, nil)) → rev#(cons(__x, nil))

Problem 6: BackwardInstantiation



Dependency Pair Problem

Dependency Pairs

rev#(cons(__x, nil)) → rev#(cons(__x, nil))

Rewrite Rules

app(nil, xs) → nilapp(cons(x, xs), ys) → cons(x, app(xs, ys))
rev(nil) → nilrev(cons(x, xs)) → append(xs, rev(cons(x, nil)))
shuffle(nil) → nilshuffle(cons(x, xs)) → cons(x, shuffle(rev(xs)))

Original Signature

Termination of terms over the following signature is verified: app, append, rev, shuffle, nil, cons

Strategy


Instantiation

For all potential predecessors l → r of the rule rev#(cons(__x, nil)) → rev#(cons(__x, nil)) on dependency pair chains it holds that: Thus, rev#(cons(__x, nil)) → rev#(cons(__x, nil)) is replaced by instances determined through the above matching. These instances are:
rev#(cons(___x, nil)) → rev#(cons(___x, nil))