YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (1004ms).
 | – Problem 2 was processed with processor SubtermCriterion (24ms).
 |    | – Problem 11 was processed with processor SubtermCriterion (2ms).
 | – Problem 3 was processed with processor SubtermCriterion (2ms).
 | – Problem 4 was processed with processor PolynomialLinearRange4iUR (1766ms).
 |    | – Problem 13 was processed with processor PolynomialLinearRange4iUR (1142ms).
 | – Problem 5 was processed with processor SubtermCriterion (23ms).
 | – Problem 6 was processed with processor SubtermCriterion (26ms).
 | – Problem 7 was processed with processor SubtermCriterion (23ms).
 |    | – Problem 12 was processed with processor SubtermCriterion (1ms).
 | – Problem 8 was processed with processor SubtermCriterion (0ms).
 | – Problem 9 was processed with processor SubtermCriterion (3ms).
 | – Problem 10 was processed with processor SubtermCriterion (1ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

proper#(cons(X1, X2)) → proper#(X1)top#(ok(X)) → top#(active(X))
active#(app(X1, X2)) → active#(X1)proper#(zWadr(X1, X2)) → proper#(X1)
cons#(ok(X1), ok(X2)) → cons#(X1, X2)active#(app(X1, X2)) → app#(active(X1), X2)
from#(ok(X)) → from#(X)active#(app(X1, X2)) → app#(X1, active(X2))
active#(cons(X1, X2)) → cons#(active(X1), X2)app#(mark(X1), X2) → app#(X1, X2)
active#(zWadr(cons(X, XS), cons(Y, YS))) → cons#(X, nil)active#(prefix(L)) → prefix#(L)
top#(mark(X)) → proper#(X)proper#(zWadr(X1, X2)) → proper#(X2)
proper#(from(X)) → proper#(X)proper#(prefix(X)) → proper#(X)
active#(app(cons(X, XS), YS)) → cons#(X, app(XS, YS))active#(zWadr(cons(X, XS), cons(Y, YS))) → zWadr#(XS, YS)
active#(prefix(X)) → prefix#(active(X))top#(mark(X)) → top#(proper(X))
proper#(cons(X1, X2)) → proper#(X2)active#(app(cons(X, XS), YS)) → app#(XS, YS)
active#(prefix(X)) → active#(X)zWadr#(X1, mark(X2)) → zWadr#(X1, X2)
active#(from(X)) → s#(X)active#(zWadr(cons(X, XS), cons(Y, YS))) → app#(Y, cons(X, nil))
proper#(s(X)) → proper#(X)prefix#(ok(X)) → prefix#(X)
prefix#(mark(X)) → prefix#(X)zWadr#(mark(X1), X2) → zWadr#(X1, X2)
proper#(zWadr(X1, X2)) → zWadr#(proper(X1), proper(X2))active#(zWadr(cons(X, XS), cons(Y, YS))) → cons#(app(Y, cons(X, nil)), zWadr(XS, YS))
active#(cons(X1, X2)) → active#(X1)zWadr#(ok(X1), ok(X2)) → zWadr#(X1, X2)
active#(prefix(L)) → zWadr#(L, prefix(L))cons#(mark(X1), X2) → cons#(X1, X2)
proper#(app(X1, X2)) → app#(proper(X1), proper(X2))active#(from(X)) → from#(active(X))
from#(mark(X)) → from#(X)proper#(app(X1, X2)) → proper#(X2)
top#(ok(X)) → active#(X)active#(from(X)) → cons#(X, from(s(X)))
active#(zWadr(X1, X2)) → active#(X1)proper#(from(X)) → from#(proper(X))
app#(X1, mark(X2)) → app#(X1, X2)proper#(app(X1, X2)) → proper#(X1)
active#(app(X1, X2)) → active#(X2)active#(zWadr(X1, X2)) → zWadr#(active(X1), X2)
active#(from(X)) → active#(X)proper#(prefix(X)) → prefix#(proper(X))
app#(ok(X1), ok(X2)) → app#(X1, X2)active#(zWadr(X1, X2)) → active#(X2)
active#(s(X)) → s#(active(X))s#(ok(X)) → s#(X)
s#(mark(X)) → s#(X)proper#(cons(X1, X2)) → cons#(proper(X1), proper(X2))
active#(prefix(L)) → cons#(nil, zWadr(L, prefix(L)))active#(s(X)) → active#(X)
proper#(s(X)) → s#(proper(X))active#(zWadr(X1, X2)) → zWadr#(X1, active(X2))
active#(from(X)) → from#(s(X))

Rewrite Rules

active(app(nil, YS)) → mark(YS)active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: app, zWadr, s, prefix, active, mark, ok, from, proper, nil, cons, top

Strategy


The following SCCs where found

prefix#(mark(X)) → prefix#(X)prefix#(ok(X)) → prefix#(X)

cons#(mark(X1), X2) → cons#(X1, X2)cons#(ok(X1), ok(X2)) → cons#(X1, X2)

app#(ok(X1), ok(X2)) → app#(X1, X2)app#(X1, mark(X2)) → app#(X1, X2)
app#(mark(X1), X2) → app#(X1, X2)

proper#(s(X)) → proper#(X)proper#(cons(X1, X2)) → proper#(X1)
proper#(cons(X1, X2)) → proper#(X2)proper#(zWadr(X1, X2)) → proper#(X1)
proper#(app(X1, X2)) → proper#(X1)proper#(app(X1, X2)) → proper#(X2)
proper#(from(X)) → proper#(X)proper#(zWadr(X1, X2)) → proper#(X2)
proper#(prefix(X)) → proper#(X)

from#(mark(X)) → from#(X)from#(ok(X)) → from#(X)

top#(mark(X)) → top#(proper(X))top#(ok(X)) → top#(active(X))

s#(mark(X)) → s#(X)s#(ok(X)) → s#(X)

zWadr#(ok(X1), ok(X2)) → zWadr#(X1, X2)zWadr#(mark(X1), X2) → zWadr#(X1, X2)
zWadr#(X1, mark(X2)) → zWadr#(X1, X2)

active#(from(X)) → active#(X)active#(s(X)) → active#(X)
active#(app(X1, X2)) → active#(X1)active#(zWadr(X1, X2)) → active#(X1)
active#(zWadr(X1, X2)) → active#(X2)active#(prefix(X)) → active#(X)
active#(cons(X1, X2)) → active#(X1)active#(app(X1, X2)) → active#(X2)

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

zWadr#(ok(X1), ok(X2)) → zWadr#(X1, X2)zWadr#(mark(X1), X2) → zWadr#(X1, X2)
zWadr#(X1, mark(X2)) → zWadr#(X1, X2)

Rewrite Rules

active(app(nil, YS)) → mark(YS)active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: app, zWadr, s, prefix, active, mark, ok, from, proper, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

zWadr#(ok(X1), ok(X2)) → zWadr#(X1, X2)zWadr#(mark(X1), X2) → zWadr#(X1, X2)

Problem 11: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

zWadr#(X1, mark(X2)) → zWadr#(X1, X2)

Rewrite Rules

active(app(nil, YS)) → mark(YS)active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: app, zWadr, s, prefix, active, ok, mark, proper, from, top, cons, nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

zWadr#(X1, mark(X2)) → zWadr#(X1, X2)

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

prefix#(mark(X)) → prefix#(X)prefix#(ok(X)) → prefix#(X)

Rewrite Rules

active(app(nil, YS)) → mark(YS)active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: app, zWadr, s, prefix, active, mark, ok, from, proper, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

prefix#(ok(X)) → prefix#(X)prefix#(mark(X)) → prefix#(X)

Problem 4: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

top#(mark(X)) → top#(proper(X))top#(ok(X)) → top#(active(X))

Rewrite Rules

active(app(nil, YS)) → mark(YS)active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: app, zWadr, s, prefix, active, mark, ok, from, proper, nil, cons, top

Strategy


Polynomial Interpretation

Improved Usable rules

active(s(X)) → s(active(X))active(app(X1, X2)) → app(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))active(from(X)) → from(active(X))
active(zWadr(X1, X2)) → zWadr(X1, active(X2))app(mark(X1), X2) → mark(app(X1, X2))
app(ok(X1), ok(X2)) → ok(app(X1, X2))active(prefix(X)) → prefix(active(X))
proper(prefix(X)) → prefix(proper(X))proper(app(X1, X2)) → app(proper(X1), proper(X2))
prefix(ok(X)) → ok(prefix(X))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)s(mark(X)) → mark(s(X))
active(zWadr(XS, nil)) → mark(nil)active(zWadr(nil, YS)) → mark(nil)
proper(s(X)) → s(proper(X))proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
active(from(X)) → mark(cons(X, from(s(X))))active(app(nil, YS)) → mark(YS)
prefix(mark(X)) → mark(prefix(X))zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))s(ok(X)) → ok(s(X))
from(ok(X)) → ok(from(X))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(mark(X)) → mark(from(X))active(app(X1, X2)) → app(active(X1), X2)
active(cons(X1, X2)) → cons(active(X1), X2)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))proper(nil) → ok(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))proper(from(X)) → from(proper(X))

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

