YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (68ms).
 | – Problem 2 was processed with processor PolynomialLinearRange4 (386ms).
 |    | – Problem 3 was processed with processor PolynomialLinearRange4 (99ms).
 |    |    | – Problem 4 was processed with processor DependencyGraph (56ms).
 |    |    |    | – Problem 5 was processed with processor PolynomialLinearRange4 (26ms).
 |    |    |    |    | – Problem 6 was processed with processor PolynomialLinearRange4 (14ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

T(first(x_1, x_2)) → T(x_2)if#(false, X, Y) → T(Y)
T(first(X, Z)) → first#(X, Z)T(from(s(X))) → from#(s(X))
T(s(x_1)) → T(x_1)and#(true, X) → T(X)
add#(0, X) → T(X)T(add(x_1, x_2)) → T(x_1)
T(add(X, Y)) → add#(X, Y)T(first(x_1, x_2)) → T(x_1)
if#(true, X, Y) → T(X)T(add(x_1, x_2)) → T(x_2)

Rewrite Rules

and(true, X) → Xand(false, Y) → false
if(true, X, Y) → Xif(false, X, Y) → Y
add(0, X) → Xadd(s(X), Y) → s(add(X, Y))
first(0, X) → nilfirst(s(X), cons(Y, Z)) → cons(Y, first(X, Z))
from(X) → cons(X, from(s(X)))

Original Signature

Termination of terms over the following signature is verified: 0, s, if, true, false, from, add, first, and, nil, cons

Strategy

Context-sensitive strategy:
μ(from#) = μ(true) = μ(from) = μ(T) = μ(0) = μ(s) = μ(false) = μ(nil) = μ(cons) = ∅
μ(and#) = μ(add) = μ(and) = μ(if) = μ(if#) = μ(add#) = {1}
μ(first#) = μ(first) = {1, 2}


The following SCCs where found

T(first(x_1, x_2)) → T(x_2)T(s(x_1)) → T(x_1)
add#(0, X) → T(X)T(add(x_1, x_2)) → T(x_1)
T(add(X, Y)) → add#(X, Y)T(first(x_1, x_2)) → T(x_1)
T(add(x_1, x_2)) → T(x_2)

Problem 2: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

T(first(x_1, x_2)) → T(x_2)T(s(x_1)) → T(x_1)
add#(0, X) → T(X)T(add(x_1, x_2)) → T(x_1)
T(add(X, Y)) → add#(X, Y)T(first(x_1, x_2)) → T(x_1)
T(add(x_1, x_2)) → T(x_2)

Rewrite Rules

and(true, X) → Xand(false, Y) → false
if(true, X, Y) → Xif(false, X, Y) → Y
add(0, X) → Xadd(s(X), Y) → s(add(X, Y))
first(0, X) → nilfirst(s(X), cons(Y, Z)) → cons(Y, first(X, Z))
from(X) → cons(X, from(s(X)))

Original Signature

Termination of terms over the following signature is verified: 0, s, if, true, false, from, add, first, and, nil, cons

Strategy

Context-sensitive strategy:
μ(from#) = μ(true) = μ(from) = μ(T) = μ(0) = μ(s) = μ(false) = μ(cons) = μ(nil) = ∅
μ(and#) = μ(add) = μ(and) = μ(if) = μ(if#) = μ(add#) = {1}
μ(first#) = μ(first) = {1, 2}


Polynomial Interpretation

Standard Usable rules

from(X) → cons(X, from(s(X)))add(s(X), Y) → s(add(X, Y))
add(0, X) → Xfirst(s(X), cons(Y, Z)) → cons(Y, first(X, Z))
first(0, X) → nil

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

T(s(x_1)) → T(x_1)

Problem 3: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

T(first(x_1, x_2)) → T(x_2)T(add(x_1, x_2)) → T(x_1)
add#(0, X) → T(X)T(add(X, Y)) → add#(X, Y)
T(first(x_1, x_2)) → T(x_1)T(add(x_1, x_2)) → T(x_2)

Rewrite Rules

and(true, X) → Xand(false, Y) → false
if(true, X, Y) → Xif(false, X, Y) → Y
add(0, X) → Xadd(s(X), Y) → s(add(X, Y))
first(0, X) → nilfirst(s(X), cons(Y, Z)) → cons(Y, first(X, Z))
from(X) → cons(X, from(s(X)))

Original Signature

Termination of terms over the following signature is verified: 0, s, if, false, true, from, add, first, cons, nil, and

Strategy

Context-sensitive strategy:
μ(from#) = μ(true) = μ(from) = μ(T) = μ(0) = μ(s) = μ(false) = μ(nil) = μ(cons) = ∅
μ(and#) = μ(add) = μ(and) = μ(if) = μ(if#) = μ(add#) = {1}
μ(first#) = μ(first) = {1, 2}


Polynomial Interpretation

Standard Usable rules

from(X) → cons(X, from(s(X)))add(s(X), Y) → s(add(X, Y))
add(0, X) → Xfirst(s(X), cons(Y, Z)) → cons(Y, first(X, Z))
first(0, X) → nil

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

T(add(X, Y)) → add#(X, Y)

Problem 4: DependencyGraph



Dependency Pair Problem

Dependency Pairs

T(first(x_1, x_2)) → T(x_2)add#(0, X) → T(X)
T(add(x_1, x_2)) → T(x_1)T(first(x_1, x_2)) → T(x_1)
T(add(x_1, x_2)) → T(x_2)

Rewrite Rules

and(true, X) → Xand(false, Y) → false
if(true, X, Y) → Xif(false, X, Y) → Y
add(0, X) → Xadd(s(X), Y) → s(add(X, Y))
first(0, X) → nilfirst(s(X), cons(Y, Z)) → cons(Y, first(X, Z))
from(X) → cons(X, from(s(X)))

Original Signature

Termination of terms over the following signature is verified: 0, s, if, true, false, from, add, first, and, nil, cons

Strategy

Context-sensitive strategy:
μ(from#) = μ(true) = μ(from) = μ(T) = μ(0) = μ(s) = μ(false) = μ(cons) = μ(nil) = ∅
μ(and#) = μ(add) = μ(and) = μ(if) = μ(if#) = μ(add#) = {1}
μ(first#) = μ(first) = {1, 2}


The following SCCs where found

T(first(x_1, x_2)) → T(x_2)T(add(x_1, x_2)) → T(x_1)
T(first(x_1, x_2)) → T(x_1)T(add(x_1, x_2)) → T(x_2)

Problem 5: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

T(first(x_1, x_2)) → T(x_2)T(add(x_1, x_2)) → T(x_1)
T(first(x_1, x_2)) → T(x_1)T(add(x_1, x_2)) → T(x_2)

Rewrite Rules

and(true, X) → Xand(false, Y) → false
if(true, X, Y) → Xif(false, X, Y) → Y
add(0, X) → Xadd(s(X), Y) → s(add(X, Y))
first(0, X) → nilfirst(s(X), cons(Y, Z)) → cons(Y, first(X, Z))
from(X) → cons(X, from(s(X)))

Original Signature

Termination of terms over the following signature is verified: 0, s, if, true, false, from, add, first, and, nil, cons

Strategy

Context-sensitive strategy:
μ(from#) = μ(true) = μ(from) = μ(T) = μ(0) = μ(s) = μ(false) = μ(nil) = μ(cons) = ∅
μ(and#) = μ(add) = μ(and) = μ(if) = μ(if#) = μ(add#) = {1}
μ(first#) = μ(first) = {1, 2}


Polynomial Interpretation

There are no usable rules

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

T(first(x_1, x_2)) → T(x_2)T(first(x_1, x_2)) → T(x_1)

Problem 6: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

T(add(x_1, x_2)) → T(x_1)T(add(x_1, x_2)) → T(x_2)

Rewrite Rules

and(true, X) → Xand(false, Y) → false
if(true, X, Y) → Xif(false, X, Y) → Y
add(0, X) → Xadd(s(X), Y) → s(add(X, Y))
first(0, X) → nilfirst(s(X), cons(Y, Z)) → cons(Y, first(X, Z))
from(X) → cons(X, from(s(X)))

Original Signature

Termination of terms over the following signature is verified: 0, s, if, false, true, from, add, first, cons, nil, and

Strategy

Context-sensitive strategy:
μ(from#) = μ(true) = μ(from) = μ(T) = μ(0) = μ(s) = μ(false) = μ(cons) = μ(nil) = ∅
μ(and#) = μ(add) = μ(and) = μ(if) = μ(if#) = μ(add#) = {1}
μ(first#) = μ(first) = {1, 2}


Polynomial Interpretation

There are no usable rules

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

T(add(x_1, x_2)) → T(x_1)T(add(x_1, x_2)) → T(x_2)