YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (453ms).
 | – Problem 2 was processed with processor SubtermCriterion (2ms).
 |    | – Problem 9 was processed with processor SubtermCriterion (0ms).
 | – Problem 3 was processed with processor SubtermCriterion (1ms).
 | – Problem 4 was processed with processor SubtermCriterion (0ms).
 | – Problem 5 was processed with processor SubtermCriterion (1ms).
 |    | – Problem 10 was processed with processor SubtermCriterion (0ms).
 | – Problem 6 was processed with processor SubtermCriterion (0ms).
 | – Problem 7 was processed with processor ReductionPairSAT (1013ms).
 |    | – Problem 11 was processed with processor ReductionPairSAT (839ms).
 | – Problem 8 was processed with processor SubtermCriterion (1ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

active#(x(N, s(M))) → plus#(x(N, M), N)top#(ok(X)) → top#(active(X))
proper#(x(X1, X2)) → proper#(X1)and#(ok(X1), ok(X2)) → and#(X1, X2)
active#(x(X1, X2)) → x#(active(X1), X2)proper#(and(X1, X2)) → proper#(X1)
proper#(and(X1, X2)) → and#(proper(X1), proper(X2))top#(ok(X)) → active#(X)
x#(mark(X1), X2) → x#(X1, X2)active#(and(X1, X2)) → and#(active(X1), X2)
proper#(and(X1, X2)) → proper#(X2)plus#(X1, mark(X2)) → plus#(X1, X2)
proper#(plus(X1, X2)) → proper#(X1)x#(ok(X1), ok(X2)) → x#(X1, X2)
proper#(x(X1, X2)) → x#(proper(X1), proper(X2))proper#(plus(X1, X2)) → proper#(X2)
x#(X1, mark(X2)) → x#(X1, X2)top#(mark(X)) → proper#(X)
proper#(plus(X1, X2)) → plus#(proper(X1), proper(X2))active#(plus(N, s(M))) → plus#(N, M)
plus#(ok(X1), ok(X2)) → plus#(X1, X2)top#(mark(X)) → top#(proper(X))
active#(x(N, s(M))) → x#(N, M)active#(x(X1, X2)) → active#(X1)
and#(mark(X1), X2) → and#(X1, X2)active#(s(X)) → s#(active(X))
active#(x(X1, X2)) → x#(X1, active(X2))proper#(x(X1, X2)) → proper#(X2)
s#(ok(X)) → s#(X)s#(mark(X)) → s#(X)
active#(plus(N, s(M))) → s#(plus(N, M))active#(plus(X1, X2)) → plus#(X1, active(X2))
proper#(s(X)) → proper#(X)active#(plus(X1, X2)) → active#(X1)
active#(plus(X1, X2)) → plus#(active(X1), X2)active#(s(X)) → active#(X)
proper#(s(X)) → s#(proper(X))active#(x(X1, X2)) → active#(X2)
active#(plus(X1, X2)) → active#(X2)active#(and(X1, X2)) → active#(X1)
plus#(mark(X1), X2) → plus#(X1, X2)

Rewrite Rules

active(and(tt, X)) → mark(X)active(plus(N, 0)) → mark(N)
active(plus(N, s(M))) → mark(s(plus(N, M)))active(x(N, 0)) → mark(0)
active(x(N, s(M))) → mark(plus(x(N, M), N))active(and(X1, X2)) → and(active(X1), X2)
active(plus(X1, X2)) → plus(active(X1), X2)active(plus(X1, X2)) → plus(X1, active(X2))
active(s(X)) → s(active(X))active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))and(mark(X1), X2) → mark(and(X1, X2))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
s(mark(X)) → mark(s(X))x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(tt) → ok(tt)proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(0) → ok(0)proper(s(X)) → s(proper(X))
proper(x(X1, X2)) → x(proper(X1), proper(X2))and(ok(X1), ok(X2)) → ok(and(X1, X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))s(ok(X)) → ok(s(X))
x(ok(X1), ok(X2)) → ok(x(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, mark, ok, proper, and, x, 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)

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

active#(plus(X1, X2)) → active#(X1)active#(s(X)) → active#(X)
active#(x(X1, X2)) → active#(X1)active#(x(X1, X2)) → active#(X2)
active#(plus(X1, X2)) → active#(X2)active#(and(X1, X2)) → active#(X1)

proper#(s(X)) → proper#(X)proper#(and(X1, X2)) → proper#(X2)
proper#(plus(X1, X2)) → proper#(X1)proper#(x(X1, X2)) → proper#(X1)
proper#(plus(X1, X2)) → proper#(X2)proper#(and(X1, X2)) → proper#(X1)
proper#(x(X1, X2)) → proper#(X2)

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

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

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

Problem 2: 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(and(tt, X)) → mark(X)active(plus(N, 0)) → mark(N)
active(plus(N, s(M))) → mark(s(plus(N, M)))active(x(N, 0)) → mark(0)
active(x(N, s(M))) → mark(plus(x(N, M), N))active(and(X1, X2)) → and(active(X1), X2)
active(plus(X1, X2)) → plus(active(X1), X2)active(plus(X1, X2)) → plus(X1, active(X2))
active(s(X)) → s(active(X))active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))and(mark(X1), X2) → mark(and(X1, X2))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
s(mark(X)) → mark(s(X))x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(tt) → ok(tt)proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(0) → ok(0)proper(s(X)) → s(proper(X))
proper(x(X1, X2)) → x(proper(X1), proper(X2))and(ok(X1), ok(X2)) → ok(and(X1, X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))s(ok(X)) → ok(s(X))
x(ok(X1), ok(X2)) → ok(x(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, mark, ok, proper, and, x, 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(and(tt, X)) → mark(X)active(plus(N, 0)) → mark(N)
active(plus(N, s(M))) → mark(s(plus(N, M)))active(x(N, 0)) → mark(0)
active(x(N, s(M))) → mark(plus(x(N, M), N))active(and(X1, X2)) → and(active(X1), X2)
active(plus(X1, X2)) → plus(active(X1), X2)active(plus(X1, X2)) → plus(X1, active(X2))
active(s(X)) → s(active(X))active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))and(mark(X1), X2) → mark(and(X1, X2))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
s(mark(X)) → mark(s(X))x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(tt) → ok(tt)proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(0) → ok(0)proper(s(X)) → s(proper(X))
proper(x(X1, X2)) → x(proper(X1), proper(X2))and(ok(X1), ok(X2)) → ok(and(X1, X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))s(ok(X)) → ok(s(X))
x(ok(X1), ok(X2)) → ok(x(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, ok, mark, proper, top, x, and

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(and(tt, X)) → mark(X)active(plus(N, 0)) → mark(N)
active(plus(N, s(M))) → mark(s(plus(N, M)))active(x(N, 0)) → mark(0)
active(x(N, s(M))) → mark(plus(x(N, M), N))active(and(X1, X2)) → and(active(X1), X2)
active(plus(X1, X2)) → plus(active(X1), X2)active(plus(X1, X2)) → plus(X1, active(X2))
active(s(X)) → s(active(X))active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))and(mark(X1), X2) → mark(and(X1, X2))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
s(mark(X)) → mark(s(X))x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(tt) → ok(tt)proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(0) → ok(0)proper(s(X)) → s(proper(X))
proper(x(X1, X2)) → x(proper(X1), proper(X2))and(ok(X1), ok(X2)) → ok(and(X1, X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))s(ok(X)) → ok(s(X))
x(ok(X1), ok(X2)) → ok(x(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, mark, ok, proper, and, x, 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 4: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

active#(plus(X1, X2)) → active#(X1)active#(s(X)) → active#(X)
active#(x(X1, X2)) → active#(X1)active#(x(X1, X2)) → active#(X2)
active#(plus(X1, X2)) → active#(X2)active#(and(X1, X2)) → active#(X1)

Rewrite Rules

active(and(tt, X)) → mark(X)active(plus(N, 0)) → mark(N)
active(plus(N, s(M))) → mark(s(plus(N, M)))active(x(N, 0)) → mark(0)
active(x(N, s(M))) → mark(plus(x(N, M), N))active(and(X1, X2)) → and(active(X1), X2)
active(plus(X1, X2)) → plus(active(X1), X2)active(plus(X1, X2)) → plus(X1, active(X2))
active(s(X)) → s(active(X))active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))and(mark(X1), X2) → mark(and(X1, X2))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
s(mark(X)) → mark(s(X))x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(tt) → ok(tt)proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(0) → ok(0)proper(s(X)) → s(proper(X))
proper(x(X1, X2)) → x(proper(X1), proper(X2))and(ok(X1), ok(X2)) → ok(and(X1, X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))s(ok(X)) → ok(s(X))
x(ok(X1), ok(X2)) → ok(x(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, mark, ok, proper, and, x, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

active#(plus(X1, X2)) → active#(X1)active#(s(X)) → active#(X)
active#(x(X1, X2)) → active#(X1)active#(x(X1, X2)) → active#(X2)
active#(plus(X1, X2)) → active#(X2)active#(and(X1, X2)) → active#(X1)

Problem 5: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(and(tt, X)) → mark(X)active(plus(N, 0)) → mark(N)
active(plus(N, s(M))) → mark(s(plus(N, M)))active(x(N, 0)) → mark(0)
active(x(N, s(M))) → mark(plus(x(N, M), N))active(and(X1, X2)) → and(active(X1), X2)
active(plus(X1, X2)) → plus(active(X1), X2)active(plus(X1, X2)) → plus(X1, active(X2))
active(s(X)) → s(active(X))active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))and(mark(X1), X2) → mark(and(X1, X2))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
s(mark(X)) → mark(s(X))x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(tt) → ok(tt)proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(0) → ok(0)proper(s(X)) → s(proper(X))
proper(x(X1, X2)) → x(proper(X1), proper(X2))and(ok(X1), ok(X2)) → ok(and(X1, X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))s(ok(X)) → ok(s(X))
x(ok(X1), ok(X2)) → ok(x(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, mark, ok, proper, and, x, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 10: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(and(tt, X)) → mark(X)active(plus(N, 0)) → mark(N)
active(plus(N, s(M))) → mark(s(plus(N, M)))active(x(N, 0)) → mark(0)
active(x(N, s(M))) → mark(plus(x(N, M), N))active(and(X1, X2)) → and(active(X1), X2)
active(plus(X1, X2)) → plus(active(X1), X2)active(plus(X1, X2)) → plus(X1, active(X2))
active(s(X)) → s(active(X))active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))and(mark(X1), X2) → mark(and(X1, X2))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
s(mark(X)) → mark(s(X))x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(tt) → ok(tt)proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(0) → ok(0)proper(s(X)) → s(proper(X))
proper(x(X1, X2)) → x(proper(X1), proper(X2))and(ok(X1), ok(X2)) → ok(and(X1, X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))s(ok(X)) → ok(s(X))
x(ok(X1), ok(X2)) → ok(x(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, ok, mark, proper, top, x, and

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 6: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(and(tt, X)) → mark(X)active(plus(N, 0)) → mark(N)
active(plus(N, s(M))) → mark(s(plus(N, M)))active(x(N, 0)) → mark(0)
active(x(N, s(M))) → mark(plus(x(N, M), N))active(and(X1, X2)) → and(active(X1), X2)
active(plus(X1, X2)) → plus(active(X1), X2)active(plus(X1, X2)) → plus(X1, active(X2))
active(s(X)) → s(active(X))active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))and(mark(X1), X2) → mark(and(X1, X2))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
s(mark(X)) → mark(s(X))x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(tt) → ok(tt)proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(0) → ok(0)proper(s(X)) → s(proper(X))
proper(x(X1, X2)) → x(proper(X1), proper(X2))and(ok(X1), ok(X2)) → ok(and(X1, X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))s(ok(X)) → ok(s(X))
x(ok(X1), ok(X2)) → ok(x(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, mark, ok, proper, and, x, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 7: ReductionPairSAT



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(and(tt, X)) → mark(X)active(plus(N, 0)) → mark(N)
active(plus(N, s(M))) → mark(s(plus(N, M)))active(x(N, 0)) → mark(0)
active(x(N, s(M))) → mark(plus(x(N, M), N))active(and(X1, X2)) → and(active(X1), X2)
active(plus(X1, X2)) → plus(active(X1), X2)active(plus(X1, X2)) → plus(X1, active(X2))
active(s(X)) → s(active(X))active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))and(mark(X1), X2) → mark(and(X1, X2))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
s(mark(X)) → mark(s(X))x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(tt) → ok(tt)proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(0) → ok(0)proper(s(X)) → s(proper(X))
proper(x(X1, X2)) → x(proper(X1), proper(X2))and(ok(X1), ok(X2)) → ok(and(X1, X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))s(ok(X)) → ok(s(X))
x(ok(X1), ok(X2)) → ok(x(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, mark, ok, proper, and, x, top

Strategy


Function Precedence

tt < ok = and < x < plus = active < 0 = s = mark = proper = top = top#

Argument Filtering

plus: 1 2
0: all arguments are removed from 0
s: 1
tt: all arguments are removed from tt
active: collapses to 1
ok: collapses to 1
mark: 1
proper: collapses to 1
top: all arguments are removed from top
x: 1 2
and: 1 2
top#: collapses to 1

Status

plus: lexicographic with permutation 1 → 2 2 → 1
0: multiset
s: lexicographic with permutation 1 → 1
tt: multiset
mark: lexicographic with permutation 1 → 1
top: multiset
x: lexicographic with permutation 1 → 2 2 → 1
and: lexicographic with permutation 1 → 2 2 → 1

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))
active(x(N, 0)) → mark(0)and(ok(X1), ok(X2)) → ok(and(X1, X2))
active(x(N, s(M))) → mark(plus(x(N, M), N))plus(mark(X1), X2) → mark(plus(X1, X2))
active(x(X1, X2)) → x(X1, active(X2))proper(and(X1, X2)) → and(proper(X1), proper(X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))s(mark(X)) → mark(s(X))
proper(s(X)) → s(proper(X))active(and(X1, X2)) → and(active(X1), X2)
proper(x(X1, X2)) → x(proper(X1), proper(X2))proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
s(ok(X)) → ok(s(X))proper(tt) → ok(tt)
active(x(X1, X2)) → x(active(X1), X2)active(plus(N, s(M))) → mark(s(plus(N, M)))
x(mark(X1), X2) → mark(x(X1, X2))active(and(tt, X)) → mark(X)
x(X1, mark(X2)) → mark(x(X1, X2))active(plus(N, 0)) → mark(N)
and(mark(X1), X2) → mark(and(X1, X2))proper(0) → ok(0)
x(ok(X1), ok(X2)) → ok(x(X1, X2))

