(0) Obligation:

Q restricted rewrite system:
The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.

(1) DependencyPairsProof (EQUIVALENT transformation)

Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem.

(2) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ACTIVE(U21(tt, M, N)) → S(plus(N, M))
ACTIVE(U21(tt, M, N)) → PLUS(N, M)
ACTIVE(U41(tt, M, N)) → PLUS(x(N, M), N)
ACTIVE(U41(tt, M, N)) → X(N, M)
ACTIVE(isNat(plus(V1, V2))) → AND(isNat(V1), isNat(V2))
ACTIVE(isNat(plus(V1, V2))) → ISNAT(V1)
ACTIVE(isNat(plus(V1, V2))) → ISNAT(V2)
ACTIVE(isNat(s(V1))) → ISNAT(V1)
ACTIVE(isNat(x(V1, V2))) → AND(isNat(V1), isNat(V2))
ACTIVE(isNat(x(V1, V2))) → ISNAT(V1)
ACTIVE(isNat(x(V1, V2))) → ISNAT(V2)
ACTIVE(plus(N, 0)) → U111(isNat(N), N)
ACTIVE(plus(N, 0)) → ISNAT(N)
ACTIVE(plus(N, s(M))) → U211(and(isNat(M), isNat(N)), M, N)
ACTIVE(plus(N, s(M))) → AND(isNat(M), isNat(N))
ACTIVE(plus(N, s(M))) → ISNAT(M)
ACTIVE(plus(N, s(M))) → ISNAT(N)
ACTIVE(x(N, 0)) → U311(isNat(N))
ACTIVE(x(N, 0)) → ISNAT(N)
ACTIVE(x(N, s(M))) → U411(and(isNat(M), isNat(N)), M, N)
ACTIVE(x(N, s(M))) → AND(isNat(M), isNat(N))
ACTIVE(x(N, s(M))) → ISNAT(M)
ACTIVE(x(N, s(M))) → ISNAT(N)
ACTIVE(U11(X1, X2)) → U111(active(X1), X2)
ACTIVE(U11(X1, X2)) → ACTIVE(X1)
ACTIVE(U21(X1, X2, X3)) → U211(active(X1), X2, X3)
ACTIVE(U21(X1, X2, X3)) → ACTIVE(X1)
ACTIVE(s(X)) → S(active(X))
ACTIVE(s(X)) → ACTIVE(X)
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(U31(X)) → U311(active(X))
ACTIVE(U31(X)) → ACTIVE(X)
ACTIVE(U41(X1, X2, X3)) → U411(active(X1), X2, X3)
ACTIVE(U41(X1, X2, X3)) → ACTIVE(X1)
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)
ACTIVE(and(X1, X2)) → AND(active(X1), X2)
ACTIVE(and(X1, X2)) → ACTIVE(X1)
U111(mark(X1), X2) → U111(X1, X2)
U211(mark(X1), X2, X3) → U211(X1, X2, X3)
S(mark(X)) → S(X)
PLUS(mark(X1), X2) → PLUS(X1, X2)
PLUS(X1, mark(X2)) → PLUS(X1, X2)
U311(mark(X)) → U311(X)
U411(mark(X1), X2, X3) → U411(X1, X2, X3)
X(mark(X1), X2) → X(X1, X2)
X(X1, mark(X2)) → X(X1, X2)
AND(mark(X1), X2) → AND(X1, X2)
PROPER(U11(X1, X2)) → U111(proper(X1), proper(X2))
PROPER(U11(X1, X2)) → PROPER(X1)
PROPER(U11(X1, X2)) → PROPER(X2)
PROPER(U21(X1, X2, X3)) → U211(proper(X1), proper(X2), proper(X3))
PROPER(U21(X1, X2, X3)) → PROPER(X1)
PROPER(U21(X1, X2, X3)) → PROPER(X2)
PROPER(U21(X1, X2, X3)) → PROPER(X3)
PROPER(s(X)) → S(proper(X))
PROPER(s(X)) → PROPER(X)
PROPER(plus(X1, X2)) → PLUS(proper(X1), proper(X2))
PROPER(plus(X1, X2)) → PROPER(X1)
PROPER(plus(X1, X2)) → PROPER(X2)
PROPER(U31(X)) → U311(proper(X))
PROPER(U31(X)) → PROPER(X)
PROPER(U41(X1, X2, X3)) → U411(proper(X1), proper(X2), proper(X3))
PROPER(U41(X1, X2, X3)) → PROPER(X1)
PROPER(U41(X1, X2, X3)) → PROPER(X2)
PROPER(U41(X1, X2, X3)) → PROPER(X3)
PROPER(x(X1, X2)) → X(proper(X1), proper(X2))
PROPER(x(X1, X2)) → PROPER(X1)
PROPER(x(X1, X2)) → PROPER(X2)
PROPER(and(X1, X2)) → AND(proper(X1), proper(X2))
PROPER(and(X1, X2)) → PROPER(X1)
PROPER(and(X1, X2)) → PROPER(X2)
PROPER(isNat(X)) → ISNAT(proper(X))
PROPER(isNat(X)) → PROPER(X)
U111(ok(X1), ok(X2)) → U111(X1, X2)
U211(ok(X1), ok(X2), ok(X3)) → U211(X1, X2, X3)
S(ok(X)) → S(X)
PLUS(ok(X1), ok(X2)) → PLUS(X1, X2)
U311(ok(X)) → U311(X)
U411(ok(X1), ok(X2), ok(X3)) → U411(X1, X2, X3)
X(ok(X1), ok(X2)) → X(X1, X2)
AND(ok(X1), ok(X2)) → AND(X1, X2)
ISNAT(ok(X)) → ISNAT(X)
TOP(mark(X)) → TOP(proper(X))
TOP(mark(X)) → PROPER(X)
TOP(ok(X)) → TOP(active(X))
TOP(ok(X)) → ACTIVE(X)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(3) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 12 SCCs with 44 less nodes.

(4) Complex Obligation (AND)

(5) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ISNAT(ok(X)) → ISNAT(X)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(6) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


