YES

The TRS could be proven terminating. The proof took 545 ms.

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (12ms).
 | – Problem 2 was processed with processor SubtermCriterion (1ms).
 | – Problem 3 was processed with processor PolynomialLinearRange4iUR (478ms).
 |    | – Problem 4 was processed with processor DependencyGraph (1ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

rev2#(x, cons(y, l)) → rev2#(y, l)rev1#(x, cons(y, l)) → rev1#(y, l)
rev#(cons(x, l)) → rev2#(x, l)rev#(cons(x, l)) → rev1#(x, l)
rev2#(x, cons(y, l)) → rev#(cons(x, rev2(y, l)))

Rewrite Rules

rev(nil) → nilrev(cons(x, l)) → cons(rev1(x, l), rev2(x, l))
rev1(0, nil) → 0rev1(s(x), nil) → s(x)
rev1(x, cons(y, l)) → rev1(y, l)rev2(x, nil) → nil
rev2(x, cons(y, l)) → rev(cons(x, rev2(y, l)))

Original Signature

Termination of terms over the following signature is verified: rev, rev1, rev2, 0, s, nil, cons

Strategy


The following SCCs where found

rev1#(x, cons(y, l)) → rev1#(y, l)

rev2#(x, cons(y, l)) → rev2#(y, l)rev#(cons(x, l)) → rev2#(x, l)
rev2#(x, cons(y, l)) → rev#(cons(x, rev2(y, l)))

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

rev1#(x, cons(y, l)) → rev1#(y, l)

Rewrite Rules

rev(nil) → nilrev(cons(x, l)) → cons(rev1(x, l), rev2(x, l))
rev1(0, nil) → 0rev1(s(x), nil) → s(x)
rev1(x, cons(y, l)) → rev1(y, l)rev2(x, nil) → nil
rev2(x, cons(y, l)) → rev(cons(x, rev2(y, l)))

Original Signature

Termination of terms over the following signature is verified: rev, rev1, rev2, 0, s, nil, cons

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

rev1#(x, cons(y, l)) → rev1#(y, l)

Problem 3: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

rev2#(x, cons(y, l)) → rev2#(y, l)rev#(cons(x, l)) → rev2#(x, l)
rev2#(x, cons(y, l)) → rev#(cons(x, rev2(y, l)))

Rewrite Rules

rev(nil) → nilrev(cons(x, l)) → cons(rev1(x, l), rev2(x, l))
rev1(0, nil) → 0rev1(s(x), nil) → s(x)
rev1(x, cons(y, l)) → rev1(y, l)rev2(x, nil) → nil
rev2(x, cons(y, l)) → rev(cons(x, rev2(y, l)))

Original Signature

Termination of terms over the following signature is verified: rev, rev1, rev2, 0, s, nil, cons

Strategy


Polynomial Interpretation

Improved Usable rules

rev2(x, nil) → nilrev(nil) → nil
rev(cons(x, l)) → cons(rev1(x, l), rev2(x, l))rev2(x, cons(y, l)) → rev(cons(x, rev2(y, l)))

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

rev2#(x, cons(y, l)) → rev2#(y, l)rev#(cons(x, l)) → rev2#(x, l)

Problem 4: DependencyGraph



Dependency Pair Problem

Dependency Pairs

rev2#(x, cons(y, l)) → rev#(cons(x, rev2(y, l)))

Rewrite Rules

rev(nil) → nilrev(cons(x, l)) → cons(rev1(x, l), rev2(x, l))
rev1(0, nil) → 0rev1(s(x), nil) → s(x)
rev1(x, cons(y, l)) → rev1(y, l)rev2(x, nil) → nil
rev2(x, cons(y, l)) → rev(cons(x, rev2(y, l)))

Original Signature

Termination of terms over the following signature is verified: rev1, rev, 0, rev2, s, cons, nil

Strategy


There are no SCCs!