YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (435ms).
 | – Problem 2 was processed with processor PolynomialOrderingProcessor (8865ms).
 |    | – Problem 10 was processed with processor PolynomialOrderingProcessor (1808ms).
 | – Problem 3 was processed with processor SubtermCriterion (0ms).
 | – Problem 4 was processed with processor SubtermCriterion (0ms).
 | – Problem 5 was processed with processor SubtermCriterion (1ms).
 | – Problem 6 was processed with processor SubtermCriterion (0ms).
 |    | – Problem 9 was processed with processor SubtermCriterion (0ms).
 | – Problem 7 was processed with processor SubtermCriterion (3ms).
 | – Problem 8 was processed with processor SubtermCriterion (0ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

proper#(U11(X1, X2, X3)) → proper#(X3)top#(ok(X)) → top#(active(X))
active#(U11(X1, X2, X3)) → U11#(active(X1), X2, X3)top#(ok(X)) → active#(X)
active#(U12(X1, X2, X3)) → U12#(active(X1), X2, X3)proper#(U11(X1, X2, X3)) → proper#(X2)
plus#(X1, mark(X2)) → plus#(X1, X2)proper#(plus(X1, X2)) → proper#(X1)
proper#(plus(X1, X2)) → proper#(X2)top#(mark(X)) → proper#(X)
proper#(plus(X1, X2)) → plus#(proper(X1), proper(X2))plus#(ok(X1), ok(X2)) → plus#(X1, X2)
top#(mark(X)) → top#(proper(X))proper#(U12(X1, X2, X3)) → proper#(X2)
U12#(mark(X1), X2, X3) → U12#(X1, X2, X3)proper#(U12(X1, X2, X3)) → U12#(proper(X1), proper(X2), proper(X3))
active#(U12(tt, M, N)) → plus#(N, M)U11#(mark(X1), X2, X3) → U11#(X1, X2, X3)
active#(s(X)) → s#(active(X))s#(ok(X)) → s#(X)
proper#(U12(X1, X2, X3)) → proper#(X3)proper#(U11(X1, X2, X3)) → U11#(proper(X1), proper(X2), proper(X3))
proper#(U11(X1, X2, X3)) → proper#(X1)active#(U11(X1, X2, X3)) → active#(X1)
s#(mark(X)) → s#(X)active#(U12(X1, X2, X3)) → active#(X1)
active#(plus(X1, X2)) → plus#(X1, active(X2))proper#(s(X)) → proper#(X)
active#(U11(tt, M, N)) → U12#(tt, M, N)active#(plus(X1, X2)) → active#(X1)
U12#(ok(X1), ok(X2), ok(X3)) → U12#(X1, X2, X3)active#(U12(tt, M, N)) → s#(plus(N, M))
active#(s(X)) → active#(X)active#(plus(X1, X2)) → plus#(active(X1), X2)
proper#(s(X)) → s#(proper(X))active#(plus(X1, X2)) → active#(X2)
active#(plus(N, s(M))) → U11#(tt, M, N)U11#(ok(X1), ok(X2), ok(X3)) → U11#(X1, X2, X3)
plus#(mark(X1), X2) → plus#(X1, X2)proper#(U12(X1, X2, X3)) → proper#(X1)

Rewrite Rules

active(U11(tt, M, N)) → mark(U12(tt, M, N))active(U12(tt, M, N)) → mark(s(plus(N, M)))
active(plus(N, 0)) → mark(N)active(plus(N, s(M))) → mark(U11(tt, M, N))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)active(U12(X1, X2, X3)) → U12(active(X1), X2, X3)
active(s(X)) → s(active(X))active(plus(X1, X2)) → plus(active(X1), X2)
active(plus(X1, X2)) → plus(X1, active(X2))U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))
U12(mark(X1), X2, X3) → mark(U12(X1, X2, X3))s(mark(X)) → mark(s(X))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
proper(U11(X1, X2, X3)) → U11(proper(X1), proper(X2), proper(X3))proper(tt) → ok(tt)
proper(U12(X1, X2, X3)) → U12(proper(X1), proper(X2), proper(X3))proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))proper(0) → ok(0)
U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))U12(ok(X1), ok(X2), ok(X3)) → ok(U12(X1, X2, X3))
s(ok(X)) → ok(s(X))plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, tt, active, U11, mark, U12, ok, proper, top