top#(mark(X)) → top#(proper(X))

Problem 13: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

top#(ok(X)) → top#(active(X))

Rewrite Rules

active(app(nil, YS)) → mark(YS)active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: app, zWadr, s, prefix, active, ok, mark, proper, from, top, cons, nil

Strategy


Polynomial Interpretation

Improved Usable rules

active(s(X)) → s(active(X))cons(mark(X1), X2) → mark(cons(X1, X2))
active(app(X1, X2)) → app(X1, active(X2))active(from(X)) → from(active(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))app(mark(X1), X2) → mark(app(X1, X2))
active(zWadr(X1, X2)) → zWadr(X1, active(X2))active(prefix(X)) → prefix(active(X))
prefix(ok(X)) → ok(prefix(X))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)s(mark(X)) → mark(s(X))
active(zWadr(XS, nil)) → mark(nil)active(zWadr(nil, YS)) → mark(nil)
active(from(X)) → mark(cons(X, from(s(X))))active(app(nil, YS)) → mark(YS)
prefix(mark(X)) → mark(prefix(X))zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))s(ok(X)) → ok(s(X))
from(ok(X)) → ok(from(X))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(mark(X)) → mark(from(X))active(cons(X1, X2)) → cons(active(X1), X2)
active(app(X1, X2)) → app(active(X1), X2)active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))

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

