YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (207ms).
 | – Problem 2 was processed with processor PolynomialLinearRange4iUR (1080ms).
 |    | – Problem 8 was processed with processor PolynomialLinearRange4iUR (850ms).
 |    |    | – Problem 10 was processed with processor DependencyGraph (7ms).
 | – Problem 3 was processed with processor PolynomialLinearRange4iUR (95ms).
 |    | – Problem 9 was processed with processor DependencyGraph (1ms).
 | – Problem 4 was processed with processor SubtermCriterion (9ms).
 | – Problem 5 was processed with processor SubtermCriterion (0ms).
 |    | – Problem 7 was processed with processor DependencyGraph (0ms).
 | – Problem 6 was processed with processor SubtermCriterion (1ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

replace#(N, M, cons(K, L)) → eq#(N, K)replace#(N, M, cons(K, L)) → ifrepl#(eq(N, K), N, M, cons(K, L))
ifselsort#(false, cons(N, L)) → replace#(min(cons(N, L)), N, L)selsort#(cons(N, L)) → min#(cons(N, L))
ifselsort#(false, cons(N, L)) → selsort#(replace(min(cons(N, L)), N, L))selsort#(cons(N, L)) → ifselsort#(eq(N, min(cons(N, L))), cons(N, L))
min#(cons(N, cons(M, L))) → ifmin#(le(N, M), cons(N, cons(M, L)))ifselsort#(true, cons(N, L)) → selsort#(L)
ifmin#(true, cons(N, cons(M, L))) → min#(cons(N, L))le#(s(X), s(Y)) → le#(X, Y)
ifselsort#(false, cons(N, L)) → min#(cons(N, L))eq#(s(X), s(Y)) → eq#(X, Y)
selsort#(cons(N, L)) → eq#(N, min(cons(N, L)))ifmin#(false, cons(N, cons(M, L))) → min#(cons(M, L))
ifrepl#(false, N, M, cons(K, L)) → replace#(N, M, L)min#(cons(N, cons(M, L))) → le#(N, M)

Rewrite Rules

eq(0, 0) → trueeq(0, s(Y)) → false
eq(s(X), 0) → falseeq(s(X), s(Y)) → eq(X, Y)
le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)min(cons(0, nil)) → 0
min(cons(s(N), nil)) → s(N)min(cons(N, cons(M, L))) → ifmin(le(N, M), cons(N, cons(M, L)))
ifmin(true, cons(N, cons(M, L))) → min(cons(N, L))ifmin(false, cons(N, cons(M, L))) → min(cons(M, L))
replace(N, M, nil) → nilreplace(N, M, cons(K, L)) → ifrepl(eq(N, K), N, M, cons(K, L))
ifrepl(true, N, M, cons(K, L)) → cons(M, L)ifrepl(false, N, M, cons(K, L)) → cons(K, replace(N, M, L))
selsort(nil) → nilselsort(cons(N, L)) → ifselsort(eq(N, min(cons(N, L))), cons(N, L))
ifselsort(true, cons(N, L)) → cons(N, selsort(L))ifselsort(false, cons(N, L)) → cons(min(cons(N, L)), selsort(replace(min(cons(N, L)), N, L)))

Original Signature

Termination of terms over the following signature is verified: min, ifselsort, true, ifmin, replace, ifrepl, 0, s, le, selsort, false, cons, eq, nil

Strategy


The following SCCs where found

eq#(s(X), s(Y)) → eq#(X, Y)

ifselsort#(false, cons(N, L)) → selsort#(replace(min(cons(N, L)), N, L))selsort#(cons(N, L)) → ifselsort#(eq(N, min(cons(N, L))), cons(N, L))
ifselsort#(true, cons(N, L)) → selsort#(L)

replace#(N, M, cons(K, L)) → ifrepl#(eq(N, K), N, M, cons(K, L))ifrepl#(false, N, M, cons(K, L)) → replace#(N, M, L)