Strategy


The following SCCs where found

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

active#(U11(X1, X2, X3)) → active#(X1)active#(U12(X1, X2, X3)) → active#(X1)
active#(plus(X1, X2)) → active#(X1)active#(s(X)) → active#(X)
active#(plus(X1, X2)) → active#(X2)

U11#(mark(X1), X2, X3) → U11#(X1, X2, X3)U11#(ok(X1), ok(X2), ok(X3)) → U11#(X1, X2, X3)

U12#(ok(X1), ok(X2), ok(X3)) → U12#(X1, X2, X3)U12#(mark(X1), X2, X3) → U12#(X1, X2, X3)

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

proper#(s(X)) → proper#(X)proper#(U11(X1, X2, X3)) → proper#(X3)
proper#(U11(X1, X2, X3)) → proper#(X2)proper#(U12(X1, X2, X3)) → proper#(X2)
proper#(plus(X1, X2)) → proper#(X1)proper#(plus(X1, X2)) → proper#(X2)
proper#(U12(X1, X2, X3)) → proper#(X3)proper#(U12(X1, X2, X3)) → proper#(X1)
proper#(U11(X1, X2, X3)) → proper#(X1)

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

Problem 2: PolynomialOrderingProcessor



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(U11(tt, M, N)) → mark(U12(tt, M, N))active(U12(tt, M, N)) → mark(s(plus(N, M)))
active(plus(N, 0)) → mark(N)active(plus(N, s(M))) → mark(U11(tt, M, N))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)active(U12(X1, X2, X3)) → U12(active(X1), X2, X3)
active(s(X)) → s(active(X))active(plus(X1, X2)) → plus(active(X1), X2)
active(plus(X1, X2)) → plus(X1, active(X2))U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))
U12(mark(X1), X2, X3) → mark(U12(X1, X2, X3))s(mark(X)) → mark(s(X))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
proper(U11(X1, X2, X3)) → U11(proper(X1), proper(X2), proper(X3))proper(tt) → ok(tt)
proper(U12(X1, X2, X3)) → U12(proper(X1), proper(X2), proper(X3))proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))proper(0) → ok(0)
U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))U12(ok(X1), ok(X2), ok(X3)) → ok(U12(X1, X2, X3))
s(ok(X)) → ok(s(X))plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, tt, active, U11, mark, U12, ok, proper, top

Strategy


Polynomial Interpretation

Improved Usable rules

active(plus(X1, X2)) → plus(X1, active(X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
active(plus(X1, X2)) → plus(active(X1), X2)active(s(X)) → s(active(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))s(ok(X)) → ok(s(X))
active(U11(tt, M, N)) → mark(U12(tt, M, N))active(U12(tt, M, N)) → mark(s(plus(N, M)))
plus(mark(X1), X2) → mark(plus(X1, X2))proper(tt) → ok(tt)
U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))active(U12(X1, X2, X3)) → U12(active(X1), X2, X3)
U12(mark(X1), X2, X3) → mark(U12(X1, X2, X3))U12(ok(X1), ok(X2), ok(X3)) → ok(U12(X1, X2, X3))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))s(mark(X)) → mark(s(X))
proper(U11(X1, X2, X3)) → U11(proper(X1), proper(X2), proper(X3))proper(U12(X1, X2, X3)) → U12(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))active(plus(N, 0)) → mark(N)
proper(0) → ok(0)active(plus(N, s(M))) → mark(U11(tt, M, N))

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 10: PolynomialOrderingProcessor



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(U11(tt, M, N)) → mark(U12(tt, M, N))active(U12(tt, M, N)) → mark(s(plus(N, M)))
active(plus(N, 0)) → mark(N)active(plus(N, s(M))) → mark(U11(tt, M, N))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)active(U12(X1, X2, X3)) → U12(active(X1), X2, X3)
active(s(X)) → s(active(X))active(plus(X1, X2)) → plus(active(X1), X2)
active(plus(X1, X2)) → plus(X1, active(X2))U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))
U12(mark(X1), X2, X3) → mark(U12(X1, X2, X3))s(mark(X)) → mark(s(X))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
proper(U11(X1, X2, X3)) → U11(proper(X1), proper(X2), proper(X3))proper(tt) → ok(tt)
proper(U12(X1, X2, X3)) → U12(proper(X1), proper(X2), proper(X3))proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))proper(0) → ok(0)
U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))U12(ok(X1), ok(X2), ok(X3)) → ok(U12(X1, X2, X3))
s(ok(X)) → ok(s(X))plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, tt, U11, active, ok, U12, mark, proper, top