ISNAT(ok(X)) → ISNAT(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ISNAT(x1)  =  ISNAT(x1)
ok(x1)  =  ok(x1)
active(x1)  =  active(x1)
U11(x1, x2)  =  U11(x2)
tt  =  tt
mark(x1)  =  x1
U21(x1, x2, x3)  =  U21(x1, x2, x3)
s(x1)  =  x1
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  x1
0  =  0
U41(x1, x2, x3)  =  U41(x1, x2, x3)
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  and(x1, x2)
isNat(x1)  =  isNat(x1)
proper(x1)  =  proper(x1)
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
ISNAT1 > ok1
active1 > tt > plus2 > ok1
active1 > tt > 0 > U111 > ok1
active1 > tt > 0 > isNat1 > and2 > ok1
active1 > tt > x2 > isNat1 > and2 > ok1
active1 > U213 > plus2 > ok1
active1 > U413 > plus2 > ok1
active1 > U413 > x2 > isNat1 > and2 > ok1
proper1 > U213 > plus2 > ok1
proper1 > 0 > U111 > ok1
proper1 > 0 > isNat1 > and2 > ok1
proper1 > U413 > plus2 > ok1
proper1 > U413 > x2 > isNat1 > and2 > ok1
top > ok1

Status:
ISNAT1: multiset
ok1: multiset
active1: multiset
U111: multiset
tt: multiset
U213: multiset
plus2: [2,1]
0: multiset
U413: [3,2,1]
x2: [1,2]
and2: [2,1]
isNat1: multiset
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(7) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(8) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(9) TRUE

(10) Obligation:

Q DP problem:
The TRS P consists of the following rules:

AND(ok(X1), ok(X2)) → AND(X1, X2)
AND(mark(X1), X2) → AND(X1, X2)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(11) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


AND(mark(X1), X2) → AND(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
AND(x1, x2)  =  x1
ok(x1)  =  x1
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
U11(x1, x2)  =  U11(x1, x2)
tt  =  tt
U21(x1, x2, x3)  =  U21(x1, x2, x3)
s(x1)  =  x1
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  U31(x1)
0  =  0
U41(x1, x2, x3)  =  U41(x1, x2, x3)
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  and(x1, x2)
isNat(x1)  =  x1
proper(x1)  =  proper(x1)
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
top > active1 > U112 > mark1
top > active1 > tt > mark1
top > active1 > U213 > mark1
top > active1 > plus2 > mark1
top > active1 > 0 > mark1
top > active1 > x2 > U311 > mark1
top > active1 > x2 > U413 > mark1
top > active1 > and2 > mark1
top > proper1 > U112 > mark1
top > proper1 > tt > mark1
top > proper1 > U213 > mark1
top > proper1 > plus2 > mark1
top > proper1 > 0 > mark1
top > proper1 > x2 > U311 > mark1
top > proper1 > x2 > U413 > mark1
top > proper1 > and2 > mark1

Status:
mark1: multiset
active1: multiset
U112: multiset
tt: multiset
U213: multiset
plus2: [2,1]
U311: [1]
0: multiset
U413: [1,3,2]
x2: multiset
and2: multiset
proper1: [1]
top: multiset

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(12) Obligation:

Q DP problem:
The TRS P consists of the following rules:

AND(ok(X1), ok(X2)) → AND(X1, X2)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(13) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


AND(ok(X1), ok(X2)) → AND(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
AND(x1, x2)  =  x1
ok(x1)  =  ok(x1)
active(x1)  =  x1
U11(x1, x2)  =  x1
tt  =  tt
mark(x1)  =  mark
U21(x1, x2, x3)  =  x3
s(x1)  =  x1
plus(x1, x2)  =  x1
U31(x1)  =  x1
0  =  0
U41(x1, x2, x3)  =  x3
x(x1, x2)  =  x1
and(x1, x2)  =  x2
isNat(x1)  =  x1
proper(x1)  =  proper
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
proper > ok1 > mark
proper > tt > mark
proper > 0 > mark
top > mark

Status:
ok1: [1]
tt: multiset
mark: multiset
0: multiset
proper: multiset
top: multiset

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(14) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(15) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(16) TRUE

(17) Obligation:

Q DP problem:
The TRS P consists of the following rules:

X(X1, mark(X2)) → X(X1, X2)
X(mark(X1), X2) → X(X1, X2)
X(ok(X1), ok(X2)) → X(X1, X2)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(18) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


X(X1, mark(X2)) → X(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
X(x1, x2)  =  X(x2)
mark(x1)  =  mark(x1)
ok(x1)  =  x1
active(x1)  =  active(x1)
U11(x1, x2)  =  U11(x1, x2)
tt  =  tt
U21(x1, x2, x3)  =  U21(x1, x2, x3)
s(x1)  =  x1
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  U31(x1)
0  =  0
U41(x1, x2, x3)  =  U41(x1, x2, x3)
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  and(x1, x2)
isNat(x1)  =  isNat
proper(x1)  =  proper(x1)
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
top > active1 > tt > mark1 > X1
top > active1 > tt > 0 > X1
top > active1 > U213 > mark1 > X1
top > active1 > plus2 > U112 > mark1 > X1
top > active1 > plus2 > isNat > mark1 > X1
top > active1 > U413 > x2 > U311 > mark1 > X1
top > active1 > U413 > x2 > U311 > 0 > X1
top > active1 > U413 > x2 > isNat > mark1 > X1
top > active1 > and2 > mark1 > X1
top > proper1 > tt > mark1 > X1
top > proper1 > tt > 0 > X1
top > proper1 > U213 > mark1 > X1
top > proper1 > plus2 > U112 > mark1 > X1
top > proper1 > plus2 > isNat > mark1 > X1
top > proper1 > U413 > x2 > U311 > mark1 > X1
top > proper1 > U413 > x2 > U311 > 0 > X1
top > proper1 > U413 > x2 > isNat > mark1 > X1
top > proper1 > and2 > mark1 > X1

Status:
X1: multiset
mark1: [1]
active1: [1]
U112: [2,1]
tt: multiset
U213: [3,1,2]
plus2: multiset
U311: [1]
0: multiset
U413: [1,3,2]
x2: [1,2]
and2: multiset
isNat: multiset
proper1: [1]
top: multiset

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(19) Obligation:

Q DP problem:
The TRS P consists of the following rules:

X(mark(X1), X2) → X(X1, X2)
X(ok(X1), ok(X2)) → X(X1, X2)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(20) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


X(ok(X1), ok(X2)) → X(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
X(x1, x2)  =  x2
mark(x1)  =  mark
ok(x1)  =  ok(x1)
active(x1)  =  x1
U11(x1, x2)  =  x1
tt  =  tt
U21(x1, x2, x3)  =  x3
s(x1)  =  x1
plus(x1, x2)  =  x2
U31(x1)  =  x1
0  =  0
U41(x1, x2, x3)  =  x2
x(x1, x2)  =  x1
and(x1, x2)  =  x2
isNat(x1)  =  x1
proper(x1)  =  proper
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
proper > tt > 0 > ok1 > mark
top > mark

Status:
mark: []
ok1: [1]
tt: multiset
0: multiset
proper: multiset
top: []

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(21) Obligation:

Q DP problem:
The TRS P consists of the following rules:

X(mark(X1), X2) → X(X1, X2)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(22) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


X(mark(X1), X2) → X(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
X(x1, x2)  =  X(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
U11(x1, x2)  =  U11(x1, x2)
tt  =  tt
U21(x1, x2, x3)  =  U21(x1, x2, x3)
s(x1)  =  x1
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  U31(x1)
0  =  0
U41(x1, x2, x3)  =  U41(x1, x2, x3)
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  and(x1, x2)
isNat(x1)  =  isNat(x1)
proper(x1)  =  proper(x1)
ok(x1)  =  x1
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
X2 > mark1
active1 > U311 > 0 > mark1
active1 > U413 > plus2 > U112 > mark1
active1 > U413 > plus2 > U213 > mark1
active1 > U413 > plus2 > isNat1 > tt > 0 > mark1
active1 > U413 > plus2 > isNat1 > tt > x2 > and2 > mark1
proper1 > U311 > 0 > mark1
proper1 > U413 > plus2 > U112 > mark1
proper1 > U413 > plus2 > U213 > mark1
proper1 > U413 > plus2 > isNat1 > tt > 0 > mark1
proper1 > U413 > plus2 > isNat1 > tt > x2 > and2 > mark1
top > mark1

Status:
X2: [2,1]
mark1: [1]
active1: [1]
U112: [2,1]
tt: multiset
U213: [2,1,3]
plus2: multiset
U311: [1]
0: multiset
U413: [2,1,3]
x2: [2,1]
and2: [2,1]
isNat1: [1]
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(23) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(24) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(25) TRUE

(26) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U411(ok(X1), ok(X2), ok(X3)) → U411(X1, X2, X3)
U411(mark(X1), X2, X3) → U411(X1, X2, X3)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(27) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U411(ok(X1), ok(X2), ok(X3)) → U411(X1, X2, X3)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U411(x1, x2, x3)  =  U411(x2, x3)
ok(x1)  =  ok(x1)
mark(x1)  =  x1
active(x1)  =  active(x1)
U11(x1, x2)  =  x2
tt  =  tt
U21(x1, x2, x3)  =  U21(x2, x3)
s(x1)  =  x1
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  U31(x1)
0  =  0
U41(x1, x2, x3)  =  U41(x1, x2, x3)
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  x2
isNat(x1)  =  isNat(x1)
proper(x1)  =  proper(x1)
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
U41^12 > ok1
proper1 > tt > plus2 > isNat1 > ok1
proper1 > tt > 0 > ok1
proper1 > tt > x2 > isNat1 > ok1
proper1 > U212 > ok1
proper1 > U311 > 0 > ok1
proper1 > U413 > plus2 > isNat1 > ok1
proper1 > U413 > x2 > isNat1 > ok1
top > active1 > tt > plus2 > isNat1 > ok1
top > active1 > tt > 0 > ok1
top > active1 > tt > x2 > isNat1 > ok1
top > active1 > U212 > ok1
top > active1 > U311 > 0 > ok1
top > active1 > U413 > plus2 > isNat1 > ok1
top > active1 > U413 > x2 > isNat1 > ok1

Status:
U41^12: [1,2]
ok1: multiset
active1: [1]
tt: multiset
U212: [2,1]
plus2: multiset
U311: multiset
0: multiset
U413: [3,2,1]
x2: multiset
isNat1: [1]
proper1: [1]
top: multiset

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(28) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U411(mark(X1), X2, X3) → U411(X1, X2, X3)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(29) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U411(mark(X1), X2, X3) → U411(X1, X2, X3)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U411(x1, x2, x3)  =  U411(x1, x3)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
U11(x1, x2)  =  U11(x1, x2)
tt  =  tt
U21(x1, x2, x3)  =  U21(x1, x2, x3)
s(x1)  =  s(x1)
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  U31(x1)
0  =  0
U41(x1, x2, x3)  =  U41(x1, x2, x3)
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  and(x1, x2)
isNat(x1)  =  isNat(x1)
proper(x1)  =  proper(x1)
ok(x1)  =  x1
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
active1 > U112 > mark1
active1 > tt > s1 > U213 > mark1
active1 > tt > x2 > U311 > 0 > mark1
active1 > tt > x2 > U413 > plus2 > U213 > mark1
active1 > isNat1 > and2 > mark1
proper1 > U112 > mark1
proper1 > tt > s1 > U213 > mark1
proper1 > tt > x2 > U311 > 0 > mark1
proper1 > tt > x2 > U413 > plus2 > U213 > mark1
proper1 > isNat1 > and2 > mark1

Status:
U41^12: [2,1]
mark1: multiset
active1: multiset
U112: multiset
tt: multiset
U213: [1,2,3]
s1: multiset
plus2: [2,1]
U311: multiset
0: multiset
U413: [1,3,2]
x2: [1,2]
and2: [1,2]
isNat1: [1]
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(30) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(31) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(32) TRUE

(33) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U311(ok(X)) → U311(X)
U311(mark(X)) → U311(X)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(34) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U311(ok(X)) → U311(X)
U311(mark(X)) → U311(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U311(x1)  =  U311(x1)
ok(x1)  =  ok(x1)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
U11(x1, x2)  =  U11(x1, x2)
tt  =  tt
U21(x1, x2, x3)  =  U21(x1, x2, x3)
s(x1)  =  s(x1)
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  U31(x1)
0  =  0
U41(x1, x2, x3)  =  U41(x1, x2, x3)
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  and(x1, x2)
isNat(x1)  =  isNat(x1)
proper(x1)  =  proper(x1)
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
active1 > s1 > U213 > ok1 > U31^11 > top
active1 > s1 > U213 > mark1 > top
active1 > s1 > U413 > ok1 > U31^11 > top
active1 > s1 > U413 > mark1 > top
active1 > s1 > isNat1 > tt > mark1 > top
active1 > s1 > isNat1 > and2 > ok1 > U31^11 > top
active1 > s1 > isNat1 > and2 > mark1 > top
active1 > plus2 > U112 > ok1 > U31^11 > top
active1 > plus2 > U112 > mark1 > top
active1 > plus2 > U213 > ok1 > U31^11 > top
active1 > plus2 > U213 > mark1 > top
active1 > plus2 > isNat1 > tt > mark1 > top
active1 > plus2 > isNat1 > and2 > ok1 > U31^11 > top
active1 > plus2 > isNat1 > and2 > mark1 > top
active1 > 0 > tt > mark1 > top
active1 > 0 > U311 > ok1 > U31^11 > top
active1 > 0 > U311 > mark1 > top
active1 > x2 > U311 > ok1 > U31^11 > top
active1 > x2 > U311 > mark1 > top
active1 > x2 > U413 > ok1 > U31^11 > top
active1 > x2 > U413 > mark1 > top
active1 > x2 > and2 > ok1 > U31^11 > top
active1 > x2 > and2 > mark1 > top
proper1 > s1 > U213 > ok1 > U31^11 > top
proper1 > s1 > U213 > mark1 > top
proper1 > s1 > U413 > ok1 > U31^11 > top
proper1 > s1 > U413 > mark1 > top
proper1 > s1 > isNat1 > tt > mark1 > top
proper1 > s1 > isNat1 > and2 > ok1 > U31^11 > top
proper1 > s1 > isNat1 > and2 > mark1 > top
proper1 > plus2 > U112 > ok1 > U31^11 > top
proper1 > plus2 > U112 > mark1 > top
proper1 > plus2 > U213 > ok1 > U31^11 > top
proper1 > plus2 > U213 > mark1 > top
proper1 > plus2 > isNat1 > tt > mark1 > top
proper1 > plus2 > isNat1 > and2 > ok1 > U31^11 > top
proper1 > plus2 > isNat1 > and2 > mark1 > top
proper1 > 0 > tt > mark1 > top
proper1 > 0 > U311 > ok1 > U31^11 > top
proper1 > 0 > U311 > mark1 > top
proper1 > x2 > U311 > ok1 > U31^11 > top
proper1 > x2 > U311 > mark1 > top
proper1 > x2 > U413 > ok1 > U31^11 > top
proper1 > x2 > U413 > mark1 > top
proper1 > x2 > and2 > ok1 > U31^11 > top
proper1 > x2 > and2 > mark1 > top

Status:
U31^11: multiset
ok1: multiset
mark1: multiset
active1: [1]
U112: [2,1]
tt: multiset
U213: [1,3,2]
s1: [1]
plus2: [1,2]
U311: [1]
0: multiset
U413: [2,3,1]
x2: [1,2]
and2: multiset
isNat1: [1]
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(35) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(36) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(37) TRUE

(38) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PLUS(X1, mark(X2)) → PLUS(X1, X2)
PLUS(mark(X1), X2) → PLUS(X1, X2)
PLUS(ok(X1), ok(X2)) → PLUS(X1, X2)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(39) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


PLUS(X1, mark(X2)) → PLUS(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
PLUS(x1, x2)  =  x2
mark(x1)  =  mark(x1)
ok(x1)  =  x1
active(x1)  =  active(x1)
U11(x1, x2)  =  U11(x1, x2)
tt  =  tt
U21(x1, x2, x3)  =  U21(x1, x2, x3)
s(x1)  =  s(x1)
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  x1
0  =  0
U41(x1, x2, x3)  =  U41(x1, x2, x3)
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  and(x1, x2)
isNat(x1)  =  isNat
proper(x1)  =  proper(x1)
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
active1 > U112 > mark1
active1 > tt > s1 > mark1
active1 > tt > plus2 > mark1
active1 > tt > x2 > mark1
active1 > U213 > mark1
active1 > 0 > isNat > mark1
active1 > U413 > plus2 > mark1
active1 > U413 > x2 > mark1
active1 > and2 > mark1
top > proper1 > U112 > mark1
top > proper1 > tt > s1 > mark1
top > proper1 > tt > plus2 > mark1
top > proper1 > tt > x2 > mark1
top > proper1 > U213 > mark1
top > proper1 > 0 > isNat > mark1
top > proper1 > U413 > plus2 > mark1
top > proper1 > U413 > x2 > mark1
top > proper1 > and2 > mark1

Status:
mark1: [1]
active1: [1]
U112: multiset
tt: multiset
U213: [1,2,3]
s1: [1]
plus2: [2,1]
0: multiset
U413: [2,3,1]
x2: multiset
and2: [2,1]
isNat: multiset
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(40) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PLUS(mark(X1), X2) → PLUS(X1, X2)
PLUS(ok(X1), ok(X2)) → PLUS(X1, X2)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(41) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


PLUS(ok(X1), ok(X2)) → PLUS(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
PLUS(x1, x2)  =  PLUS(x2)
mark(x1)  =  mark
ok(x1)  =  ok(x1)
active(x1)  =  x1
U11(x1, x2)  =  x2
tt  =  tt
U21(x1, x2, x3)  =  x3
s(x1)  =  x1
plus(x1, x2)  =  x1
U31(x1)  =  x1
0  =  0
U41(x1, x2, x3)  =  x3
x(x1, x2)  =  x1
and(x1, x2)  =  x2
isNat(x1)  =  x1
proper(x1)  =  proper
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
PLUS1 > mark
proper > 0 > tt > ok1 > mark
top > mark

Status:
PLUS1: multiset
mark: multiset
ok1: multiset
tt: multiset
0: multiset
proper: multiset
top: multiset

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(42) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PLUS(mark(X1), X2) → PLUS(X1, X2)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(43) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


PLUS(mark(X1), X2) → PLUS(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
PLUS(x1, x2)  =  PLUS(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
U11(x1, x2)  =  U11(x1, x2)
tt  =  tt
U21(x1, x2, x3)  =  U21(x1, x2, x3)
s(x1)  =  x1
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  U31(x1)
0  =  0
U41(x1, x2, x3)  =  U41(x1, x2, x3)
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  and(x1, x2)
isNat(x1)  =  isNat
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
active1 > U213 > mark1
active1 > 0 > U112 > mark1
active1 > 0 > tt > mark1
active1 > 0 > U311 > mark1
active1 > U413 > plus2 > mark1
active1 > U413 > x2 > mark1
active1 > isNat > tt > mark1
active1 > isNat > and2 > mark1

Status:
PLUS2: [2,1]
mark1: multiset
active1: [1]
U112: [1,2]
tt: multiset
U213: [3,2,1]
plus2: [1,2]
U311: multiset
0: multiset
U413: [2,1,3]
x2: multiset
and2: multiset
isNat: multiset
top: []

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(44) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(45) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(46) TRUE

(47) Obligation:

Q DP problem:
The TRS P consists of the following rules:

S(ok(X)) → S(X)
S(mark(X)) → S(X)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(48) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


S(ok(X)) → S(X)
S(mark(X)) → S(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
S(x1)  =  S(x1)
ok(x1)  =  ok(x1)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
U11(x1, x2)  =  U11(x1, x2)
tt  =  tt
U21(x1, x2, x3)  =  U21(x1, x2, x3)
s(x1)  =  s(x1)
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  U31(x1)
0  =  0
U41(x1, x2, x3)  =  U41(x1, x2, x3)
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  and(x1, x2)
isNat(x1)  =  isNat(x1)
proper(x1)  =  proper(x1)
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
active1 > s1 > U213 > ok1 > S1 > top
active1 > s1 > U213 > mark1 > top
active1 > s1 > U413 > ok1 > S1 > top
active1 > s1 > U413 > mark1 > top
active1 > s1 > isNat1 > tt > mark1 > top
active1 > s1 > isNat1 > and2 > ok1 > S1 > top
active1 > s1 > isNat1 > and2 > mark1 > top
active1 > plus2 > U112 > ok1 > S1 > top
active1 > plus2 > U112 > mark1 > top
active1 > plus2 > U213 > ok1 > S1 > top
active1 > plus2 > U213 > mark1 > top
active1 > plus2 > isNat1 > tt > mark1 > top
active1 > plus2 > isNat1 > and2 > ok1 > S1 > top
active1 > plus2 > isNat1 > and2 > mark1 > top
active1 > 0 > tt > mark1 > top
active1 > 0 > U311 > ok1 > S1 > top
active1 > 0 > U311 > mark1 > top
active1 > x2 > U311 > ok1 > S1 > top
active1 > x2 > U311 > mark1 > top
active1 > x2 > U413 > ok1 > S1 > top
active1 > x2 > U413 > mark1 > top
active1 > x2 > and2 > ok1 > S1 > top
active1 > x2 > and2 > mark1 > top
proper1 > s1 > U213 > ok1 > S1 > top
proper1 > s1 > U213 > mark1 > top
proper1 > s1 > U413 > ok1 > S1 > top
proper1 > s1 > U413 > mark1 > top
proper1 > s1 > isNat1 > tt > mark1 > top
proper1 > s1 > isNat1 > and2 > ok1 > S1 > top
proper1 > s1 > isNat1 > and2 > mark1 > top
proper1 > plus2 > U112 > ok1 > S1 > top
proper1 > plus2 > U112 > mark1 > top
proper1 > plus2 > U213 > ok1 > S1 > top
proper1 > plus2 > U213 > mark1 > top
proper1 > plus2 > isNat1 > tt > mark1 > top
proper1 > plus2 > isNat1 > and2 > ok1 > S1 > top
proper1 > plus2 > isNat1 > and2 > mark1 > top
proper1 > 0 > tt > mark1 > top
proper1 > 0 > U311 > ok1 > S1 > top
proper1 > 0 > U311 > mark1 > top
proper1 > x2 > U311 > ok1 > S1 > top
proper1 > x2 > U311 > mark1 > top
proper1 > x2 > U413 > ok1 > S1 > top
proper1 > x2 > U413 > mark1 > top
proper1 > x2 > and2 > ok1 > S1 > top
proper1 > x2 > and2 > mark1 > top

Status:
S1: multiset
ok1: multiset
mark1: multiset
active1: [1]
U112: [2,1]
tt: multiset
U213: [1,3,2]
s1: [1]
plus2: [1,2]
U311: [1]
0: multiset
U413: [2,3,1]
x2: [1,2]
and2: multiset
isNat1: [1]
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(49) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(50) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(51) TRUE

(52) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U211(ok(X1), ok(X2), ok(X3)) → U211(X1, X2, X3)
U211(mark(X1), X2, X3) → U211(X1, X2, X3)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(53) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U211(ok(X1), ok(X2), ok(X3)) → U211(X1, X2, X3)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U211(x1, x2, x3)  =  U211(x2, x3)
ok(x1)  =  ok(x1)
mark(x1)  =  x1
active(x1)  =  active(x1)
U11(x1, x2)  =  x2
tt  =  tt
U21(x1, x2, x3)  =  U21(x2, x3)
s(x1)  =  x1
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  U31(x1)
0  =  0
U41(x1, x2, x3)  =  U41(x1, x2, x3)
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  x2
isNat(x1)  =  isNat(x1)
proper(x1)  =  proper(x1)
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
U21^12 > ok1
proper1 > tt > plus2 > isNat1 > ok1
proper1 > tt > 0 > ok1
proper1 > tt > x2 > isNat1 > ok1
proper1 > U212 > ok1
proper1 > U311 > 0 > ok1
proper1 > U413 > plus2 > isNat1 > ok1
proper1 > U413 > x2 > isNat1 > ok1
top > active1 > tt > plus2 > isNat1 > ok1
top > active1 > tt > 0 > ok1
top > active1 > tt > x2 > isNat1 > ok1
top > active1 > U212 > ok1
top > active1 > U311 > 0 > ok1
top > active1 > U413 > plus2 > isNat1 > ok1
top > active1 > U413 > x2 > isNat1 > ok1

Status:
U21^12: [1,2]
ok1: multiset
active1: [1]
tt: multiset
U212: [2,1]
plus2: multiset
U311: multiset
0: multiset
U413: [3,2,1]
x2: multiset
isNat1: [1]
proper1: [1]
top: multiset

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(54) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U211(mark(X1), X2, X3) → U211(X1, X2, X3)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(55) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U211(mark(X1), X2, X3) → U211(X1, X2, X3)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U211(x1, x2, x3)  =  U211(x1, x3)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
U11(x1, x2)  =  U11(x1, x2)
tt  =  tt
U21(x1, x2, x3)  =  U21(x1, x2, x3)
s(x1)  =  s(x1)
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  U31(x1)
0  =  0
U41(x1, x2, x3)  =  U41(x1, x2, x3)
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  and(x1, x2)
isNat(x1)  =  isNat(x1)
proper(x1)  =  proper(x1)
ok(x1)  =  x1
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
active1 > U112 > mark1
active1 > tt > s1 > U213 > mark1
active1 > tt > x2 > U311 > 0 > mark1
active1 > tt > x2 > U413 > plus2 > U213 > mark1
active1 > isNat1 > and2 > mark1
proper1 > U112 > mark1
proper1 > tt > s1 > U213 > mark1
proper1 > tt > x2 > U311 > 0 > mark1
proper1 > tt > x2 > U413 > plus2 > U213 > mark1
proper1 > isNat1 > and2 > mark1

Status:
U21^12: [2,1]
mark1: multiset
active1: multiset
U112: multiset
tt: multiset
U213: [1,2,3]
s1: multiset
plus2: [2,1]
U311: multiset
0: multiset
U413: [1,3,2]
x2: [1,2]
and2: [1,2]
isNat1: [1]
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(56) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(57) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(58) TRUE

(59) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U111(ok(X1), ok(X2)) → U111(X1, X2)
U111(mark(X1), X2) → U111(X1, X2)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(60) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U111(mark(X1), X2) → U111(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U111(x1, x2)  =  x1
ok(x1)  =  x1
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
U11(x1, x2)  =  U11(x1, x2)
tt  =  tt
U21(x1, x2, x3)  =  U21(x1, x2, x3)
s(x1)  =  x1
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  U31(x1)
0  =  0
U41(x1, x2, x3)  =  U41(x1, x2, x3)
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  and(x1, x2)
isNat(x1)  =  x1
proper(x1)  =  proper(x1)
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
top > active1 > U112 > mark1
top > active1 > tt > mark1
top > active1 > U213 > mark1
top > active1 > plus2 > mark1
top > active1 > 0 > mark1
top > active1 > x2 > U311 > mark1
top > active1 > x2 > U413 > mark1
top > active1 > and2 > mark1
top > proper1 > U112 > mark1
top > proper1 > tt > mark1
top > proper1 > U213 > mark1
top > proper1 > plus2 > mark1
top > proper1 > 0 > mark1
top > proper1 > x2 > U311 > mark1
top > proper1 > x2 > U413 > mark1
top > proper1 > and2 > mark1

Status:
mark1: multiset
active1: multiset
U112: multiset
tt: multiset
U213: multiset
plus2: [2,1]
U311: [1]
0: multiset
U413: [1,3,2]
x2: multiset
and2: multiset
proper1: [1]
top: multiset

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(61) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U111(ok(X1), ok(X2)) → U111(X1, X2)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(62) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U111(ok(X1), ok(X2)) → U111(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U111(x1, x2)  =  x1
ok(x1)  =  ok(x1)
active(x1)  =  x1
U11(x1, x2)  =  x1
tt  =  tt
mark(x1)  =  mark
U21(x1, x2, x3)  =  x3
s(x1)  =  x1
plus(x1, x2)  =  x1
U31(x1)  =  x1
0  =  0
U41(x1, x2, x3)  =  x3
x(x1, x2)  =  x1
and(x1, x2)  =  x2
isNat(x1)  =  x1
proper(x1)  =  proper
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
proper > ok1 > mark
proper > tt > mark
proper > 0 > mark
top > mark

Status:
ok1: [1]
tt: multiset
mark: multiset
0: multiset
proper: multiset
top: multiset

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(63) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(64) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(65) TRUE

(66) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PROPER(U11(X1, X2)) → PROPER(X2)
PROPER(U11(X1, X2)) → PROPER(X1)
PROPER(U21(X1, X2, X3)) → PROPER(X1)
PROPER(U21(X1, X2, X3)) → PROPER(X2)
PROPER(U21(X1, X2, X3)) → PROPER(X3)
PROPER(s(X)) → PROPER(X)
PROPER(plus(X1, X2)) → PROPER(X1)
PROPER(plus(X1, X2)) → PROPER(X2)
PROPER(U31(X)) → PROPER(X)
PROPER(U41(X1, X2, X3)) → PROPER(X1)
PROPER(U41(X1, X2, X3)) → PROPER(X2)
PROPER(U41(X1, X2, X3)) → PROPER(X3)
PROPER(x(X1, X2)) → PROPER(X1)
PROPER(x(X1, X2)) → PROPER(X2)
PROPER(and(X1, X2)) → PROPER(X1)
PROPER(and(X1, X2)) → PROPER(X2)
PROPER(isNat(X)) → PROPER(X)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(67) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


PROPER(U11(X1, X2)) → PROPER(X2)
PROPER(U11(X1, X2)) → PROPER(X1)
PROPER(U21(X1, X2, X3)) → PROPER(X1)
PROPER(U21(X1, X2, X3)) → PROPER(X2)
PROPER(U21(X1, X2, X3)) → PROPER(X3)
PROPER(plus(X1, X2)) → PROPER(X1)
PROPER(plus(X1, X2)) → PROPER(X2)
PROPER(U31(X)) → PROPER(X)
PROPER(U41(X1, X2, X3)) → PROPER(X1)
PROPER(U41(X1, X2, X3)) → PROPER(X2)
PROPER(U41(X1, X2, X3)) → PROPER(X3)
PROPER(x(X1, X2)) → PROPER(X1)
PROPER(x(X1, X2)) → PROPER(X2)
PROPER(and(X1, X2)) → PROPER(X1)
PROPER(and(X1, X2)) → PROPER(X2)
PROPER(isNat(X)) → PROPER(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
PROPER(x1)  =  PROPER(x1)
U11(x1, x2)  =  U11(x1, x2)
U21(x1, x2, x3)  =  U21(x1, x2, x3)
s(x1)  =  x1
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  U31(x1)
U41(x1, x2, x3)  =  U41(x1, x2, x3)
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  and(x1, x2)
isNat(x1)  =  isNat(x1)
active(x1)  =  active(x1)
tt  =  tt
mark(x1)  =  x1
0  =  0
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
active1 > U112 > PROPER1 > isNat1
active1 > U213 > plus2 > PROPER1 > isNat1
active1 > and2 > PROPER1 > isNat1
active1 > tt > x2 > U311 > PROPER1 > isNat1
active1 > tt > x2 > U413 > plus2 > PROPER1 > isNat1
active1 > tt > 0 > U311 > PROPER1 > isNat1
top > isNat1

Status:
PROPER1: multiset
U112: [2,1]
U213: [1,3,2]
plus2: multiset
U311: [1]
U413: [2,1,3]
x2: [1,2]
and2: [2,1]
isNat1: multiset
active1: multiset
tt: multiset
0: multiset
top: []

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(68) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PROPER(s(X)) → PROPER(X)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(69) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


PROPER(s(X)) → PROPER(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
PROPER(x1)  =  PROPER(x1)
s(x1)  =  s(x1)
active(x1)  =  active(x1)
U11(x1, x2)  =  U11
tt  =  tt
mark(x1)  =  mark
U21(x1, x2, x3)  =  U21(x2, x3)
plus(x1, x2)  =  plus
U31(x1)  =  x1
0  =  0
U41(x1, x2, x3)  =  U41
x(x1, x2)  =  x
and(x1, x2)  =  x1
isNat(x1)  =  isNat
proper(x1)  =  proper(x1)
ok(x1)  =  ok
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
PROPER1 > s1
isNat > tt > mark > s1
isNat > ok > active1 > mark > s1
top > proper1 > U11 > ok > active1 > mark > s1
top > proper1 > plus > U212 > active1 > mark > s1
top > proper1 > plus > ok > active1 > mark > s1
top > proper1 > 0 > tt > mark > s1
top > proper1 > 0 > ok > active1 > mark > s1
top > proper1 > U41 > ok > active1 > mark > s1
top > proper1 > x > ok > active1 > mark > s1

Status:
PROPER1: [1]
s1: multiset
active1: [1]
U11: multiset
tt: multiset
mark: multiset
U212: multiset
plus: multiset
0: multiset
U41: multiset
x: multiset
isNat: multiset
proper1: [1]
ok: multiset
top: []

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(70) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(71) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(72) TRUE

(73) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ACTIVE(U21(X1, X2, X3)) → ACTIVE(X1)
ACTIVE(U11(X1, X2)) → ACTIVE(X1)
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(plus(X1, X2)) → ACTIVE(X1)
ACTIVE(plus(X1, X2)) → ACTIVE(X2)
ACTIVE(U31(X)) → ACTIVE(X)
ACTIVE(U41(X1, X2, X3)) → ACTIVE(X1)
ACTIVE(x(X1, X2)) → ACTIVE(X1)
ACTIVE(x(X1, X2)) → ACTIVE(X2)
ACTIVE(and(X1, X2)) → ACTIVE(X1)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(74) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


ACTIVE(plus(X1, X2)) → ACTIVE(X1)
ACTIVE(plus(X1, X2)) → ACTIVE(X2)
ACTIVE(x(X1, X2)) → ACTIVE(X1)
ACTIVE(x(X1, X2)) → ACTIVE(X2)
ACTIVE(and(X1, X2)) → ACTIVE(X1)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ACTIVE(x1)  =  ACTIVE(x1)
U21(x1, x2, x3)  =  x1
U11(x1, x2)  =  x1
s(x1)  =  x1
plus(x1, x2)  =  plus(x1, x2)
U31(x1)  =  x1
U41(x1, x2, x3)  =  x1
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  and(x1, x2)
active(x1)  =  x1
tt  =  tt
mark(x1)  =  mark
0  =  0
isNat(x1)  =  isNat(x1)
proper(x1)  =  x1
ok(x1)  =  ok
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
plus2 > ok > and2 > ACTIVE1 > mark
plus2 > ok > isNat1 > mark
x2 > ok > and2 > ACTIVE1 > mark
x2 > ok > isNat1 > mark
tt > ok > and2 > ACTIVE1 > mark
tt > ok > isNat1 > mark
0 > ok > and2 > ACTIVE1 > mark
0 > ok > isNat1 > mark
top > mark

Status:
ACTIVE1: [1]
plus2: [1,2]
x2: [2,1]
and2: [1,2]
tt: multiset
mark: []
0: multiset
isNat1: multiset
ok: multiset
top: []

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(75) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ACTIVE(U21(X1, X2, X3)) → ACTIVE(X1)
ACTIVE(U11(X1, X2)) → ACTIVE(X1)
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(U31(X)) → ACTIVE(X)
ACTIVE(U41(X1, X2, X3)) → ACTIVE(X1)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(76) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


ACTIVE(U21(X1, X2, X3)) → ACTIVE(X1)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ACTIVE(x1)  =  ACTIVE(x1)
U21(x1, x2, x3)  =  U21(x1)
U11(x1, x2)  =  x1
s(x1)  =  x1
U31(x1)  =  x1
U41(x1, x2, x3)  =  x1
active(x1)  =  x1
tt  =  tt
mark(x1)  =  mark
plus(x1, x2)  =  x2
0  =  0
x(x1, x2)  =  x
and(x1, x2)  =  and
isNat(x1)  =  x1
proper(x1)  =  proper(x1)
ok(x1)  =  x1
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
ACTIVE1 > mark
top > proper1 > U211 > mark
top > proper1 > tt > 0 > mark
top > proper1 > x > mark
top > proper1 > and > mark

Status:
ACTIVE1: multiset
U211: [1]
tt: multiset
mark: multiset
0: multiset
x: multiset
and: []
proper1: [1]
top: multiset

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(77) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ACTIVE(U11(X1, X2)) → ACTIVE(X1)
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(U31(X)) → ACTIVE(X)
ACTIVE(U41(X1, X2, X3)) → ACTIVE(X1)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(78) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


ACTIVE(U11(X1, X2)) → ACTIVE(X1)
ACTIVE(U41(X1, X2, X3)) → ACTIVE(X1)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ACTIVE(x1)  =  ACTIVE(x1)
U11(x1, x2)  =  U11(x1, x2)
s(x1)  =  x1
U31(x1)  =  x1
U41(x1, x2, x3)  =  U41(x1, x2, x3)
active(x1)  =  active(x1)
tt  =  tt
mark(x1)  =  mark
U21(x1, x2, x3)  =  U21(x1, x3)
plus(x1, x2)  =  x1
0  =  0
x(x1, x2)  =  x(x1, x2)
and(x1, x2)  =  and
isNat(x1)  =  isNat(x1)
proper(x1)  =  x1
ok(x1)  =  ok
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
ACTIVE1 > mark
active1 > 0 > ok > U112 > mark
active1 > 0 > ok > U413 > x2 > mark
active1 > 0 > ok > U212 > mark
active1 > and > ok > U112 > mark
active1 > and > ok > U413 > x2 > mark
active1 > and > ok > U212 > mark
tt > 0 > ok > U112 > mark
tt > 0 > ok > U413 > x2 > mark
tt > 0 > ok > U212 > mark
isNat1 > and > ok > U112 > mark
isNat1 > and > ok > U413 > x2 > mark
isNat1 > and > ok > U212 > mark
top > mark

Status:
ACTIVE1: [1]
U112: [1,2]
U413: multiset
active1: [1]
tt: multiset
mark: multiset
U212: [2,1]
0: multiset
x2: multiset
and: multiset
isNat1: multiset
ok: multiset
top: multiset

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(79) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(U31(X)) → ACTIVE(X)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(80) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


ACTIVE(U31(X)) → ACTIVE(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ACTIVE(x1)  =  ACTIVE(x1)
s(x1)  =  x1
U31(x1)  =  U31(x1)
active(x1)  =  active(x1)
U11(x1, x2)  =  U11
tt  =  tt
mark(x1)  =  mark
U21(x1, x2, x3)  =  U21
plus(x1, x2)  =  plus
0  =  0
U41(x1, x2, x3)  =  U41(x1, x3)
x(x1, x2)  =  x
and(x1, x2)  =  and
isNat(x1)  =  x1
proper(x1)  =  proper(x1)
ok(x1)  =  ok
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
U11 > active1 > mark > U311 > ok > ACTIVE1
U11 > active1 > mark > U412 > ok > ACTIVE1
U11 > proper1 > U311 > ok > ACTIVE1
U11 > proper1 > U412 > ok > ACTIVE1
tt > 0 > mark > U311 > ok > ACTIVE1
tt > 0 > mark > U412 > ok > ACTIVE1
plus > U21 > active1 > mark > U311 > ok > ACTIVE1
plus > U21 > active1 > mark > U412 > ok > ACTIVE1
plus > U21 > proper1 > U311 > ok > ACTIVE1
plus > U21 > proper1 > U412 > ok > ACTIVE1
plus > and > active1 > mark > U311 > ok > ACTIVE1
plus > and > active1 > mark > U412 > ok > ACTIVE1
plus > and > proper1 > U311 > ok > ACTIVE1
plus > and > proper1 > U412 > ok > ACTIVE1
x > and > active1 > mark > U311 > ok > ACTIVE1
x > and > active1 > mark > U412 > ok > ACTIVE1
x > and > proper1 > U311 > ok > ACTIVE1
x > and > proper1 > U412 > ok > ACTIVE1
top > active1 > mark > U311 > ok > ACTIVE1
top > active1 > mark > U412 > ok > ACTIVE1
top > proper1 > U311 > ok > ACTIVE1
top > proper1 > U412 > ok > ACTIVE1

Status:
ACTIVE1: multiset
U311: multiset
active1: [1]
U11: multiset
tt: multiset
mark: multiset
U21: multiset
plus: []
0: multiset
U412: multiset
x: []
and: []
proper1: [1]
ok: multiset
top: multiset

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(81) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ACTIVE(s(X)) → ACTIVE(X)

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(82) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


ACTIVE(s(X)) → ACTIVE(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ACTIVE(x1)  =  ACTIVE(x1)
s(x1)  =  s(x1)
active(x1)  =  active(x1)
U11(x1, x2)  =  U11
tt  =  tt
mark(x1)  =  mark
U21(x1, x2, x3)  =  U21(x2, x3)
plus(x1, x2)  =  plus
U31(x1)  =  x1
0  =  0
U41(x1, x2, x3)  =  U41
x(x1, x2)  =  x
and(x1, x2)  =  x1
isNat(x1)  =  isNat
proper(x1)  =  proper(x1)
ok(x1)  =  ok
top(x1)  =  top

Recursive path order with status [RPO].
Precedence:
ACTIVE1 > s1
isNat > tt > mark > s1
isNat > ok > active1 > mark > s1
top > proper1 > U11 > ok > active1 > mark > s1
top > proper1 > plus > U212 > active1 > mark > s1
top > proper1 > plus > ok > active1 > mark > s1
top > proper1 > 0 > tt > mark > s1
top > proper1 > 0 > ok > active1 > mark > s1
top > proper1 > U41 > ok > active1 > mark > s1
top > proper1 > x > ok > active1 > mark > s1

Status:
ACTIVE1: [1]
s1: multiset
active1: [1]
U11: multiset
tt: multiset
mark: multiset
U212: multiset
plus: multiset
0: multiset
U41: multiset
x: multiset
isNat: multiset
proper1: [1]
ok: multiset
top: []

The following usable rules [FROCOS05] were oriented:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

(83) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(84) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(85) TRUE

(86) Obligation:

Q DP problem:
The TRS P consists of the following rules:

TOP(ok(X)) → TOP(active(X))
TOP(mark(X)) → TOP(proper(X))

The TRS R consists of the following rules:

active(U11(tt, N)) → mark(N)
active(U21(tt, M, N)) → mark(s(plus(N, M)))
active(U31(tt)) → mark(0)
active(U41(tt, M, N)) → mark(plus(x(N, M), N))
active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(isNat(s(V1))) → mark(isNat(V1))
active(isNat(x(V1, V2))) → mark(and(isNat(V1), isNat(V2)))
active(plus(N, 0)) → mark(U11(isNat(N), N))
active(plus(N, s(M))) → mark(U21(and(isNat(M), isNat(N)), M, N))
active(x(N, 0)) → mark(U31(isNat(N)))
active(x(N, s(M))) → mark(U41(and(isNat(M), isNat(N)), M, N))
active(U11(X1, X2)) → U11(active(X1), X2)
active(U21(X1, X2, X3)) → U21(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))
active(U31(X)) → U31(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(x(X1, X2)) → x(active(X1), X2)
active(x(X1, X2)) → x(X1, active(X2))
active(and(X1, X2)) → and(active(X1), X2)
U11(mark(X1), X2) → mark(U11(X1, X2))
U21(mark(X1), X2, X3) → mark(U21(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))
U31(mark(X)) → mark(U31(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
x(mark(X1), X2) → mark(x(X1, X2))
x(X1, mark(X2)) → mark(x(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(s(X)) → s(proper(X))
proper(plus(X1, X2)) → plus(proper(X1), proper(X2))
proper(U31(X)) → U31(proper(X))
proper(0) → ok(0)
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(x(X1, X2)) → x(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNat(X)) → isNat(proper(X))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
s(ok(X)) → ok(s(X))
plus(ok(X1), ok(X2)) → ok(plus(X1, X2))
U31(ok(X)) → ok(U31(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
x(ok(X1), ok(X2)) → ok(x(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNat(ok(X)) → ok(isNat(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.