min#(cons(N, cons(M, L))) → ifmin#(le(N, M), cons(N, cons(M, L)))ifmin#(false, cons(N, cons(M, L))) → min#(cons(M, L))
ifmin#(true, cons(N, cons(M, L))) → min#(cons(N, L))

le#(s(X), s(Y)) → le#(X, Y)

Problem 2: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

ifselsort#(false, cons(N, L)) → selsort#(replace(min(cons(N, L)), N, L))selsort#(cons(N, L)) → ifselsort#(eq(N, min(cons(N, L))), cons(N, L))
ifselsort#(true, cons(N, L)) → selsort#(L)

Rewrite Rules

eq(0, 0) → trueeq(0, s(Y)) → false
eq(s(X), 0) → falseeq(s(X), s(Y)) → eq(X, Y)
le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)min(cons(0, nil)) → 0
min(cons(s(N), nil)) → s(N)min(cons(N, cons(M, L))) → ifmin(le(N, M), cons(N, cons(M, L)))
ifmin(true, cons(N, cons(M, L))) → min(cons(N, L))ifmin(false, cons(N, cons(M, L))) → min(cons(M, L))
replace(N, M, nil) → nilreplace(N, M, cons(K, L)) → ifrepl(eq(N, K), N, M, cons(K, L))
ifrepl(true, N, M, cons(K, L)) → cons(M, L)ifrepl(false, N, M, cons(K, L)) → cons(K, replace(N, M, L))
selsort(nil) → nilselsort(cons(N, L)) → ifselsort(eq(N, min(cons(N, L))), cons(N, L))
ifselsort(true, cons(N, L)) → cons(N, selsort(L))ifselsort(false, cons(N, L)) → cons(min(cons(N, L)), selsort(replace(min(cons(N, L)), N, L)))

Original Signature

Termination of terms over the following signature is verified: min, ifselsort, true, ifmin, replace, ifrepl, 0, s, le, selsort, false, cons, eq, nil

Strategy


Polynomial Interpretation

Improved Usable rules

replace(N, M, cons(K, L)) → ifrepl(eq(N, K), N, M, cons(K, L))replace(N, M, nil) → nil
ifrepl(false, N, M, cons(K, L)) → cons(K, replace(N, M, L))ifrepl(true, N, M, cons(K, L)) → cons(M, L)

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

ifselsort#(true, cons(N, L)) → selsort#(L)

Problem 8: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

ifselsort#(false, cons(N, L)) → selsort#(replace(min(cons(N, L)), N, L))selsort#(cons(N, L)) → ifselsort#(eq(N, min(cons(N, L))), cons(N, L))

Rewrite Rules

eq(0, 0) → trueeq(0, s(Y)) → false
eq(s(X), 0) → falseeq(s(X), s(Y)) → eq(X, Y)
le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)min(cons(0, nil)) → 0
min(cons(s(N), nil)) → s(N)min(cons(N, cons(M, L))) → ifmin(le(N, M), cons(N, cons(M, L)))
ifmin(true, cons(N, cons(M, L))) → min(cons(N, L))ifmin(false, cons(N, cons(M, L))) → min(cons(M, L))
replace(N, M, nil) → nilreplace(N, M, cons(K, L)) → ifrepl(eq(N, K), N, M, cons(K, L))
ifrepl(true, N, M, cons(K, L)) → cons(M, L)ifrepl(false, N, M, cons(K, L)) → cons(K, replace(N, M, L))
selsort(nil) → nilselsort(cons(N, L)) → ifselsort(eq(N, min(cons(N, L))), cons(N, L))
ifselsort(true, cons(N, L)) → cons(N, selsort(L))ifselsort(false, cons(N, L)) → cons(min(cons(N, L)), selsort(replace(min(cons(N, L)), N, L)))

Original Signature