top#(ok(X)) → top#(active(X))

Problem 5: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

from#(mark(X)) → from#(X)from#(ok(X)) → from#(X)

Rewrite Rules

active(app(nil, YS)) → mark(YS)active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: app, zWadr, s, prefix, active, mark, ok, from, proper, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

from#(mark(X)) → from#(X)from#(ok(X)) → from#(X)

Problem 6: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

cons#(mark(X1), X2) → cons#(X1, X2)cons#(ok(X1), ok(X2)) → cons#(X1, X2)

Rewrite Rules

active(app(nil, YS)) → mark(YS)active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: app, zWadr, s, prefix, active, mark, ok, from, proper, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

cons#(mark(X1), X2) → cons#(X1, X2)cons#(ok(X1), ok(X2)) → cons#(X1, X2)

Problem 7: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

app#(ok(X1), ok(X2)) → app#(X1, X2)app#(X1, mark(X2)) → app#(X1, X2)
app#(mark(X1), X2) → app#(X1, X2)

Rewrite Rules

active(app(nil, YS)) → mark(YS)active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: app, zWadr, s, prefix, active, mark, ok, from, proper, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

app#(ok(X1), ok(X2)) → app#(X1, X2)app#(mark(X1), X2) → app#(X1, X2)

Problem 12: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

app#(X1, mark(X2)) → app#(X1, X2)

Rewrite Rules

active(app(nil, YS)) → mark(YS)active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: app, zWadr, s, prefix, active, ok, mark, proper, from, top, cons, nil

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

app#(X1, mark(X2)) → app#(X1, X2)

Problem 8: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

active#(from(X)) → active#(X)active#(s(X)) → active#(X)
active#(app(X1, X2)) → active#(X1)active#(zWadr(X1, X2)) → active#(X1)
active#(zWadr(X1, X2)) → active#(X2)active#(prefix(X)) → active#(X)
active#(cons(X1, X2)) → active#(X1)active#(app(X1, X2)) → active#(X2)

Rewrite Rules

active(app(nil, YS)) → mark(YS)active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: app, zWadr, s, prefix, active, mark, ok, from, proper, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

active#(s(X)) → active#(X)active#(from(X)) → active#(X)
active#(app(X1, X2)) → active#(X1)active#(zWadr(X1, X2)) → active#(X1)
active#(zWadr(X1, X2)) → active#(X2)active#(prefix(X)) → active#(X)
active#(app(X1, X2)) → active#(X2)active#(cons(X1, X2)) → active#(X1)

Problem 9: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

s#(mark(X)) → s#(X)s#(ok(X)) → s#(X)

Rewrite Rules

active(app(nil, YS)) → mark(YS)active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: app, zWadr, s, prefix, active, mark, ok, from, proper, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

s#(mark(X)) → s#(X)s#(ok(X)) → s#(X)

Problem 10: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

proper#(s(X)) → proper#(X)proper#(cons(X1, X2)) → proper#(X1)
proper#(cons(X1, X2)) → proper#(X2)proper#(zWadr(X1, X2)) → proper#(X1)
proper#(app(X1, X2)) → proper#(X1)proper#(app(X1, X2)) → proper#(X2)
proper#(from(X)) → proper#(X)proper#(zWadr(X1, X2)) → proper#(X2)
proper#(prefix(X)) → proper#(X)

Rewrite Rules

active(app(nil, YS)) → mark(YS)active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: app, zWadr, s, prefix, active, mark, ok, from, proper, nil, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

proper#(s(X)) → proper#(X)proper#(cons(X1, X2)) → proper#(X1)
proper#(cons(X1, X2)) → proper#(X2)proper#(zWadr(X1, X2)) → proper#(X1)
proper#(app(X1, X2)) → proper#(X1)proper#(app(X1, X2)) → proper#(X2)
proper#(prefix(X)) → proper#(X)proper#(from(X)) → proper#(X)
proper#(zWadr(X1, X2)) → proper#(X2)