YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (179ms).
 | – Problem 2 was processed with processor SubtermCriterion (2ms).
 | – Problem 3 was processed with processor SubtermCriterion (2ms).
 | – Problem 4 was processed with processor SubtermCriterion (2ms).
 | – Problem 5 was processed with processor SubtermCriterion (2ms).
 | – Problem 6 was processed with processor SubtermCriterion (1ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

sum#(app(l1, l2))+#(sum(l1), sum(l2))*#(s(x), s(y))+#(x, y)
*#(*(x, y), z)*#(x, *(y, z))*#(*(x, y), z)*#(y, z)
+#(+(x, y), z)+#(y, z)sum#(cons(x, l))sum#(l)
prod#(cons(x, l))*#(x, prod(l))sum#(cons(x, l))+#(x, sum(l))
+#(s(x), s(y))+#(x, y)+#(+(x, y), z)+#(x, +(y, z))
prod#(app(l1, l2))*#(prod(l1), prod(l2))prod#(cons(x, l))prod#(l)
app#(cons(x, l1), l2)app#(l1, l2)sum#(app(l1, l2))sum#(l1)
prod#(app(l1, l2))prod#(l1)*#(s(x), s(y))*#(x, y)
*#(s(x), s(y))+#(*(x, y), +(x, y))prod#(app(l1, l2))prod#(l2)
sum#(app(l1, l2))sum#(l2)

Rewrite Rules

+(x, 0)x+(0, x)x
+(s(x), s(y))s(s(+(x, y)))+(+(x, y), z)+(x, +(y, z))
*(x, 0)0*(0, x)0
*(s(x), s(y))s(+(*(x, y), +(x, y)))*(*(x, y), z)*(x, *(y, z))
app(nil, l)lapp(cons(x, l1), l2)cons(x, app(l1, l2))
sum(nil)0sum(cons(x, l))+(x, sum(l))
sum(app(l1, l2))+(sum(l1), sum(l2))prod(nil)s(0)
prod(cons(x, l))*(x, prod(l))prod(app(l1, l2))*(prod(l1), prod(l2))

Original Signature

Termination of terms over the following signature is verified: app, 0, s, *, +, sum, nil, cons, prod

Strategy


The following SCCs where found

app#(cons(x, l1), l2) → app#(l1, l2)

sum#(app(l1, l2)) → sum#(l1)sum#(cons(x, l)) → sum#(l)
sum#(app(l1, l2)) → sum#(l2)

*#(s(x), s(y)) → *#(x, y)*#(*(x, y), z) → *#(y, z)
*#(*(x, y), z) → *#(x, *(y, z))

+#(+(x, y), z) → +#(y, z)+#(s(x), s(y)) → +#(x, y)
+#(+(x, y), z) → +#(x, +(y, z))

prod#(cons(x, l)) → prod#(l)prod#(app(l1, l2)) → prod#(l1)
prod#(app(l1, l2)) → prod#(l2)

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

*#(s(x), s(y))*#(x, y)*#(*(x, y), z)*#(y, z)
*#(*(x, y), z)*#(x, *(y, z))

Rewrite Rules

+(x, 0)x+(0, x)x
+(s(x), s(y))s(s(+(x, y)))+(+(x, y), z)+(x, +(y, z))
*(x, 0)0*(0, x)0
*(s(x), s(y))s(+(*(x, y), +(x, y)))*(*(x, y), z)*(x, *(y, z))
app(nil, l)lapp(cons(x, l1), l2)cons(x, app(l1, l2))
sum(nil)0sum(cons(x, l))+(x, sum(l))
sum(app(l1, l2))+(sum(l1), sum(l2))prod(nil)s(0)
prod(cons(x, l))*(x, prod(l))prod(app(l1, l2))*(prod(l1), prod(l2))

Original Signature

Termination of terms over the following signature is verified: app, 0, s, *, +, sum, nil, cons, prod

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

*#(s(x), s(y))*#(x, y)*#(*(x, y), z)*#(y, z)
*#(*(x, y), z)*#(x, *(y, z))

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

prod#(cons(x, l))prod#(l)prod#(app(l1, l2))prod#(l1)
prod#(app(l1, l2))prod#(l2)

Rewrite Rules

+(x, 0)x+(0, x)x
+(s(x), s(y))s(s(+(x, y)))+(+(x, y), z)+(x, +(y, z))
*(x, 0)0*(0, x)0
*(s(x), s(y))s(+(*(x, y), +(x, y)))*(*(x, y), z)*(x, *(y, z))
app(nil, l)lapp(cons(x, l1), l2)cons(x, app(l1, l2))
sum(nil)0sum(cons(x, l))+(x, sum(l))
sum(app(l1, l2))+(sum(l1), sum(l2))prod(nil)s(0)
prod(cons(x, l))*(x, prod(l))prod(app(l1, l2))*(prod(l1), prod(l2))

Original Signature

Termination of terms over the following signature is verified: app, 0, s, *, +, sum, nil, cons, prod

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

prod#(cons(x, l))prod#(l)prod#(app(l1, l2))prod#(l1)
prod#(app(l1, l2))prod#(l2)

Problem 4: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

+#(+(x, y), z)+#(y, z)+#(s(x), s(y))+#(x, y)
+#(+(x, y), z)+#(x, +(y, z))

Rewrite Rules

+(x, 0)x+(0, x)x
+(s(x), s(y))s(s(+(x, y)))+(+(x, y), z)+(x, +(y, z))
*(x, 0)0*(0, x)0
*(s(x), s(y))s(+(*(x, y), +(x, y)))*(*(x, y), z)*(x, *(y, z))
app(nil, l)lapp(cons(x, l1), l2)cons(x, app(l1, l2))
sum(nil)0sum(cons(x, l))+(x, sum(l))
sum(app(l1, l2))+(sum(l1), sum(l2))prod(nil)s(0)
prod(cons(x, l))*(x, prod(l))prod(app(l1, l2))*(prod(l1), prod(l2))

Original Signature

Termination of terms over the following signature is verified: app, 0, s, *, +, sum, nil, cons, prod

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

+#(+(x, y), z)+#(y, z)+#(s(x), s(y))+#(x, y)
+#(+(x, y), z)+#(x, +(y, z))

Problem 5: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

sum#(app(l1, l2))sum#(l1)sum#(cons(x, l))sum#(l)
sum#(app(l1, l2))sum#(l2)

Rewrite Rules

+(x, 0)x+(0, x)x
+(s(x), s(y))s(s(+(x, y)))+(+(x, y), z)+(x, +(y, z))
*(x, 0)0*(0, x)0
*(s(x), s(y))s(+(*(x, y), +(x, y)))*(*(x, y), z)*(x, *(y, z))
app(nil, l)lapp(cons(x, l1), l2)cons(x, app(l1, l2))
sum(nil)0sum(cons(x, l))+(x, sum(l))
sum(app(l1, l2))+(sum(l1), sum(l2))prod(nil)s(0)
prod(cons(x, l))*(x, prod(l))prod(app(l1, l2))*(prod(l1), prod(l2))

Original Signature

Termination of terms over the following signature is verified: app, 0, s, *, +, sum, nil, cons, prod

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

sum#(app(l1, l2))sum#(l1)sum#(cons(x, l))sum#(l)
sum#(app(l1, l2))sum#(l2)

Problem 6: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

app#(cons(x, l1), l2)app#(l1, l2)

Rewrite Rules

+(x, 0)x+(0, x)x
+(s(x), s(y))s(s(+(x, y)))+(+(x, y), z)+(x, +(y, z))
*(x, 0)0*(0, x)0
*(s(x), s(y))s(+(*(x, y), +(x, y)))*(*(x, y), z)*(x, *(y, z))
app(nil, l)lapp(cons(x, l1), l2)cons(x, app(l1, l2))
sum(nil)0sum(cons(x, l))+(x, sum(l))
sum(app(l1, l2))+(sum(l1), sum(l2))prod(nil)s(0)
prod(cons(x, l))*(x, prod(l))prod(app(l1, l2))*(prod(l1), prod(l2))

Original Signature

Termination of terms over the following signature is verified: app, 0, s, *, +, sum, nil, cons, prod

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

app#(cons(x, l1), l2)app#(l1, l2)