Strategy


Polynomial Interpretation

Improved Usable rules

active(plus(X1, X2)) → plus(X1, active(X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
active(plus(X1, X2)) → plus(active(X1), X2)active(s(X)) → s(active(X))
s(ok(X)) → ok(s(X))plus(mark(X1), X2) → mark(plus(X1, X2))
active(U12(tt, M, N)) → mark(s(plus(N, M)))active(U11(tt, M, N)) → mark(U12(tt, M, N))
U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))active(U12(X1, X2, X3)) → U12(active(X1), X2, X3)
U12(mark(X1), X2, X3) → mark(U12(X1, X2, X3))U12(ok(X1), ok(X2), ok(X3)) → ok(U12(X1, X2, X3))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))s(mark(X)) → mark(s(X))
active(plus(N, 0)) → mark(N)active(plus(N, s(M))) → mark(U11(tt, M, N))

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 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

U11#(mark(X1), X2, X3) → U11#(X1, X2, X3)U11#(ok(X1), ok(X2), ok(X3)) → U11#(X1, X2, X3)

Rewrite Rules

active(U11(tt, M, N)) → mark(U12(tt, M, N))active(U12(tt, M, N)) → mark(s(plus(N, M)))
active(plus(N, 0)) → mark(N)active(plus(N, s(M))) → mark(U11(tt, M, N))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)active(U12(X1, X2, X3)) → U12(active(X1), X2, X3)
active(s(X)) → s(active(X))active(plus(X1, X2)) → plus(active(X1), X2)
active(plus(X1, X2)) → plus(X1, active(X2))U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))
U12(mark(X1), X2, X3) → mark(U12(X1, X2, X3))s(mark(X)) → mark(s(X))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
proper(U11(X1, X2, X3)) → U11(proper(X1), proper(X2), proper(X3))proper(tt) → ok(tt)
proper(U12(X1, X2, X3)) → U12(proper(X1), proper(X2), proper(X3))proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))proper(0) → ok(0)
U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))U12(ok(X1), ok(X2), ok(X3)) → ok(U12(X1, X2, X3))
s(ok(X)) → ok(s(X))plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, tt, active, U11, mark, U12, ok, proper, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

U11#(mark(X1), X2, X3) → U11#(X1, X2, X3)U11#(ok(X1), ok(X2), ok(X3)) → U11#(X1, X2, X3)

Problem 4: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

active#(U11(X1, X2, X3)) → active#(X1)active#(U12(X1, X2, X3)) → active#(X1)
active#(plus(X1, X2)) → active#(X1)active#(s(X)) → active#(X)
active#(plus(X1, X2)) → active#(X2)

Rewrite Rules