Termination of terms over the following signature is verified: min, ifselsort, true, ifmin, replace, ifrepl, 0, s, le, selsort, false, nil, cons, eq

Strategy


Polynomial Interpretation

Improved Usable rules

replace(N, M, cons(K, L)) → ifrepl(eq(N, K), N, M, cons(K, L))replace(N, M, nil) → nil
ifrepl(false, N, M, cons(K, L)) → cons(K, replace(N, M, L))ifrepl(true, N, M, cons(K, L)) → cons(M, L)

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

ifselsort#(false, cons(N, L)) → selsort#(replace(min(cons(N, L)), N, L))

Problem 10: DependencyGraph



Dependency Pair Problem

Dependency Pairs

selsort#(cons(N, L)) → ifselsort#(eq(N, min(cons(N, L))), cons(N, L))

Rewrite Rules

eq(0, 0) → trueeq(0, s(Y)) → false
eq(s(X), 0) → falseeq(s(X), s(Y)) → eq(X, Y)
le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)min(cons(0, nil)) → 0
min(cons(s(N), nil)) → s(N)min(cons(N, cons(M, L))) → ifmin(le(N, M), cons(N, cons(M, L)))
ifmin(true, cons(N, cons(M, L))) → min(cons(N, L))ifmin(false, cons(N, cons(M, L))) → min(cons(M, L))
replace(N, M, nil) → nilreplace(N, M, cons(K, L)) → ifrepl(eq(N, K), N, M, cons(K, L))
ifrepl(true, N, M, cons(K, L)) → cons(M, L)ifrepl(false, N, M, cons(K, L)) → cons(K, replace(N, M, L))
selsort(nil) → nilselsort(cons(N, L)) → ifselsort(eq(N, min(cons(N, L))), cons(N, L))
ifselsort(true, cons(N, L)) → cons(N, selsort(L))ifselsort(false, cons(N, L)) → cons(min(cons(N, L)), selsort(replace(min(cons(N, L)), N, L)))

Original Signature

Termination of terms over the following signature is verified: min, ifselsort, true, ifmin, replace, ifrepl, 0, s, le, selsort, false, eq, nil, cons

Strategy


There are no SCCs!

Problem 3: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

min#(cons(N, cons(M, L))) → ifmin#(le(N, M), cons(N, cons(M, L)))ifmin#(false, cons(N, cons(M, L))) → min#(cons(M, L))
ifmin#(true, cons(N, cons(M, L))) → min#(cons(N, L))

Rewrite Rules

eq(0, 0) → trueeq(0, s(Y)) → false
eq(s(X), 0) → falseeq(s(X), s(Y)) → eq(X, Y)
le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)min(cons(0, nil)) → 0
min(cons(s(N), nil)) → s(N)min(cons(N, cons(M, L))) → ifmin(le(N, M), cons(N, cons(M, L)))
ifmin(true, cons(N, cons(M, L))) → min(cons(N, L))ifmin(false, cons(N, cons(M, L))) → min(cons(M, L))
replace(N, M, nil) → nilreplace(N, M, cons(K, L)) → ifrepl(eq(N, K), N, M, cons(K, L))
ifrepl(true, N, M, cons(K, L)) → cons(M, L)ifrepl(false, N, M, cons(K, L)) → cons(K, replace(N, M, L))
selsort(nil) → nilselsort(cons(N, L)) → ifselsort(eq(N, min(cons(N, L))), cons(N, L))
ifselsort(true, cons(N, L)) → cons(N, selsort(L))ifselsort(false, cons(N, L)) → cons(min(cons(N, L)), selsort(replace(min(cons(N, L)), N, L)))

Original Signature

Termination of terms over the following signature is verified: min, ifselsort, true, ifmin, replace, ifrepl, 0, s, le, selsort, false, cons, eq, nil

Strategy


Polynomial Interpretation

Improved Usable rules

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

min#(cons(N, cons(M, L))) → ifmin#(le(N, M), cons(N, cons(M, L)))