The dependency pairs and usable rules are stronlgy conservative!

Eliminated dependency pairs

The following dependency pairs (at least) can be eliminated according to the given precedence.

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

Problem 11: ReductionPairSAT



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(and(tt, X)) → mark(X)active(plus(N, 0)) → mark(N)
active(plus(N, s(M))) → mark(s(plus(N, M)))active(x(N, 0)) → mark(0)
active(x(N, s(M))) → mark(plus(x(N, M), N))active(and(X1, X2)) → and(active(X1), X2)
active(plus(X1, X2)) → plus(active(X1), X2)active(plus(X1, X2)) → plus(X1, active(X2))
active(s(X)) → s(active(X))active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))and(mark(X1), X2) → mark(and(X1, X2))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
s(mark(X)) → mark(s(X))x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(tt) → ok(tt)proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(0) → ok(0)proper(s(X)) → s(proper(X))
proper(x(X1, X2)) → x(proper(X1), proper(X2))and(ok(X1), ok(X2)) → ok(and(X1, X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))s(ok(X)) → ok(s(X))
x(ok(X1), ok(X2)) → ok(x(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, ok, mark, proper, top, x, and

Strategy


Function Precedence

x = top# < plus = 0 = s = tt = and < active = mark < ok = proper = top

Argument Filtering

plus: collapses to 1
0: all arguments are removed from 0
s: collapses to 1
tt: all arguments are removed from tt
active: collapses to 1
ok: 1
mark: collapses to 1
proper: collapses to 1
top: all arguments are removed from top
x: collapses to 2
and: collapses to 2
top#: collapses to 1

Status

0: multiset
tt: multiset
ok: lexicographic with permutation 1 → 1
top: multiset

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(x(N, 0)) → mark(0)
active(s(X)) → s(active(X))and(ok(X1), ok(X2)) → ok(and(X1, X2))
s(ok(X)) → ok(s(X))active(x(N, s(M))) → mark(plus(x(N, M), N))
plus(mark(X1), X2) → mark(plus(X1, X2))active(x(X1, X2)) → x(active(X1), X2)
active(plus(N, s(M))) → mark(s(plus(N, M)))x(mark(X1), X2) → mark(x(X1, X2))
active(x(X1, X2)) → x(X1, active(X2))active(and(tt, X)) → mark(X)
s(mark(X)) → mark(s(X))x(X1, mark(X2)) → mark(x(X1, X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))active(plus(N, 0)) → mark(N)
and(mark(X1), X2) → mark(and(X1, X2))x(ok(X1), ok(X2)) → ok(x(X1, X2))
active(and(X1, X2)) → and(active(X1), X2)

The dependency pairs and usable rules are stronlgy conservative!

Eliminated dependency pairs

The following dependency pairs (at least) can be eliminated according to the given precedence.

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

Problem 8: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

proper#(s(X)) → proper#(X)proper#(and(X1, X2)) → proper#(X2)
proper#(plus(X1, X2)) → proper#(X1)proper#(x(X1, X2)) → proper#(X1)
proper#(plus(X1, X2)) → proper#(X2)proper#(and(X1, X2)) → proper#(X1)
proper#(x(X1, X2)) → proper#(X2)

Rewrite Rules

active(and(tt, X)) → mark(X)active(plus(N, 0)) → mark(N)
active(plus(N, s(M))) → mark(s(plus(N, M)))active(x(N, 0)) → mark(0)
active(x(N, s(M))) → mark(plus(x(N, M), N))active(and(X1, X2)) → and(active(X1), X2)
active(plus(X1, X2)) → plus(active(X1), X2)active(plus(X1, X2)) → plus(X1, active(X2))
active(s(X)) → s(active(X))active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))and(mark(X1), X2) → mark(and(X1, X2))
plus(mark(X1), X2) → mark(plus(X1, X2))plus(X1, mark(X2)) → mark(plus(X1, X2))
s(mark(X)) → mark(s(X))x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(tt) → ok(tt)proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(0) → ok(0)proper(s(X)) → s(proper(X))
proper(x(X1, X2)) → x(proper(X1), proper(X2))and(ok(X1), ok(X2)) → ok(and(X1, X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))s(ok(X)) → ok(s(X))
x(ok(X1), ok(X2)) → ok(x(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, mark, ok, proper, and, x, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

proper#(s(X)) → proper#(X)proper#(and(X1, X2)) → proper#(X2)
proper#(plus(X1, X2)) → proper#(X1)proper#(x(X1, X2)) → proper#(X1)
proper#(plus(X1, X2)) → proper#(X2)proper#(and(X1, X2)) → proper#(X1)
proper#(x(X1, X2)) → proper#(X2)