active(U11(tt, M, N)) → mark(U12(tt, M, N))active(U12(tt, M, N)) → mark(s(plus(N, M)))
active(plus(N, 0)) → mark(N)active(plus(N, s(M))) → mark(U11(tt, M, N))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)active(U12(X1, X2, X3)) → U12(active(X1), X2, X3)
active(s(X)) → s(active(X))active(plus(X1, X2)) → plus(active(X1), X2)
active(plus(X1, X2)) → plus(X1, active(X2))U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))
U12(mark(X1), X2, X3) → mark(U12(X1, X2, X3))s(mark(X)) → mark(s(X))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
proper(U11(X1, X2, X3)) → U11(proper(X1), proper(X2), proper(X3))proper(tt) → ok(tt)
proper(U12(X1, X2, X3)) → U12(proper(X1), proper(X2), proper(X3))proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))proper(0) → ok(0)
U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))U12(ok(X1), ok(X2), ok(X3)) → ok(U12(X1, X2, X3))
s(ok(X)) → ok(s(X))plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, tt, active, U11, mark, U12, ok, proper, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

active#(U11(X1, X2, X3)) → active#(X1)active#(U12(X1, X2, X3)) → active#(X1)
active#(plus(X1, X2)) → active#(X1)active#(s(X)) → active#(X)
active#(plus(X1, X2)) → active#(X2)

Problem 5: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

proper#(s(X)) → proper#(X)proper#(U11(X1, X2, X3)) → proper#(X3)
proper#(U11(X1, X2, X3)) → proper#(X2)proper#(U12(X1, X2, X3)) → proper#(X2)
proper#(plus(X1, X2)) → proper#(X1)proper#(plus(X1, X2)) → proper#(X2)
proper#(U12(X1, X2, X3)) → proper#(X3)proper#(U12(X1, X2, X3)) → proper#(X1)
proper#(U11(X1, X2, X3)) → proper#(X1)

Rewrite Rules

active(U11(tt, M, N)) → mark(U12(tt, M, N))active(U12(tt, M, N)) → mark(s(plus(N, M)))
active(plus(N, 0)) → mark(N)active(plus(N, s(M))) → mark(U11(tt, M, N))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)active(U12(X1, X2, X3)) → U12(active(X1), X2, X3)
active(s(X)) → s(active(X))active(plus(X1, X2)) → plus(active(X1), X2)
active(plus(X1, X2)) → plus(X1, active(X2))U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))
U12(mark(X1), X2, X3) → mark(U12(X1, X2, X3))s(mark(X)) → mark(s(X))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
proper(U11(X1, X2, X3)) → U11(proper(X1), proper(X2), proper(X3))proper(tt) → ok(tt)
proper(U12(X1, X2, X3)) → U12(proper(X1), proper(X2), proper(X3))proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))proper(0) → ok(0)
U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))U12(ok(X1), ok(X2), ok(X3)) → ok(U12(X1, X2, X3))
s(ok(X)) → ok(s(X))plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, tt, active, U11, mark, U12, ok, proper, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

proper#(s(X)) → proper#(X)proper#(U11(X1, X2, X3)) → proper#(X3)
proper#(U12(X1, X2, X3)) → proper#(X2)proper#(U11(X1, X2, X3)) → proper#(X2)
proper#(plus(X1, X2)) → proper#(X1)proper#(plus(X1, X2)) → proper#(X2)
proper#(U12(X1, X2, X3)) → proper#(X3)proper#(U12(X1, X2, X3)) → proper#(X1)
proper#(U11(X1, X2, X3)) → proper#(X1)