Problem 9: DependencyGraph



Dependency Pair Problem

Dependency Pairs

ifmin#(false, cons(N, cons(M, L))) → min#(cons(M, L))ifmin#(true, cons(N, cons(M, L))) → min#(cons(N, L))

Rewrite Rules

eq(0, 0) → trueeq(0, s(Y)) → false
eq(s(X), 0) → falseeq(s(X), s(Y)) → eq(X, Y)
le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)min(cons(0, nil)) → 0
min(cons(s(N), nil)) → s(N)min(cons(N, cons(M, L))) → ifmin(le(N, M), cons(N, cons(M, L)))
ifmin(true, cons(N, cons(M, L))) → min(cons(N, L))ifmin(false, cons(N, cons(M, L))) → min(cons(M, L))
replace(N, M, nil) → nilreplace(N, M, cons(K, L)) → ifrepl(eq(N, K), N, M, cons(K, L))
ifrepl(true, N, M, cons(K, L)) → cons(M, L)ifrepl(false, N, M, cons(K, L)) → cons(K, replace(N, M, L))
selsort(nil) → nilselsort(cons(N, L)) → ifselsort(eq(N, min(cons(N, L))), cons(N, L))
ifselsort(true, cons(N, L)) → cons(N, selsort(L))ifselsort(false, cons(N, L)) → cons(min(cons(N, L)), selsort(replace(min(cons(N, L)), N, L)))

Original Signature

Termination of terms over the following signature is verified: min, ifselsort, true, ifmin, replace, ifrepl, 0, s, le, selsort, false, nil, cons, eq

Strategy


There are no SCCs!

Problem 4: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

eq#(s(X), s(Y)) → eq#(X, Y)

Rewrite Rules

eq(0, 0) → trueeq(0, s(Y)) → false
eq(s(X), 0) → falseeq(s(X), s(Y)) → eq(X, Y)
le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)min(cons(0, nil)) → 0
min(cons(s(N), nil)) → s(N)min(cons(N, cons(M, L))) → ifmin(le(N, M), cons(N, cons(M, L)))
ifmin(true, cons(N, cons(M, L))) → min(cons(N, L))ifmin(false, cons(N, cons(M, L))) → min(cons(M, L))
replace(N, M, nil) → nilreplace(N, M, cons(K, L)) → ifrepl(eq(N, K), N, M, cons(K, L))
ifrepl(true, N, M, cons(K, L)) → cons(M, L)ifrepl(false, N, M, cons(K, L)) → cons(K, replace(N, M, L))
selsort(nil) → nilselsort(cons(N, L)) → ifselsort(eq(N, min(cons(N, L))), cons(N, L))
ifselsort(true, cons(N, L)) → cons(N, selsort(L))ifselsort(false, cons(N, L)) → cons(min(cons(N, L)), selsort(replace(min(cons(N, L)), N, L)))

Original Signature

Termination of terms over the following signature is verified: min, ifselsort, true, ifmin, replace, ifrepl, 0, s, le, selsort, false, cons, eq, nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

eq#(s(X), s(Y)) → eq#(X, Y)

Problem 5: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

replace#(N, M, cons(K, L)) → ifrepl#(eq(N, K), N, M, cons(K, L))ifrepl#(false, N, M, cons(K, L)) → replace#(N, M, L)

Rewrite Rules

