(0) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
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(U11(tt, V2)) → MARK(U12(isNat(V2)))
ACTIVE(U11(tt, V2)) → U121(isNat(V2))
ACTIVE(U11(tt, V2)) → ISNAT(V2)
ACTIVE(U12(tt)) → MARK(tt)
ACTIVE(U21(tt)) → MARK(tt)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
ACTIVE(U31(tt, V2)) → U321(isNat(V2))
ACTIVE(U31(tt, V2)) → ISNAT(V2)
ACTIVE(U32(tt)) → MARK(tt)
ACTIVE(U41(tt, N)) → MARK(N)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
ACTIVE(U51(tt, M, N)) → U521(isNat(N), M, N)
ACTIVE(U51(tt, M, N)) → ISNAT(N)
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
ACTIVE(U52(tt, M, N)) → S(plus(N, M))
ACTIVE(U52(tt, M, N)) → PLUS(N, M)
ACTIVE(U61(tt)) → MARK(0)
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
ACTIVE(U71(tt, M, N)) → U721(isNat(N), M, N)
ACTIVE(U71(tt, M, N)) → ISNAT(N)
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
ACTIVE(U72(tt, M, N)) → PLUS(x(N, M), N)
ACTIVE(U72(tt, M, N)) → X(N, M)
ACTIVE(isNat(0)) → MARK(tt)
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(isNat(plus(V1, V2))) → U111(isNat(V1), V2)
ACTIVE(isNat(plus(V1, V2))) → ISNAT(V1)
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(isNat(s(V1))) → U211(isNat(V1))
ACTIVE(isNat(s(V1))) → ISNAT(V1)
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
ACTIVE(isNat(x(V1, V2))) → U311(isNat(V1), V2)
ACTIVE(isNat(x(V1, V2))) → ISNAT(V1)
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
ACTIVE(plus(N, 0)) → U411(isNat(N), N)
ACTIVE(plus(N, 0)) → ISNAT(N)
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
ACTIVE(plus(N, s(M))) → U511(isNat(M), M, N)
ACTIVE(plus(N, s(M))) → ISNAT(M)
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
ACTIVE(x(N, 0)) → U611(isNat(N))
ACTIVE(x(N, 0)) → ISNAT(N)
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
ACTIVE(x(N, s(M))) → U711(isNat(M), M, N)
ACTIVE(x(N, s(M))) → ISNAT(M)
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
MARK(U11(X1, X2)) → U111(mark(X1), X2)
MARK(U11(X1, X2)) → MARK(X1)
MARK(tt) → ACTIVE(tt)
MARK(U12(X)) → ACTIVE(U12(mark(X)))
MARK(U12(X)) → U121(mark(X))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U21(X)) → ACTIVE(U21(mark(X)))
MARK(U21(X)) → U211(mark(X))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U31(X1, X2)) → U311(mark(X1), X2)
MARK(U31(X1, X2)) → MARK(X1)
MARK(U32(X)) → ACTIVE(U32(mark(X)))
MARK(U32(X)) → U321(mark(X))
MARK(U32(X)) → MARK(X)
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U41(X1, X2)) → U411(mark(X1), X2)
MARK(U41(X1, X2)) → MARK(X1)
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U51(X1, X2, X3)) → U511(mark(X1), X2, X3)
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
MARK(U52(X1, X2, X3)) → U521(mark(X1), X2, X3)
MARK(U52(X1, X2, X3)) → MARK(X1)
MARK(s(X)) → ACTIVE(s(mark(X)))
MARK(s(X)) → S(mark(X))
MARK(s(X)) → MARK(X)
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
MARK(plus(X1, X2)) → PLUS(mark(X1), mark(X2))
MARK(plus(X1, X2)) → MARK(X1)
MARK(plus(X1, X2)) → MARK(X2)
MARK(U61(X)) → ACTIVE(U61(mark(X)))
MARK(U61(X)) → U611(mark(X))
MARK(U61(X)) → MARK(X)
MARK(0) → ACTIVE(0)
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
MARK(U71(X1, X2, X3)) → U711(mark(X1), X2, X3)
MARK(U71(X1, X2, X3)) → MARK(X1)
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
MARK(U72(X1, X2, X3)) → U721(mark(X1), X2, X3)
MARK(U72(X1, X2, X3)) → MARK(X1)
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(x(X1, X2)) → X(mark(X1), mark(X2))
MARK(x(X1, X2)) → MARK(X1)
MARK(x(X1, X2)) → MARK(X2)
U111(mark(X1), X2) → U111(X1, X2)
U111(X1, mark(X2)) → U111(X1, X2)
U111(active(X1), X2) → U111(X1, X2)
U111(X1, active(X2)) → U111(X1, X2)
U121(mark(X)) → U121(X)
U121(active(X)) → U121(X)
ISNAT(mark(X)) → ISNAT(X)
ISNAT(active(X)) → ISNAT(X)
U211(mark(X)) → U211(X)
U211(active(X)) → U211(X)
U311(mark(X1), X2) → U311(X1, X2)
U311(X1, mark(X2)) → U311(X1, X2)
U311(active(X1), X2) → U311(X1, X2)
U311(X1, active(X2)) → U311(X1, X2)
U321(mark(X)) → U321(X)
U321(active(X)) → U321(X)
U411(mark(X1), X2) → U411(X1, X2)
U411(X1, mark(X2)) → U411(X1, X2)
U411(active(X1), X2) → U411(X1, X2)
U411(X1, active(X2)) → U411(X1, X2)
U511(mark(X1), X2, X3) → U511(X1, X2, X3)
U511(X1, mark(X2), X3) → U511(X1, X2, X3)
U511(X1, X2, mark(X3)) → U511(X1, X2, X3)
U511(active(X1), X2, X3) → U511(X1, X2, X3)
U511(X1, active(X2), X3) → U511(X1, X2, X3)
U511(X1, X2, active(X3)) → U511(X1, X2, X3)
U521(mark(X1), X2, X3) → U521(X1, X2, X3)
U521(X1, mark(X2), X3) → U521(X1, X2, X3)
U521(X1, X2, mark(X3)) → U521(X1, X2, X3)
U521(active(X1), X2, X3) → U521(X1, X2, X3)
U521(X1, active(X2), X3) → U521(X1, X2, X3)
U521(X1, X2, active(X3)) → U521(X1, X2, X3)
S(mark(X)) → S(X)
S(active(X)) → S(X)
PLUS(mark(X1), X2) → PLUS(X1, X2)
PLUS(X1, mark(X2)) → PLUS(X1, X2)
PLUS(active(X1), X2) → PLUS(X1, X2)
PLUS(X1, active(X2)) → PLUS(X1, X2)
U611(mark(X)) → U611(X)
U611(active(X)) → U611(X)
U711(mark(X1), X2, X3) → U711(X1, X2, X3)
U711(X1, mark(X2), X3) → U711(X1, X2, X3)
U711(X1, X2, mark(X3)) → U711(X1, X2, X3)
U711(active(X1), X2, X3) → U711(X1, X2, X3)
U711(X1, active(X2), X3) → U711(X1, X2, X3)
U711(X1, X2, active(X3)) → U711(X1, X2, X3)
U721(mark(X1), X2, X3) → U721(X1, X2, X3)
U721(X1, mark(X2), X3) → U721(X1, X2, X3)
U721(X1, X2, mark(X3)) → U721(X1, X2, X3)
U721(active(X1), X2, X3) → U721(X1, X2, X3)
U721(X1, active(X2), X3) → U721(X1, X2, X3)
U721(X1, X2, active(X3)) → U721(X1, X2, X3)
X(mark(X1), X2) → X(X1, X2)
X(X1, mark(X2)) → X(X1, X2)
X(active(X1), X2) → X(X1, X2)
X(X1, active(X2)) → X(X1, X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
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 16 SCCs with 47 less nodes.
(4) Complex Obligation (AND)
(5) 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(active(X1), X2) → X(X1, X2)
X(X1, active(X2)) → X(X1, X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(6) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(7) 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(active(X1), X2) → X(X1, X2)
X(X1, active(X2)) → X(X1, X2)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(8) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- X(X1, mark(X2)) → X(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
- X(mark(X1), X2) → X(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- X(active(X1), X2) → X(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- X(X1, active(X2)) → X(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
(9) YES
(10) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U721(X1, mark(X2), X3) → U721(X1, X2, X3)
U721(mark(X1), X2, X3) → U721(X1, X2, X3)
U721(X1, X2, mark(X3)) → U721(X1, X2, X3)
U721(active(X1), X2, X3) → U721(X1, X2, X3)
U721(X1, active(X2), X3) → U721(X1, X2, X3)
U721(X1, X2, active(X3)) → U721(X1, X2, X3)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(11) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(12) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U721(X1, mark(X2), X3) → U721(X1, X2, X3)
U721(mark(X1), X2, X3) → U721(X1, X2, X3)
U721(X1, X2, mark(X3)) → U721(X1, X2, X3)
U721(active(X1), X2, X3) → U721(X1, X2, X3)
U721(X1, active(X2), X3) → U721(X1, X2, X3)
U721(X1, X2, active(X3)) → U721(X1, X2, X3)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(13) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- U721(X1, mark(X2), X3) → U721(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U721(mark(X1), X2, X3) → U721(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U721(X1, X2, mark(X3)) → U721(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
- U721(active(X1), X2, X3) → U721(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U721(X1, active(X2), X3) → U721(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U721(X1, X2, active(X3)) → U721(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
(14) YES
(15) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U711(X1, mark(X2), X3) → U711(X1, X2, X3)
U711(mark(X1), X2, X3) → U711(X1, X2, X3)
U711(X1, X2, mark(X3)) → U711(X1, X2, X3)
U711(active(X1), X2, X3) → U711(X1, X2, X3)
U711(X1, active(X2), X3) → U711(X1, X2, X3)
U711(X1, X2, active(X3)) → U711(X1, X2, X3)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(16) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(17) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U711(X1, mark(X2), X3) → U711(X1, X2, X3)
U711(mark(X1), X2, X3) → U711(X1, X2, X3)
U711(X1, X2, mark(X3)) → U711(X1, X2, X3)
U711(active(X1), X2, X3) → U711(X1, X2, X3)
U711(X1, active(X2), X3) → U711(X1, X2, X3)
U711(X1, X2, active(X3)) → U711(X1, X2, X3)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(18) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- U711(X1, mark(X2), X3) → U711(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U711(mark(X1), X2, X3) → U711(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U711(X1, X2, mark(X3)) → U711(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
- U711(active(X1), X2, X3) → U711(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U711(X1, active(X2), X3) → U711(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U711(X1, X2, active(X3)) → U711(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
(19) YES
(20) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U611(active(X)) → U611(X)
U611(mark(X)) → U611(X)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(21) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(22) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U611(active(X)) → U611(X)
U611(mark(X)) → U611(X)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(23) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- U611(active(X)) → U611(X)
The graph contains the following edges 1 > 1
- U611(mark(X)) → U611(X)
The graph contains the following edges 1 > 1
(24) YES
(25) 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(active(X1), X2) → PLUS(X1, X2)
PLUS(X1, active(X2)) → PLUS(X1, X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(26) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(27) 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(active(X1), X2) → PLUS(X1, X2)
PLUS(X1, active(X2)) → PLUS(X1, X2)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(28) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- PLUS(X1, mark(X2)) → PLUS(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
- PLUS(mark(X1), X2) → PLUS(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- PLUS(active(X1), X2) → PLUS(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- PLUS(X1, active(X2)) → PLUS(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
(29) YES
(30) Obligation:
Q DP problem:
The TRS P consists of the following rules:
S(active(X)) → S(X)
S(mark(X)) → S(X)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(31) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(32) Obligation:
Q DP problem:
The TRS P consists of the following rules:
S(active(X)) → S(X)
S(mark(X)) → S(X)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(33) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- S(active(X)) → S(X)
The graph contains the following edges 1 > 1
- S(mark(X)) → S(X)
The graph contains the following edges 1 > 1
(34) YES
(35) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U521(X1, mark(X2), X3) → U521(X1, X2, X3)
U521(mark(X1), X2, X3) → U521(X1, X2, X3)
U521(X1, X2, mark(X3)) → U521(X1, X2, X3)
U521(active(X1), X2, X3) → U521(X1, X2, X3)
U521(X1, active(X2), X3) → U521(X1, X2, X3)
U521(X1, X2, active(X3)) → U521(X1, X2, X3)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(36) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(37) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U521(X1, mark(X2), X3) → U521(X1, X2, X3)
U521(mark(X1), X2, X3) → U521(X1, X2, X3)
U521(X1, X2, mark(X3)) → U521(X1, X2, X3)
U521(active(X1), X2, X3) → U521(X1, X2, X3)
U521(X1, active(X2), X3) → U521(X1, X2, X3)
U521(X1, X2, active(X3)) → U521(X1, X2, X3)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(38) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- U521(X1, mark(X2), X3) → U521(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U521(mark(X1), X2, X3) → U521(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U521(X1, X2, mark(X3)) → U521(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
- U521(active(X1), X2, X3) → U521(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U521(X1, active(X2), X3) → U521(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U521(X1, X2, active(X3)) → U521(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
(39) YES
(40) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U511(X1, mark(X2), X3) → U511(X1, X2, X3)
U511(mark(X1), X2, X3) → U511(X1, X2, X3)
U511(X1, X2, mark(X3)) → U511(X1, X2, X3)
U511(active(X1), X2, X3) → U511(X1, X2, X3)
U511(X1, active(X2), X3) → U511(X1, X2, X3)
U511(X1, X2, active(X3)) → U511(X1, X2, X3)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(41) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(42) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U511(X1, mark(X2), X3) → U511(X1, X2, X3)
U511(mark(X1), X2, X3) → U511(X1, X2, X3)
U511(X1, X2, mark(X3)) → U511(X1, X2, X3)
U511(active(X1), X2, X3) → U511(X1, X2, X3)
U511(X1, active(X2), X3) → U511(X1, X2, X3)
U511(X1, X2, active(X3)) → U511(X1, X2, X3)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(43) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- U511(X1, mark(X2), X3) → U511(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U511(mark(X1), X2, X3) → U511(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U511(X1, X2, mark(X3)) → U511(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
- U511(active(X1), X2, X3) → U511(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
- U511(X1, active(X2), X3) → U511(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
- U511(X1, X2, active(X3)) → U511(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
(44) YES
(45) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U411(X1, mark(X2)) → U411(X1, X2)
U411(mark(X1), X2) → U411(X1, X2)
U411(active(X1), X2) → U411(X1, X2)
U411(X1, active(X2)) → U411(X1, X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(46) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(47) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U411(X1, mark(X2)) → U411(X1, X2)
U411(mark(X1), X2) → U411(X1, X2)
U411(active(X1), X2) → U411(X1, X2)
U411(X1, active(X2)) → U411(X1, X2)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(48) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- U411(X1, mark(X2)) → U411(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
- U411(mark(X1), X2) → U411(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- U411(active(X1), X2) → U411(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- U411(X1, active(X2)) → U411(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
(49) YES
(50) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U321(active(X)) → U321(X)
U321(mark(X)) → U321(X)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(51) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(52) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U321(active(X)) → U321(X)
U321(mark(X)) → U321(X)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(53) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- U321(active(X)) → U321(X)
The graph contains the following edges 1 > 1
- U321(mark(X)) → U321(X)
The graph contains the following edges 1 > 1
(54) YES
(55) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U311(X1, mark(X2)) → U311(X1, X2)
U311(mark(X1), X2) → U311(X1, X2)
U311(active(X1), X2) → U311(X1, X2)
U311(X1, active(X2)) → U311(X1, X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(56) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(57) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U311(X1, mark(X2)) → U311(X1, X2)
U311(mark(X1), X2) → U311(X1, X2)
U311(active(X1), X2) → U311(X1, X2)
U311(X1, active(X2)) → U311(X1, X2)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(58) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- U311(X1, mark(X2)) → U311(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
- U311(mark(X1), X2) → U311(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- U311(active(X1), X2) → U311(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- U311(X1, active(X2)) → U311(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
(59) YES
(60) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U211(active(X)) → U211(X)
U211(mark(X)) → U211(X)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(61) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(62) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U211(active(X)) → U211(X)
U211(mark(X)) → U211(X)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(63) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- U211(active(X)) → U211(X)
The graph contains the following edges 1 > 1
- U211(mark(X)) → U211(X)
The graph contains the following edges 1 > 1
(64) YES
(65) Obligation:
Q DP problem:
The TRS P consists of the following rules:
ISNAT(active(X)) → ISNAT(X)
ISNAT(mark(X)) → ISNAT(X)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(66) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(67) Obligation:
Q DP problem:
The TRS P consists of the following rules:
ISNAT(active(X)) → ISNAT(X)
ISNAT(mark(X)) → ISNAT(X)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(68) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- ISNAT(active(X)) → ISNAT(X)
The graph contains the following edges 1 > 1
- ISNAT(mark(X)) → ISNAT(X)
The graph contains the following edges 1 > 1
(69) YES
(70) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U121(active(X)) → U121(X)
U121(mark(X)) → U121(X)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(71) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(72) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U121(active(X)) → U121(X)
U121(mark(X)) → U121(X)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(73) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- U121(active(X)) → U121(X)
The graph contains the following edges 1 > 1
- U121(mark(X)) → U121(X)
The graph contains the following edges 1 > 1
(74) YES
(75) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U111(X1, mark(X2)) → U111(X1, X2)
U111(mark(X1), X2) → U111(X1, X2)
U111(active(X1), X2) → U111(X1, X2)
U111(X1, active(X2)) → U111(X1, X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(76) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(77) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U111(X1, mark(X2)) → U111(X1, X2)
U111(mark(X1), X2) → U111(X1, X2)
U111(active(X1), X2) → U111(X1, X2)
U111(X1, active(X2)) → U111(X1, X2)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(78) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- U111(X1, mark(X2)) → U111(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
- U111(mark(X1), X2) → U111(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- U111(active(X1), X2) → U111(X1, X2)
The graph contains the following edges 1 > 1, 2 >= 2
- U111(X1, active(X2)) → U111(X1, X2)
The graph contains the following edges 1 >= 1, 2 > 2
(79) YES
(80) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U12(X)) → ACTIVE(U12(mark(X)))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
ACTIVE(U41(tt, N)) → MARK(N)
MARK(U21(X)) → ACTIVE(U21(mark(X)))
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U32(X)) → ACTIVE(U32(mark(X)))
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U32(X)) → MARK(X)
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
MARK(U41(X1, X2)) → MARK(X1)
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → MARK(X1)
MARK(s(X)) → ACTIVE(s(mark(X)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(s(X)) → MARK(X)
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
MARK(plus(X1, X2)) → MARK(X1)
MARK(plus(X1, X2)) → MARK(X2)
MARK(U61(X)) → ACTIVE(U61(mark(X)))
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
MARK(U61(X)) → MARK(X)
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(U71(X1, X2, X3)) → MARK(X1)
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(U72(X1, X2, X3)) → MARK(X1)
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(x(X1, X2)) → MARK(X1)
MARK(x(X1, X2)) → MARK(X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(81) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(U61(X)) → ACTIVE(U61(mark(X)))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation:
POL( U51(x1, ..., x3) ) = 1 |
POL( U52(x1, ..., x3) ) = 1 |
POL( U61(x1) ) = max{0, -2} |
POL( U71(x1, ..., x3) ) = 1 |
POL( U72(x1, ..., x3) ) = 1 |
POL( active(x1) ) = x1 + 1 |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
s(active(X)) → s(X)
s(mark(X)) → s(X)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U41(X1, mark(X2)) → U41(X1, X2)
U41(mark(X1), X2) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U61(active(X)) → U61(X)
U61(mark(X)) → U61(X)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
(82) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U12(X)) → ACTIVE(U12(mark(X)))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
ACTIVE(U41(tt, N)) → MARK(N)
MARK(U21(X)) → ACTIVE(U21(mark(X)))
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U32(X)) → ACTIVE(U32(mark(X)))
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U32(X)) → MARK(X)
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
MARK(U41(X1, X2)) → MARK(X1)
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → MARK(X1)
MARK(s(X)) → ACTIVE(s(mark(X)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(s(X)) → MARK(X)
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
MARK(plus(X1, X2)) → MARK(X1)
MARK(plus(X1, X2)) → MARK(X2)
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
MARK(U61(X)) → MARK(X)
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(U71(X1, X2, X3)) → MARK(X1)
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(U72(X1, X2, X3)) → MARK(X1)
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(x(X1, X2)) → MARK(X1)
MARK(x(X1, X2)) → MARK(X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(83) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(s(X)) → ACTIVE(s(mark(X)))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:
POL(0) = 0
POL(ACTIVE(x1)) = x1
POL(MARK(x1)) = 1
POL(U11(x1, x2)) = 1
POL(U12(x1)) = 1
POL(U21(x1)) = 1
POL(U31(x1, x2)) = 1
POL(U32(x1)) = 1
POL(U41(x1, x2)) = 1
POL(U51(x1, x2, x3)) = 1
POL(U52(x1, x2, x3)) = 1
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 1
POL(U72(x1, x2, x3)) = 1
POL(active(x1)) = 0
POL(isNat(x1)) = 1
POL(mark(x1)) = 0
POL(plus(x1, x2)) = 1
POL(s(x1)) = 0
POL(tt) = 0
POL(x(x1, x2)) = 1
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
s(active(X)) → s(X)
s(mark(X)) → s(X)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U41(X1, mark(X2)) → U41(X1, X2)
U41(mark(X1), X2) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
(84) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U12(X)) → ACTIVE(U12(mark(X)))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
ACTIVE(U41(tt, N)) → MARK(N)
MARK(U21(X)) → ACTIVE(U21(mark(X)))
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U32(X)) → ACTIVE(U32(mark(X)))
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U32(X)) → MARK(X)
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
MARK(U41(X1, X2)) → MARK(X1)
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → MARK(X1)
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(s(X)) → MARK(X)
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
MARK(plus(X1, X2)) → MARK(X1)
MARK(plus(X1, X2)) → MARK(X2)
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
MARK(U61(X)) → MARK(X)
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(U71(X1, X2, X3)) → MARK(X1)
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(U72(X1, X2, X3)) → MARK(X1)
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(x(X1, X2)) → MARK(X1)
MARK(x(X1, X2)) → MARK(X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(85) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(U32(X)) → ACTIVE(U32(mark(X)))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:
POL(0) = 0
POL(ACTIVE(x1)) = x1
POL(MARK(x1)) = 1
POL(U11(x1, x2)) = 1
POL(U12(x1)) = 1
POL(U21(x1)) = 1
POL(U31(x1, x2)) = 1
POL(U32(x1)) = 0
POL(U41(x1, x2)) = 1
POL(U51(x1, x2, x3)) = 1
POL(U52(x1, x2, x3)) = 1
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 1
POL(U72(x1, x2, x3)) = 1
POL(active(x1)) = 0
POL(isNat(x1)) = 1
POL(mark(x1)) = 0
POL(plus(x1, x2)) = 1
POL(s(x1)) = 1
POL(tt) = 0
POL(x(x1, x2)) = 1
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U41(X1, mark(X2)) → U41(X1, X2)
U41(mark(X1), X2) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
(86) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U12(X)) → ACTIVE(U12(mark(X)))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
ACTIVE(U41(tt, N)) → MARK(N)
MARK(U21(X)) → ACTIVE(U21(mark(X)))
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
MARK(U31(X1, X2)) → MARK(X1)
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U32(X)) → MARK(X)
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
MARK(U41(X1, X2)) → MARK(X1)
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → MARK(X1)
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(s(X)) → MARK(X)
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
MARK(plus(X1, X2)) → MARK(X1)
MARK(plus(X1, X2)) → MARK(X2)
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
MARK(U61(X)) → MARK(X)
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(U71(X1, X2, X3)) → MARK(X1)
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(U72(X1, X2, X3)) → MARK(X1)
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(x(X1, X2)) → MARK(X1)
MARK(x(X1, X2)) → MARK(X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(87) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(U21(X)) → ACTIVE(U21(mark(X)))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:
POL(0) = 0
POL(ACTIVE(x1)) = x1
POL(MARK(x1)) = 1
POL(U11(x1, x2)) = 1
POL(U12(x1)) = 1
POL(U21(x1)) = 0
POL(U31(x1, x2)) = 1
POL(U32(x1)) = 0
POL(U41(x1, x2)) = 1
POL(U51(x1, x2, x3)) = 1
POL(U52(x1, x2, x3)) = 1
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 1
POL(U72(x1, x2, x3)) = 1
POL(active(x1)) = 0
POL(isNat(x1)) = 1
POL(mark(x1)) = 0
POL(plus(x1, x2)) = 1
POL(s(x1)) = 1
POL(tt) = 0
POL(x(x1, x2)) = 1
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U41(X1, mark(X2)) → U41(X1, X2)
U41(mark(X1), X2) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
(88) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U12(X)) → ACTIVE(U12(mark(X)))
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
ACTIVE(U41(tt, N)) → MARK(N)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
MARK(U31(X1, X2)) → MARK(X1)
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U32(X)) → MARK(X)
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
MARK(U41(X1, X2)) → MARK(X1)
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → MARK(X1)
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(s(X)) → MARK(X)
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
MARK(plus(X1, X2)) → MARK(X1)
MARK(plus(X1, X2)) → MARK(X2)
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
MARK(U61(X)) → MARK(X)
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(U71(X1, X2, X3)) → MARK(X1)
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(U72(X1, X2, X3)) → MARK(X1)
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(x(X1, X2)) → MARK(X1)
MARK(x(X1, X2)) → MARK(X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(89) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(U12(X)) → ACTIVE(U12(mark(X)))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:
POL(0) = 0
POL(ACTIVE(x1)) = x1
POL(MARK(x1)) = 1
POL(U11(x1, x2)) = 1
POL(U12(x1)) = 0
POL(U21(x1)) = 0
POL(U31(x1, x2)) = 1
POL(U32(x1)) = 0
POL(U41(x1, x2)) = 1
POL(U51(x1, x2, x3)) = 1
POL(U52(x1, x2, x3)) = 1
POL(U61(x1)) = 0
POL(U71(x1, x2, x3)) = 1
POL(U72(x1, x2, x3)) = 1
POL(active(x1)) = 0
POL(isNat(x1)) = 1
POL(mark(x1)) = 0
POL(plus(x1, x2)) = 1
POL(s(x1)) = 1
POL(tt) = 0
POL(x(x1, x2)) = 1
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U41(X1, mark(X2)) → U41(X1, X2)
U41(mark(X1), X2) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
(90) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
ACTIVE(U41(tt, N)) → MARK(N)
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
MARK(U31(X1, X2)) → MARK(X1)
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U32(X)) → MARK(X)
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
MARK(U41(X1, X2)) → MARK(X1)
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
MARK(U52(X1, X2, X3)) → MARK(X1)
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(s(X)) → MARK(X)
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
MARK(plus(X1, X2)) → MARK(X1)
MARK(plus(X1, X2)) → MARK(X2)
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
MARK(U61(X)) → MARK(X)
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(U71(X1, X2, X3)) → MARK(X1)
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(U72(X1, X2, X3)) → MARK(X1)
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
MARK(x(X1, X2)) → MARK(X1)
MARK(x(X1, X2)) → MARK(X2)
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(91) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
ACTIVE(U41(tt, N)) → MARK(N)
ACTIVE(U52(tt, M, N)) → MARK(s(plus(N, M)))
ACTIVE(U72(tt, M, N)) → MARK(plus(x(N, M), N))
MARK(U41(X1, X2)) → MARK(X1)
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2, X3)) → MARK(X1)
MARK(s(X)) → MARK(X)
ACTIVE(plus(N, 0)) → MARK(U41(isNat(N), N))
MARK(plus(X1, X2)) → MARK(X1)
MARK(plus(X1, X2)) → MARK(X2)
ACTIVE(plus(N, s(M))) → MARK(U51(isNat(M), M, N))
MARK(U61(X)) → MARK(X)
ACTIVE(x(N, 0)) → MARK(U61(isNat(N)))
MARK(U71(X1, X2, X3)) → MARK(X1)
ACTIVE(x(N, s(M))) → MARK(U71(isNat(M), M, N))
MARK(U72(X1, X2, X3)) → MARK(X1)
MARK(x(X1, X2)) → MARK(X1)
MARK(x(X1, X2)) → MARK(X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
MARK(
x1) =
MARK(
x1)
U11(
x1,
x2) =
x1
ACTIVE(
x1) =
ACTIVE(
x1)
mark(
x1) =
x1
tt =
tt
U12(
x1) =
x1
isNat(
x1) =
isNat
U31(
x1,
x2) =
x1
U32(
x1) =
x1
U41(
x1,
x2) =
U41(
x1,
x2)
U51(
x1,
x2,
x3) =
U51(
x1,
x2,
x3)
U52(
x1,
x2,
x3) =
U52(
x1,
x2,
x3)
U21(
x1) =
x1
s(
x1) =
s(
x1)
plus(
x1,
x2) =
plus(
x1,
x2)
U71(
x1,
x2,
x3) =
U71(
x1,
x2,
x3)
U72(
x1,
x2,
x3) =
U72(
x1,
x2,
x3)
x(
x1,
x2) =
x(
x1,
x2)
0 =
0
U61(
x1) =
U61(
x1)
active(
x1) =
x1
Recursive path order with status [RPO].
Quasi-Precedence:
[U713, U723, x2, U611] > [tt, isNat, U513, U523, plus2, 0] > U412 > [MARK1, ACTIVE1] > s1
Status:
MARK1: multiset
ACTIVE1: multiset
tt: multiset
isNat: []
U412: multiset
U513: [3,2,1]
U523: [3,2,1]
s1: multiset
plus2: [1,2]
U713: [2,3,1]
U723: [2,3,1]
x2: [2,1]
0: multiset
U611: [1]
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
active(U11(tt, V2)) → mark(U12(isNat(V2)))
mark(U12(X)) → active(U12(mark(X)))
active(U31(tt, V2)) → mark(U32(isNat(V2)))
mark(isNat(X)) → active(isNat(X))
active(U41(tt, N)) → mark(N)
mark(U21(X)) → active(U21(mark(X)))
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
mark(U32(X)) → active(U32(mark(X)))
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
mark(s(X)) → active(s(mark(X)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
active(plus(N, 0)) → mark(U41(isNat(N), N))
mark(U61(X)) → active(U61(mark(X)))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
active(x(N, 0)) → mark(U61(isNat(N)))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
mark(tt) → active(tt)
mark(0) → active(0)
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
s(active(X)) → s(X)
s(mark(X)) → s(X)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U41(X1, mark(X2)) → U41(X1, X2)
U41(mark(X1), X2) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U61(active(X)) → U61(X)
U61(mark(X)) → U61(X)
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U32(tt)) → mark(tt)
active(U61(tt)) → mark(0)
active(isNat(0)) → mark(tt)
(92) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U32(X)) → MARK(X)
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(93) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(plus(X1, X2)) → ACTIVE(plus(mark(X1), mark(X2)))
MARK(U71(X1, X2, X3)) → ACTIVE(U71(mark(X1), X2, X3))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation:
POL( U41(x1, x2) ) = max{0, -2} |
POL( U51(x1, ..., x3) ) = max{0, -2} |
POL( U52(x1, ..., x3) ) = max{0, -2} |
POL( U71(x1, ..., x3) ) = 2 |
POL( U72(x1, ..., x3) ) = max{0, -2} |
POL( plus(x1, x2) ) = x1 + 2 |
POL( x(x1, x2) ) = max{0, -1} |
POL( active(x1) ) = x1 + 2 |
POL( MARK(x1) ) = 2x1 + 1 |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
(94) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U32(X)) → MARK(X)
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(95) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(U41(X1, X2)) → ACTIVE(U41(mark(X1), X2))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation:
POL( ACTIVE(x1) ) = max{0, -1} |
POL( U41(x1, x2) ) = x2 + 1 |
POL( U51(x1, ..., x3) ) = 0 |
POL( U52(x1, ..., x3) ) = 0 |
POL( U72(x1, ..., x3) ) = 0 |
POL( U71(x1, ..., x3) ) = max{0, -1} |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
(96) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
MARK(U32(X)) → MARK(X)
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(97) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
ACTIVE(U71(tt, M, N)) → MARK(U72(isNat(N), M, N))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation:
POL( ACTIVE(x1) ) = 2x1 + 2 |
POL( U11(x1, x2) ) = max{0, -2} |
POL( U51(x1, ..., x3) ) = max{0, -1} |
POL( U52(x1, ..., x3) ) = max{0, -1} |
POL( U72(x1, ..., x3) ) = max{0, -1} |
POL( active(x1) ) = max{0, x1 - 1} |
POL( plus(x1, x2) ) = x2 + 1 |
POL( U71(x1, ..., x3) ) = max{0, 2x1 + 2x2 - 1} |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
x(X1, mark(X2)) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
(98) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U32(X)) → MARK(X)
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(99) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(U52(X1, X2, X3)) → ACTIVE(U52(mark(X1), X2, X3))
MARK(x(X1, X2)) → ACTIVE(x(mark(X1), mark(X2)))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation:
POL( U51(x1, ..., x3) ) = 1 |
POL( U52(x1, ..., x3) ) = max{0, -2} |
POL( U72(x1, ..., x3) ) = 1 |
POL( x(x1, x2) ) = max{0, -2} |
POL( U41(x1, x2) ) = max{0, x1 + x2 - 2} |
POL( U71(x1, ..., x3) ) = max{0, 2x1 + x3 - 2} |
POL( U61(x1) ) = max{0, -2} |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(X1, mark(X2)) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
(100) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U32(X)) → MARK(X)
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(101) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(U72(X1, X2, X3)) → ACTIVE(U72(mark(X1), X2, X3))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation:
POL( ACTIVE(x1) ) = max{0, x1 - 1} |
POL( U51(x1, ..., x3) ) = max{0, -1} |
POL( U72(x1, ..., x3) ) = 1 |
POL( U41(x1, x2) ) = x1 + x2 |
POL( U52(x1, ..., x3) ) = max{0, -2} |
POL( s(x1) ) = max{0, -2} |
POL( U71(x1, ..., x3) ) = 1 |
POL( U61(x1) ) = max{0, -2} |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
active(U11(tt, V2)) → mark(U12(isNat(V2)))
mark(U12(X)) → active(U12(mark(X)))
active(U31(tt, V2)) → mark(U32(isNat(V2)))
mark(isNat(X)) → active(isNat(X))
active(U41(tt, N)) → mark(N)
mark(U21(X)) → active(U21(mark(X)))
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
mark(U32(X)) → active(U32(mark(X)))
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
mark(s(X)) → active(s(mark(X)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
active(plus(N, 0)) → mark(U41(isNat(N), N))
mark(U61(X)) → active(U61(mark(X)))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
active(x(N, 0)) → mark(U61(isNat(N)))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
mark(tt) → active(tt)
mark(0) → active(0)
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U32(tt)) → mark(tt)
active(U61(tt)) → mark(0)
active(isNat(0)) → mark(tt)
plus(X1, mark(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
s(active(X)) → s(X)
s(mark(X)) → s(X)
U41(X1, mark(X2)) → U41(X1, X2)
U41(mark(X1), X2) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
U61(active(X)) → U61(X)
U61(mark(X)) → U61(X)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
(102) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U32(X)) → MARK(X)
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(103) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation:
POL( ACTIVE(x1) ) = max{0, -2} |
POL( U51(x1, ..., x3) ) = x3 + 1 |
POL( active(x1) ) = x1 + 2 |
POL( U41(x1, x2) ) = 2x1 + x2 |
POL( U52(x1, ..., x3) ) = 0 |
POL( s(x1) ) = max{0, x1 - 2} |
POL( plus(x1, x2) ) = 2x1 + 2 |
POL( U71(x1, ..., x3) ) = 2 |
POL( U72(x1, ..., x3) ) = x1 + 2 |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
(104) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U32(X)) → MARK(X)
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(105) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
ACTIVE(U51(tt, M, N)) → MARK(U52(isNat(N), M, N))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation:
POL( ACTIVE(x1) ) = max{0, 2x1 - 1} |
POL( active(x1) ) = x1 + 2 |
POL( U41(x1, x2) ) = max{0, 2x1 + 2x2 - 1} |
POL( U51(x1, ..., x3) ) = 2x1 + 2 |
POL( U52(x1, ..., x3) ) = x1 + x3 |
POL( s(x1) ) = max{0, x1 - 2} |
POL( plus(x1, x2) ) = max{0, 2x1 - 2} |
POL( U71(x1, ..., x3) ) = 0 |
POL( U72(x1, ..., x3) ) = 2x1 + 2x2 + 2 |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
(106) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U31(X1, X2)) → MARK(X1)
MARK(U32(X)) → MARK(X)
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(107) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(U31(X1, X2)) → MARK(X1)
MARK(U32(X)) → MARK(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]:
POL(MARK(x1)) = | 3A | + | 1A | · | x1 |
POL(U11(x1, x2)) = | 0A | + | 0A | · | x1 | + | 4A | · | x2 |
POL(ACTIVE(x1)) = | 3A | + | 1A | · | x1 |
POL(mark(x1)) = | -I | + | 0A | · | x1 |
POL(U12(x1)) = | 0A | + | 1A | · | x1 |
POL(isNat(x1)) = | 1A | + | 3A | · | x1 |
POL(U31(x1, x2)) = | 4A | + | 1A | · | x1 | + | 5A | · | x2 |
POL(U32(x1)) = | 4A | + | 1A | · | x1 |
POL(U21(x1)) = | 3A | + | 0A | · | x1 |
POL(plus(x1, x2)) = | 0A | + | 0A | · | x1 | + | 1A | · | x2 |
POL(x(x1, x2)) = | 1A | + | 1A | · | x1 | + | 4A | · | x2 |
POL(active(x1)) = | 0A | + | 0A | · | x1 |
POL(U41(x1, x2)) = | 1A | + | -I | · | x1 | + | 0A | · | x2 |
POL(U51(x1, x2, x3)) = | 1A | + | -I | · | x1 | + | 1A | · | x2 | + | 0A | · | x3 |
POL(U52(x1, x2, x3)) = | 0A | + | -I | · | x1 | + | 1A | · | x2 | + | 0A | · | x3 |
POL(U71(x1, x2, x3)) = | 3A | + | -I | · | x1 | + | 4A | · | x2 | + | 1A | · | x3 |
POL(U72(x1, x2, x3)) = | 2A | + | -I | · | x1 | + | 4A | · | x2 | + | 1A | · | x3 |
POL(U61(x1)) = | 3A | + | -I | · | x1 |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
active(U11(tt, V2)) → mark(U12(isNat(V2)))
mark(U12(X)) → active(U12(mark(X)))
active(U31(tt, V2)) → mark(U32(isNat(V2)))
mark(isNat(X)) → active(isNat(X))
active(U41(tt, N)) → mark(N)
mark(U21(X)) → active(U21(mark(X)))
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
mark(U32(X)) → active(U32(mark(X)))
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
mark(s(X)) → active(s(mark(X)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
active(plus(N, 0)) → mark(U41(isNat(N), N))
mark(U61(X)) → active(U61(mark(X)))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
active(x(N, 0)) → mark(U61(isNat(N)))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
mark(tt) → active(tt)
mark(0) → active(0)
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U32(tt)) → mark(tt)
active(U61(tt)) → mark(0)
active(isNat(0)) → mark(tt)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
plus(X1, mark(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
s(active(X)) → s(X)
s(mark(X)) → s(X)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U41(X1, mark(X2)) → U41(X1, X2)
U41(mark(X1), X2) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U61(active(X)) → U61(X)
U61(mark(X)) → U61(X)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
(108) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(109) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
ACTIVE(U31(tt, V2)) → MARK(U32(isNat(V2)))
The remaining pairs can at least be oriented weakly.
Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]:
POL(MARK(x1)) = | 4A | + | 0A | · | x1 |
POL(U11(x1, x2)) = | -I | + | 0A | · | x1 | + | 1A | · | x2 |
POL(ACTIVE(x1)) = | 4A | + | 0A | · | x1 |
POL(mark(x1)) = | -I | + | 0A | · | x1 |
POL(U12(x1)) = | -I | + | 0A | · | x1 |
POL(isNat(x1)) = | -I | + | 0A | · | x1 |
POL(U31(x1, x2)) = | -I | + | 2A | · | x1 | + | 5A | · | x2 |
POL(U32(x1)) = | 5A | + | -I | · | x1 |
POL(U21(x1)) = | -I | + | 0A | · | x1 |
POL(plus(x1, x2)) = | 2A | + | 0A | · | x1 | + | 1A | · | x2 |
POL(x(x1, x2)) = | -I | + | 2A | · | x1 | + | 5A | · | x2 |
POL(active(x1)) = | -I | + | 0A | · | x1 |
POL(U41(x1, x2)) = | 0A | + | -I | · | x1 | + | 0A | · | x2 |
POL(U51(x1, x2, x3)) = | 1A | + | 0A | · | x1 | + | 1A | · | x2 | + | 0A | · | x3 |
POL(U52(x1, x2, x3)) = | 2A | + | -I | · | x1 | + | 1A | · | x2 | + | 0A | · | x3 |
POL(U71(x1, x2, x3)) = | -I | + | 4A | · | x1 | + | 5A | · | x2 | + | 2A | · | x3 |
POL(U72(x1, x2, x3)) = | 3A | + | -I | · | x1 | + | 5A | · | x2 | + | 2A | · | x3 |
POL(U61(x1)) = | 5A | + | -I | · | x1 |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
active(U11(tt, V2)) → mark(U12(isNat(V2)))
mark(U12(X)) → active(U12(mark(X)))
active(U31(tt, V2)) → mark(U32(isNat(V2)))
mark(isNat(X)) → active(isNat(X))
active(U41(tt, N)) → mark(N)
mark(U21(X)) → active(U21(mark(X)))
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
mark(U32(X)) → active(U32(mark(X)))
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
mark(s(X)) → active(s(mark(X)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
active(plus(N, 0)) → mark(U41(isNat(N), N))
mark(U61(X)) → active(U61(mark(X)))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
active(x(N, 0)) → mark(U61(isNat(N)))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
mark(tt) → active(tt)
mark(0) → active(0)
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U32(tt)) → mark(tt)
active(U61(tt)) → mark(0)
active(isNat(0)) → mark(tt)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
plus(X1, mark(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
s(active(X)) → s(X)
s(mark(X)) → s(X)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U41(X1, mark(X2)) → U41(X1, X2)
U41(mark(X1), X2) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U61(active(X)) → U61(X)
U61(mark(X)) → U61(X)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
(110) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U21(X)) → MARK(X)
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(111) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation:
POL( ACTIVE(x1) ) = max{0, 2x1 - 2} |
POL( active(x1) ) = 2x1 + 2 |
POL( U41(x1, x2) ) = x1 + 2x2 + 1 |
POL( U51(x1, ..., x3) ) = 0 |
POL( U52(x1, ..., x3) ) = max{0, 2x1 + 2x2 - 1} |
POL( s(x1) ) = max{0, x1 - 2} |
POL( plus(x1, x2) ) = max{0, x1 - 2} |
POL( U71(x1, ..., x3) ) = x1 |
POL( U72(x1, ..., x3) ) = 1 |
POL( x(x1, x2) ) = max{0, 2x2 - 2} |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
(112) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U21(X)) → MARK(X)
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(113) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
ACTIVE(isNat(x(V1, V2))) → MARK(U31(isNat(V1), V2))
The remaining pairs can at least be oriented weakly.
Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]:
POL(MARK(x1)) = | 3A | + | 3A | · | x1 |
POL(U11(x1, x2)) = | -I | + | 0A | · | x1 | + | 2A | · | x2 |
POL(ACTIVE(x1)) = | 3A | + | 3A | · | x1 |
POL(mark(x1)) = | 0A | + | 0A | · | x1 |
POL(U12(x1)) = | -I | + | 0A | · | x1 |
POL(isNat(x1)) = | -I | + | 0A | · | x1 |
POL(U21(x1)) = | -I | + | 0A | · | x1 |
POL(plus(x1, x2)) = | 2A | + | 0A | · | x1 | + | 2A | · | x2 |
POL(x(x1, x2)) = | 2A | + | 2A | · | x1 | + | -I | · | x2 |
POL(U31(x1, x2)) = | 0A | + | -I | · | x1 | + | -I | · | x2 |
POL(active(x1)) = | 0A | + | 0A | · | x1 |
POL(U32(x1)) = | 0A | + | -I | · | x1 |
POL(U41(x1, x2)) = | -I | + | 0A | · | x1 | + | 0A | · | x2 |
POL(U51(x1, x2, x3)) = | 4A | + | 1A | · | x1 | + | 2A | · | x2 | + | 0A | · | x3 |
POL(U52(x1, x2, x3)) = | 4A | + | 0A | · | x1 | + | 2A | · | x2 | + | 0A | · | x3 |
POL(U71(x1, x2, x3)) = | 2A | + | -I | · | x1 | + | -I | · | x2 | + | 2A | · | x3 |
POL(U72(x1, x2, x3)) = | 2A | + | 1A | · | x1 | + | -I | · | x2 | + | 2A | · | x3 |
POL(U61(x1)) = | 2A | + | -I | · | x1 |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
active(U11(tt, V2)) → mark(U12(isNat(V2)))
mark(U12(X)) → active(U12(mark(X)))
active(U31(tt, V2)) → mark(U32(isNat(V2)))
mark(isNat(X)) → active(isNat(X))
active(U41(tt, N)) → mark(N)
mark(U21(X)) → active(U21(mark(X)))
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
mark(U32(X)) → active(U32(mark(X)))
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
mark(s(X)) → active(s(mark(X)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
active(plus(N, 0)) → mark(U41(isNat(N), N))
mark(U61(X)) → active(U61(mark(X)))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
active(x(N, 0)) → mark(U61(isNat(N)))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
mark(tt) → active(tt)
mark(0) → active(0)
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U32(tt)) → mark(tt)
active(U61(tt)) → mark(0)
active(isNat(0)) → mark(tt)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
plus(X1, mark(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
s(active(X)) → s(X)
s(mark(X)) → s(X)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U41(X1, mark(X2)) → U41(X1, X2)
U41(mark(X1), X2) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U61(active(X)) → U61(X)
U61(mark(X)) → U61(X)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
(114) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
MARK(U12(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U21(X)) → MARK(X)
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(115) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(U12(X)) → MARK(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]:
POL(MARK(x1)) = | 4A | + | 2A | · | x1 |
POL(U11(x1, x2)) = | 4A | + | 0A | · | x1 | + | 1A | · | x2 |
POL(ACTIVE(x1)) = | 5A | + | 2A | · | x1 |
POL(mark(x1)) = | 4A | + | 0A | · | x1 |
POL(U12(x1)) = | 5A | + | 1A | · | x1 |
POL(isNat(x1)) = | 3A | + | 0A | · | x1 |
POL(U21(x1)) = | 5A | + | 0A | · | x1 |
POL(plus(x1, x2)) = | 5A | + | 0A | · | x1 | + | 1A | · | x2 |
POL(active(x1)) = | 1A | + | 0A | · | x1 |
POL(U31(x1, x2)) = | 4A | + | 0A | · | x1 | + | 1A | · | x2 |
POL(U32(x1)) = | 5A | + | 0A | · | x1 |
POL(U41(x1, x2)) = | 5A | + | 0A | · | x1 | + | 0A | · | x2 |
POL(U51(x1, x2, x3)) = | 5A | + | 1A | · | x1 | + | 1A | · | x2 | + | 0A | · | x3 |
POL(U52(x1, x2, x3)) = | 5A | + | -I | · | x1 | + | 1A | · | x2 | + | 0A | · | x3 |
POL(U71(x1, x2, x3)) = | 5A | + | -I | · | x1 | + | 1A | · | x2 | + | 1A | · | x3 |
POL(U72(x1, x2, x3)) = | 5A | + | -I | · | x1 | + | 1A | · | x2 | + | 1A | · | x3 |
POL(x(x1, x2)) = | 5A | + | 1A | · | x1 | + | 1A | · | x2 |
POL(U61(x1)) = | 5A | + | 0A | · | x1 |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
active(U11(tt, V2)) → mark(U12(isNat(V2)))
mark(U12(X)) → active(U12(mark(X)))
active(U31(tt, V2)) → mark(U32(isNat(V2)))
mark(isNat(X)) → active(isNat(X))
active(U41(tt, N)) → mark(N)
mark(U21(X)) → active(U21(mark(X)))
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
mark(U32(X)) → active(U32(mark(X)))
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
mark(s(X)) → active(s(mark(X)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
active(plus(N, 0)) → mark(U41(isNat(N), N))
mark(U61(X)) → active(U61(mark(X)))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
active(x(N, 0)) → mark(U61(isNat(N)))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
mark(tt) → active(tt)
mark(0) → active(0)
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U32(tt)) → mark(tt)
active(U61(tt)) → mark(0)
active(isNat(0)) → mark(tt)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
s(active(X)) → s(X)
s(mark(X)) → s(X)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U41(X1, mark(X2)) → U41(X1, X2)
U41(mark(X1), X2) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U61(active(X)) → U61(X)
U61(mark(X)) → U61(X)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
(116) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U21(X)) → MARK(X)
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(117) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
ACTIVE(U11(tt, V2)) → MARK(U12(isNat(V2)))
The remaining pairs can at least be oriented weakly.
Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]:
POL(MARK(x1)) = | 4A | + | 2A | · | x1 |
POL(U11(x1, x2)) = | 3A | + | 0A | · | x1 | + | -I | · | x2 |
POL(ACTIVE(x1)) = | 5A | + | 0A | · | x1 |
POL(mark(x1)) = | 5A | + | 0A | · | x1 |
POL(U12(x1)) = | 2A | + | -I | · | x1 |
POL(isNat(x1)) = | 3A | + | -I | · | x1 |
POL(U21(x1)) = | 3A | + | 0A | · | x1 |
POL(plus(x1, x2)) = | 4A | + | 0A | · | x1 | + | -I | · | x2 |
POL(active(x1)) = | 5A | + | 0A | · | x1 |
POL(U31(x1, x2)) = | 5A | + | -I | · | x1 | + | -I | · | x2 |
POL(U32(x1)) = | 5A | + | -I | · | x1 |
POL(U41(x1, x2)) = | 5A | + | -I | · | x1 | + | 0A | · | x2 |
POL(U51(x1, x2, x3)) = | 4A | + | -I | · | x1 | + | -I | · | x2 | + | 0A | · | x3 |
POL(U52(x1, x2, x3)) = | 5A | + | 0A | · | x1 | + | -I | · | x2 | + | 0A | · | x3 |
POL(U71(x1, x2, x3)) = | -I | + | -I | · | x1 | + | -I | · | x2 | + | 0A | · | x3 |
POL(U72(x1, x2, x3)) = | 4A | + | 0A | · | x1 | + | -I | · | x2 | + | 0A | · | x3 |
POL(x(x1, x2)) = | 1A | + | 0A | · | x1 | + | -I | · | x2 |
POL(U61(x1)) = | 0A | + | -I | · | x1 |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
active(U11(tt, V2)) → mark(U12(isNat(V2)))
mark(U12(X)) → active(U12(mark(X)))
active(U31(tt, V2)) → mark(U32(isNat(V2)))
mark(isNat(X)) → active(isNat(X))
active(U41(tt, N)) → mark(N)
mark(U21(X)) → active(U21(mark(X)))
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
mark(U32(X)) → active(U32(mark(X)))
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
mark(s(X)) → active(s(mark(X)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
active(plus(N, 0)) → mark(U41(isNat(N), N))
mark(U61(X)) → active(U61(mark(X)))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
active(x(N, 0)) → mark(U61(isNat(N)))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
mark(tt) → active(tt)
mark(0) → active(0)
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U12(active(X)) → U12(X)
U12(mark(X)) → U12(X)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U32(tt)) → mark(tt)
active(U61(tt)) → mark(0)
active(isNat(0)) → mark(tt)
U32(active(X)) → U32(X)
U32(mark(X)) → U32(X)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
U31(X1, mark(X2)) → U31(X1, X2)
U31(mark(X1), X2) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(mark(X1), X2) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
s(active(X)) → s(X)
s(mark(X)) → s(X)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
U41(X1, mark(X2)) → U41(X1, X2)
U41(mark(X1), X2) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(mark(X1), X2) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U61(active(X)) → U61(X)
U61(mark(X)) → U61(X)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
(118) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U21(X)) → MARK(X)
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(119) QDPOrderProof (EQUIVALENT transformation)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation:
POL( ACTIVE(x1) ) = max{0, 2x1 - 2} |
POL( U11(x1, x2) ) = max{0, -1} |
POL( mark(x1) ) = 2x1 + 1 |
POL( U31(x1, x2) ) = x1 + x2 + 1 |
POL( U41(x1, x2) ) = max{0, x2 - 1} |
POL( U51(x1, ..., x3) ) = 0 |
POL( U52(x1, ..., x3) ) = 0 |
POL( s(x1) ) = max{0, 2x1 - 2} |
POL( plus(x1, x2) ) = max{0, x1 - 2} |
POL( U71(x1, ..., x3) ) = 0 |
POL( U72(x1, ..., x3) ) = max{0, -1} |
POL( x(x1, x2) ) = max{0, -2} |
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
(120) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U21(X)) → MARK(X)
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
The TRS R consists of the following rules:
active(U11(tt, V2)) → mark(U12(isNat(V2)))
active(U12(tt)) → mark(tt)
active(U21(tt)) → mark(tt)
active(U31(tt, V2)) → mark(U32(isNat(V2)))
active(U32(tt)) → mark(tt)
active(U41(tt, N)) → mark(N)
active(U51(tt, M, N)) → mark(U52(isNat(N), M, N))
active(U52(tt, M, N)) → mark(s(plus(N, M)))
active(U61(tt)) → mark(0)
active(U71(tt, M, N)) → mark(U72(isNat(N), M, N))
active(U72(tt, M, N)) → mark(plus(x(N, M), N))
active(isNat(0)) → mark(tt)
active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2))
active(isNat(s(V1))) → mark(U21(isNat(V1)))
active(isNat(x(V1, V2))) → mark(U31(isNat(V1), V2))
active(plus(N, 0)) → mark(U41(isNat(N), N))
active(plus(N, s(M))) → mark(U51(isNat(M), M, N))
active(x(N, 0)) → mark(U61(isNat(N)))
active(x(N, s(M))) → mark(U71(isNat(M), M, N))
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U21(X)) → active(U21(mark(X)))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2)) → active(U41(mark(X1), X2))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2, X3)) → active(U52(mark(X1), X2, X3))
mark(s(X)) → active(s(mark(X)))
mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2)))
mark(U61(X)) → active(U61(mark(X)))
mark(0) → active(0)
mark(U71(X1, X2, X3)) → active(U71(mark(X1), X2, X3))
mark(U72(X1, X2, X3)) → active(U72(mark(X1), X2, X3))
mark(x(X1, X2)) → active(x(mark(X1), mark(X2)))
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U21(mark(X)) → U21(X)
U21(active(X)) → U21(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2) → U41(X1, X2)
U41(X1, mark(X2)) → U41(X1, X2)
U41(active(X1), X2) → U41(X1, X2)
U41(X1, active(X2)) → U41(X1, X2)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, mark(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, mark(X3)) → U52(X1, X2, X3)
U52(active(X1), X2, X3) → U52(X1, X2, X3)
U52(X1, active(X2), X3) → U52(X1, X2, X3)
U52(X1, X2, active(X3)) → U52(X1, X2, X3)
s(mark(X)) → s(X)
s(active(X)) → s(X)
plus(mark(X1), X2) → plus(X1, X2)
plus(X1, mark(X2)) → plus(X1, X2)
plus(active(X1), X2) → plus(X1, X2)
plus(X1, active(X2)) → plus(X1, X2)
U61(mark(X)) → U61(X)
U61(active(X)) → U61(X)
U71(mark(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, mark(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, mark(X3)) → U71(X1, X2, X3)
U71(active(X1), X2, X3) → U71(X1, X2, X3)
U71(X1, active(X2), X3) → U71(X1, X2, X3)
U71(X1, X2, active(X3)) → U71(X1, X2, X3)
U72(mark(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, mark(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, mark(X3)) → U72(X1, X2, X3)
U72(active(X1), X2, X3) → U72(X1, X2, X3)
U72(X1, active(X2), X3) → U72(X1, X2, X3)
U72(X1, X2, active(X3)) → U72(X1, X2, X3)
x(mark(X1), X2) → x(X1, X2)
x(X1, mark(X2)) → x(X1, X2)
x(active(X1), X2) → x(X1, X2)
x(X1, active(X2)) → x(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(121) UsableRulesProof (EQUIVALENT transformation)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
(122) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U21(X)) → MARK(X)
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
The TRS R consists of the following rules:
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(123) UsableRulesReductionPairsProof (EQUIVALENT transformation)
By using the usable rules with reduction pair processor [LPAR04] with a polynomial ordering [POLO], all dependency pairs and the corresponding usable rules [FROCOS05] can be oriented non-strictly. All non-usable rules are removed, and those dependency pairs and usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well.
The following dependency pairs can be deleted:
ACTIVE(isNat(plus(V1, V2))) → MARK(U11(isNat(V1), V2))
ACTIVE(isNat(s(V1))) → MARK(U21(isNat(V1)))
The following rules are removed from R:
isNat(active(X)) → isNat(X)
isNat(mark(X)) → isNat(X)
U21(active(X)) → U21(X)
U21(mark(X)) → U21(X)
U11(X1, mark(X2)) → U11(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
Used ordering: POLO with Polynomial interpretation [POLO]:
POL(ACTIVE(x1)) = 2 + x1
POL(MARK(x1)) = 2 + x1
POL(U11(x1, x2)) = 2·x1 + 2·x2
POL(U21(x1)) = x1
POL(active(x1)) = x1
POL(isNat(x1)) = 2·x1
POL(mark(x1)) = x1
POL(plus(x1, x2)) = 1 + 2·x1 + 2·x2
POL(s(x1)) = 2·x1
(124) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U11(X1, X2)) → MARK(X1)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U21(X)) → MARK(X)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(125) DependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.
(126) Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(U21(X)) → MARK(X)
MARK(U11(X1, X2)) → MARK(X1)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(127) QDPSizeChangeProof (EQUIVALENT transformation)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
- MARK(U21(X)) → MARK(X)
The graph contains the following edges 1 > 1
- MARK(U11(X1, X2)) → MARK(X1)
The graph contains the following edges 1 > 1
(128) YES