Problem 6: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(U11(tt, M, N)) → mark(U12(tt, M, N))active(U12(tt, M, N)) → mark(s(plus(N, M)))
active(plus(N, 0)) → mark(N)active(plus(N, s(M))) → mark(U11(tt, M, N))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)active(U12(X1, X2, X3)) → U12(active(X1), X2, X3)
active(s(X)) → s(active(X))active(plus(X1, X2)) → plus(active(X1), X2)
active(plus(X1, X2)) → plus(X1, active(X2))U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))
U12(mark(X1), X2, X3) → mark(U12(X1, X2, X3))s(mark(X)) → mark(s(X))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
proper(U11(X1, X2, X3)) → U11(proper(X1), proper(X2), proper(X3))proper(tt) → ok(tt)
proper(U12(X1, X2, X3)) → U12(proper(X1), proper(X2), proper(X3))proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))proper(0) → ok(0)
U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))U12(ok(X1), ok(X2), ok(X3)) → ok(U12(X1, X2, X3))
s(ok(X)) → ok(s(X))plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, tt, active, U11, mark, U12, ok, proper, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 9: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(U11(tt, M, N)) → mark(U12(tt, M, N))active(U12(tt, M, N)) → mark(s(plus(N, M)))
active(plus(N, 0)) → mark(N)active(plus(N, s(M))) → mark(U11(tt, M, N))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)active(U12(X1, X2, X3)) → U12(active(X1), X2, X3)
active(s(X)) → s(active(X))active(plus(X1, X2)) → plus(active(X1), X2)
active(plus(X1, X2)) → plus(X1, active(X2))U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))
U12(mark(X1), X2, X3) → mark(U12(X1, X2, X3))s(mark(X)) → mark(s(X))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
proper(U11(X1, X2, X3)) → U11(proper(X1), proper(X2), proper(X3))proper(tt) → ok(tt)
proper(U12(X1, X2, X3)) → U12(proper(X1), proper(X2), proper(X3))proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))proper(0) → ok(0)
U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))U12(ok(X1), ok(X2), ok(X3)) → ok(U12(X1, X2, X3))
s(ok(X)) → ok(s(X))plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, tt, U11, active, ok, U12, mark, proper, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 7: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(U11(tt, M, N)) → mark(U12(tt, M, N))active(U12(tt, M, N)) → mark(s(plus(N, M)))
active(plus(N, 0)) → mark(N)active(plus(N, s(M))) → mark(U11(tt, M, N))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)active(U12(X1, X2, X3)) → U12(active(X1), X2, X3)
active(s(X)) → s(active(X))active(plus(X1, X2)) → plus(active(X1), X2)
active(plus(X1, X2)) → plus(X1, active(X2))U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))
U12(mark(X1), X2, X3) → mark(U12(X1, X2, X3))s(mark(X)) → mark(s(X))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
proper(U11(X1, X2, X3)) → U11(proper(X1), proper(X2), proper(X3))proper(tt) → ok(tt)
proper(U12(X1, X2, X3)) → U12(proper(X1), proper(X2), proper(X3))proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))proper(0) → ok(0)
U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))U12(ok(X1), ok(X2), ok(X3)) → ok(U12(X1, X2, X3))
s(ok(X)) → ok(s(X))plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, tt, active, U11, mark, U12, ok, proper, 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 8: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

U12#(ok(X1), ok(X2), ok(X3)) → U12#(X1, X2, X3)U12#(mark(X1), X2, X3) → U12#(X1, X2, X3)

Rewrite Rules

active(U11(tt, M, N)) → mark(U12(tt, M, N))active(U12(tt, M, N)) → mark(s(plus(N, M)))
active(plus(N, 0)) → mark(N)active(plus(N, s(M))) → mark(U11(tt, M, N))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)active(U12(X1, X2, X3)) → U12(active(X1), X2, X3)
active(s(X)) → s(active(X))active(plus(X1, X2)) → plus(active(X1), X2)
active(plus(X1, X2)) → plus(X1, active(X2))U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))
U12(mark(X1), X2, X3) → mark(U12(X1, X2, X3))s(mark(X)) → mark(s(X))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
proper(U11(X1, X2, X3)) → U11(proper(X1), proper(X2), proper(X3))proper(tt) → ok(tt)
proper(U12(X1, X2, X3)) → U12(proper(X1), proper(X2), proper(X3))proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))proper(0) → ok(0)
U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))U12(ok(X1), ok(X2), ok(X3)) → ok(U12(X1, X2, X3))
s(ok(X)) → ok(s(X))plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: plus, 0, s, tt, active, U11, mark, U12, ok, proper, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

U12#(ok(X1), ok(X2), ok(X3)) → U12#(X1, X2, X3)U12#(mark(X1), X2, X3) → U12#(X1, X2, X3)