eq(0, 0) → trueeq(0, s(Y)) → false
eq(s(X), 0) → falseeq(s(X), s(Y)) → eq(X, Y)
le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)min(cons(0, nil)) → 0
min(cons(s(N), nil)) → s(N)min(cons(N, cons(M, L))) → ifmin(le(N, M), cons(N, cons(M, L)))
ifmin(true, cons(N, cons(M, L))) → min(cons(N, L))ifmin(false, cons(N, cons(M, L))) → min(cons(M, L))
replace(N, M, nil) → nilreplace(N, M, cons(K, L)) → ifrepl(eq(N, K), N, M, cons(K, L))
ifrepl(true, N, M, cons(K, L)) → cons(M, L)ifrepl(false, N, M, cons(K, L)) → cons(K, replace(N, M, L))
selsort(nil) → nilselsort(cons(N, L)) → ifselsort(eq(N, min(cons(N, L))), cons(N, L))
ifselsort(true, cons(N, L)) → cons(N, selsort(L))ifselsort(false, cons(N, L)) → cons(min(cons(N, L)), selsort(replace(min(cons(N, L)), N, L)))

Original Signature

Termination of terms over the following signature is verified: min, ifselsort, true, ifmin, replace, ifrepl, 0, s, le, selsort, false, cons, eq, nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

ifrepl#(false, N, M, cons(K, L)) → replace#(N, M, L)

Problem 7: DependencyGraph



Dependency Pair Problem

Dependency Pairs

replace#(N, M, cons(K, L)) → ifrepl#(eq(N, K), N, M, cons(K, L))

Rewrite Rules

eq(0, 0) → trueeq(0, s(Y)) → false
eq(s(X), 0) → falseeq(s(X), s(Y)) → eq(X, Y)
le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)min(cons(0, nil)) → 0
min(cons(s(N), nil)) → s(N)min(cons(N, cons(M, L))) → ifmin(le(N, M), cons(N, cons(M, L)))
ifmin(true, cons(N, cons(M, L))) → min(cons(N, L))ifmin(false, cons(N, cons(M, L))) → min(cons(M, L))
replace(N, M, nil) → nilreplace(N, M, cons(K, L)) → ifrepl(eq(N, K), N, M, cons(K, L))
ifrepl(true, N, M, cons(K, L)) → cons(M, L)ifrepl(false, N, M, cons(K, L)) → cons(K, replace(N, M, L))
selsort(nil) → nilselsort(cons(N, L)) → ifselsort(eq(N, min(cons(N, L))), cons(N, L))
ifselsort(true, cons(N, L)) → cons(N, selsort(L))ifselsort(false, cons(N, L)) → cons(min(cons(N, L)), selsort(replace(min(cons(N, L)), N, L)))

Original Signature

Termination of terms over the following signature is verified: min, ifselsort, true, ifmin, replace, ifrepl, 0, s, le, selsort, false, nil, cons, eq

Strategy


There are no SCCs!

Problem 6: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

le#(s(X), s(Y)) → le#(X, Y)

Rewrite Rules

eq(0, 0) → trueeq(0, s(Y)) → false
eq(s(X), 0) → falseeq(s(X), s(Y)) → eq(X, Y)
le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)min(cons(0, nil)) → 0
min(cons(s(N), nil)) → s(N)min(cons(N, cons(M, L))) → ifmin(le(N, M), cons(N, cons(M, L)))
ifmin(true, cons(N, cons(M, L))) → min(cons(N, L))ifmin(false, cons(N, cons(M, L))) → min(cons(M, L))
replace(N, M, nil) → nilreplace(N, M, cons(K, L)) → ifrepl(eq(N, K), N, M, cons(K, L))
ifrepl(true, N, M, cons(K, L)) → cons(M, L)ifrepl(false, N, M, cons(K, L)) → cons(K, replace(N, M, L))
selsort(nil) → nilselsort(cons(N, L)) → ifselsort(eq(N, min(cons(N, L))), cons(N, L))
ifselsort(true, cons(N, L)) → cons(N, selsort(L))ifselsort(false, cons(N, L)) → cons(min(cons(N, L)), selsort(replace(min(cons(N, L)), N, L)))

Original Signature

Termination of terms over the following signature is verified: min, ifselsort, true, ifmin, replace, ifrepl, 0, s, le, selsort, false, cons, eq, nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

le#(s(X), s(Y)) → le#(X, Y)