0 QTRS
↳1 DependencyPairsProof (⇔)
↳2 QDP
↳3 DependencyGraphProof (⇔)
↳4 AND
↳5 QDP
↳6 QDPOrderProof (⇔)
↳7 QDP
↳8 QDPOrderProof (⇔)
↳9 QDP
↳10 QDPOrderProof (⇔)
↳11 QDP
↳12 PisEmptyProof (⇔)
↳13 TRUE
↳14 QDP
↳15 QDPOrderProof (⇔)
↳16 QDP
↳17 QDPOrderProof (⇔)
↳18 QDP
↳19 PisEmptyProof (⇔)
↳20 TRUE
↳21 QDP
↳22 QDPOrderProof (⇔)
↳23 QDP
↳24 QDPOrderProof (⇔)
↳25 QDP
↳26 QDPOrderProof (⇔)
↳27 QDP
↳28 PisEmptyProof (⇔)
↳29 TRUE
↳30 QDP
↳31 QDPOrderProof (⇔)
↳32 QDP
↳33 QDPOrderProof (⇔)
↳34 QDP
↳35 PisEmptyProof (⇔)
↳36 TRUE
↳37 QDP
↳38 QDPOrderProof (⇔)
↳39 QDP
↳40 QDPOrderProof (⇔)
↳41 QDP
↳42 PisEmptyProof (⇔)
↳43 TRUE
↳44 QDP
↳45 QDPOrderProof (⇔)
↳46 QDP
↳47 QDPOrderProof (⇔)
↳48 QDP
↳49 PisEmptyProof (⇔)
↳50 TRUE
↳51 QDP
↳52 QDPOrderProof (⇔)
↳53 QDP
↳54 QDPOrderProof (⇔)
↳55 QDP
↳56 PisEmptyProof (⇔)
↳57 TRUE
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))
ACTIVE(plus(N, s(M))) → S(plus(N, M))
ACTIVE(plus(N, s(M))) → PLUS(N, M)
ACTIVE(x(N, s(M))) → PLUS(x(N, M), N)
ACTIVE(x(N, s(M))) → X(N, M)
ACTIVE(and(X1, X2)) → AND(active(X1), X2)
ACTIVE(and(X1, X2)) → ACTIVE(X1)
ACTIVE(plus(X1, X2)) → PLUS(active(X1), X2)
ACTIVE(plus(X1, X2)) → ACTIVE(X1)
ACTIVE(plus(X1, X2)) → PLUS(X1, active(X2))
ACTIVE(plus(X1, X2)) → ACTIVE(X2)
ACTIVE(s(X)) → S(active(X))
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(x(X1, X2)) → X(active(X1), X2)
ACTIVE(x(X1, X2)) → ACTIVE(X1)
ACTIVE(x(X1, X2)) → X(X1, active(X2))
ACTIVE(x(X1, X2)) → ACTIVE(X2)
AND(mark(X1), X2) → AND(X1, X2)
PLUS(mark(X1), X2) → PLUS(X1, X2)
PLUS(X1, mark(X2)) → PLUS(X1, X2)
S(mark(X)) → S(X)
X(mark(X1), X2) → X(X1, X2)
X(X1, mark(X2)) → X(X1, X2)
PROPER(and(X1, X2)) → AND(proper(X1), proper(X2))
PROPER(and(X1, X2)) → PROPER(X1)
PROPER(and(X1, X2)) → PROPER(X2)
PROPER(plus(X1, X2)) → PLUS(proper(X1), proper(X2))
PROPER(plus(X1, X2)) → PROPER(X1)
PROPER(plus(X1, X2)) → PROPER(X2)
PROPER(s(X)) → S(proper(X))
PROPER(s(X)) → PROPER(X)
PROPER(x(X1, X2)) → X(proper(X1), proper(X2))
PROPER(x(X1, X2)) → PROPER(X1)
PROPER(x(X1, X2)) → PROPER(X2)
AND(ok(X1), ok(X2)) → AND(X1, X2)
PLUS(ok(X1), ok(X2)) → PLUS(X1, X2)
S(ok(X)) → S(X)
X(ok(X1), ok(X2)) → X(X1, X2)
TOP(mark(X)) → TOP(proper(X))
TOP(mark(X)) → PROPER(X)
TOP(ok(X)) → TOP(active(X))
TOP(ok(X)) → ACTIVE(X)
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))
X(X1, mark(X2)) → X(X1, X2)
X(mark(X1), X2) → X(X1, X2)
X(ok(X1), ok(X2)) → X(X1, X2)
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
X(X1, mark(X2)) → X(X1, X2)
mark1 > X1
X(mark(X1), X2) → X(X1, X2)
X(ok(X1), ok(X2)) → X(X1, X2)
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
X(ok(X1), ok(X2)) → X(X1, X2)
ok1 > [X1, mark]
X(mark(X1), X2) → X(X1, X2)
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
X(mark(X1), X2) → X(X1, X2)
trivial
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))
S(ok(X)) → S(X)
S(mark(X)) → S(X)
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
S(ok(X)) → S(X)
[S1, ok1]
S(mark(X)) → S(X)
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
S(mark(X)) → S(X)
trivial
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))
PLUS(X1, mark(X2)) → PLUS(X1, X2)
PLUS(mark(X1), X2) → PLUS(X1, X2)
PLUS(ok(X1), ok(X2)) → PLUS(X1, X2)
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PLUS(X1, mark(X2)) → PLUS(X1, X2)
mark1 > PLUS1
PLUS(mark(X1), X2) → PLUS(X1, X2)
PLUS(ok(X1), ok(X2)) → PLUS(X1, X2)
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PLUS(ok(X1), ok(X2)) → PLUS(X1, X2)
ok1 > [PLUS1, mark]
PLUS(mark(X1), X2) → PLUS(X1, X2)
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PLUS(mark(X1), X2) → PLUS(X1, X2)
trivial
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))
AND(ok(X1), ok(X2)) → AND(X1, X2)
AND(mark(X1), X2) → AND(X1, X2)
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
AND(ok(X1), ok(X2)) → AND(X1, X2)
ok1 > AND1
mark > AND1
AND(mark(X1), X2) → AND(X1, X2)
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
AND(mark(X1), X2) → AND(X1, X2)
trivial
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))
PROPER(and(X1, X2)) → PROPER(X2)
PROPER(and(X1, X2)) → PROPER(X1)
PROPER(plus(X1, X2)) → PROPER(X1)
PROPER(plus(X1, X2)) → PROPER(X2)
PROPER(s(X)) → PROPER(X)
PROPER(x(X1, X2)) → PROPER(X1)
PROPER(x(X1, X2)) → PROPER(X2)
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PROPER(and(X1, X2)) → PROPER(X2)
PROPER(and(X1, X2)) → PROPER(X1)
PROPER(plus(X1, X2)) → PROPER(X1)
PROPER(plus(X1, X2)) → PROPER(X2)
PROPER(x(X1, X2)) → PROPER(X1)
PROPER(x(X1, X2)) → PROPER(X2)
trivial
PROPER(s(X)) → PROPER(X)
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PROPER(s(X)) → PROPER(X)
trivial
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))
ACTIVE(plus(X1, X2)) → ACTIVE(X1)
ACTIVE(and(X1, X2)) → ACTIVE(X1)
ACTIVE(plus(X1, X2)) → ACTIVE(X2)
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(x(X1, X2)) → ACTIVE(X1)
ACTIVE(x(X1, X2)) → ACTIVE(X2)
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACTIVE(plus(X1, X2)) → ACTIVE(X1)
ACTIVE(plus(X1, X2)) → ACTIVE(X2)
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(x(X1, X2)) → ACTIVE(X1)
ACTIVE(x(X1, X2)) → ACTIVE(X2)
plus2 > ACTIVE1
s1 > ACTIVE1
ACTIVE(and(X1, X2)) → ACTIVE(X1)
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACTIVE(and(X1, X2)) → ACTIVE(X1)
[ACTIVE1, and1]
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))
TOP(ok(X)) → TOP(active(X))
TOP(mark(X)) → TOP(proper(X))
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
TOP(mark(X)) → TOP(proper(X))
and2 > [mark1, 0, s1] > TOP1
x2 > plus2 > [mark1, 0, s1] > TOP1
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)
x(X1, mark(X2)) → mark(x(X1, X2))
x(mark(X1), X2) → mark(x(X1, X2))
proper(tt) → ok(tt)
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(0) → ok(0)
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
active(s(X)) → s(active(X))
active(plus(X1, X2)) → plus(X1, active(X2))
active(x(X1, X2)) → x(X1, active(X2))
active(x(X1, X2)) → x(active(X1), X2)
plus(mark(X1), X2) → mark(plus(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
s(mark(X)) → mark(s(X))
plus(X1, mark(X2)) → mark(plus(X1, X2))
s(ok(X)) → ok(s(X))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
TOP(ok(X)) → TOP(active(X))
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))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
TOP(ok(X)) → TOP(active(X))
[ok1, s1] > mark
tt > mark
0 > mark
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)
s(ok(X)) → ok(s(X))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
x(mark(X1), X2) → mark(x(X1, X2))
active(s(X)) → s(active(X))
active(plus(X1, X2)) → plus(X1, active(X2))
active(x(X1, X2)) → x(X1, active(X2))
active(x(X1, X2)) → x(active(X1), X2)
plus(mark(X1), X2) → mark(plus(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
s(mark(X)) → mark(s(X))
plus(X1, mark(X2)) → mark(plus(X1, X2))
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))