TIMEOUT
The TRS could not be proven terminating. The proof attempt took 60002 ms.
Problem 1 was processed with processor DependencyGraph (6942ms). | Problem 2 was processed with processor SubtermCriterion (1ms). | | Problem 12 was processed with processor ReductionPairSAT (79ms). | | | Problem 19 was processed with processor ReductionPairSAT (70ms). | Problem 3 was processed with processor SubtermCriterion (3ms). | | Problem 13 was processed with processor ReductionPairSAT (52ms). | | | Problem 20 was processed with processor ReductionPairSAT (112ms). | Problem 4 was processed with processor SubtermCriterion (1ms). | | Problem 14 was processed with processor ReductionPairSAT (387ms). | | | Problem 21 was processed with processor ReductionPairSAT (297ms). | | | | Problem 24 remains open; application of the following processors failed [DependencyGraph (4ms)]. | Problem 5 was processed with processor SubtermCriterion (1ms). | Problem 6 was processed with processor SubtermCriterion (1ms). | | Problem 15 was processed with processor ReductionPairSAT (408ms). | | | Problem 22 was processed with processor ReductionPairSAT (264ms). | | | | Problem 25 remains open; application of the following processors failed [DependencyGraph (3ms)]. | Problem 7 was processed with processor SubtermCriterion (1ms). | | Problem 16 was processed with processor PolynomialLinearRange4iUR (70ms). | | | Problem 17 was processed with processor PolynomialLinearRange4iUR (60ms). | Problem 8 was processed with processor SubtermCriterion (4ms). | Problem 9 was processed with processor SubtermCriterion (1ms). | Problem 10 was processed with processor ReductionPairSAT (14450ms). | | Problem 18 was processed with processor ReductionPairSAT (13111ms). | | | Problem 23 remains open; application of the following processors failed [DependencyGraph (733ms), ReductionPairSAT (timeout)]. | Problem 11 was processed with processor SubtermCriterion (1ms).
mark#(U11(X1, X2)) | → | mark#(X1) | mark#(isNat(X)) | → | active#(isNat(X)) | |
mark#(U21(X)) | → | active#(U21(mark(X))) | active#(U21(tt)) | → | mark#(tt) | |
mark#(U21(X)) | → | mark#(X) | mark#(U42(X1, X2, X3)) | → | active#(U42(mark(X1), X2, X3)) | |
mark#(plus(X1, X2)) | → | mark#(X2) | active#(plus(N, s(M))) | → | mark#(U41(isNat(M), M, N)) | |
mark#(U31(X1, X2)) | → | mark#(X1) | mark#(s(X)) | → | mark#(X) | |
active#(isNat(plus(V1, V2))) | → | mark#(U11(isNat(V1), V2)) | mark#(U11(X1, X2)) | → | active#(U11(mark(X1), X2)) | |
mark#(U31(X1, X2)) | → | active#(U31(mark(X1), X2)) | active#(U41(tt, M, N)) | → | mark#(U42(isNat(N), M, N)) | |
mark#(U12(X)) | → | mark#(X) | mark#(plus(X1, X2)) | → | active#(plus(mark(X1), mark(X2))) | |
mark#(s(X)) | → | active#(s(mark(X))) | active#(U11(tt, V2)) | → | mark#(U12(isNat(V2))) | |
active#(isNat(0)) | → | mark#(tt) | active#(plus(N, 0)) | → | mark#(U31(isNat(N), N)) | |
mark#(U42(X1, X2, X3)) | → | mark#(X1) | active#(isNat(s(V1))) | → | mark#(U21(isNat(V1))) | |
mark#(U12(X)) | → | active#(U12(mark(X))) | mark#(plus(X1, X2)) | → | mark#(X1) | |
active#(U12(tt)) | → | mark#(tt) | mark#(U41(X1, X2, X3)) | → | mark#(X1) | |
mark#(U41(X1, X2, X3)) | → | active#(U41(mark(X1), X2, X3)) | active#(U31(tt, N)) | → | mark#(N) | |
active#(U42(tt, M, N)) | → | mark#(s(plus(N, M))) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
U42#(X1, X2, active(X3)) | → | U42#(X1, X2, X3) | U42#(X1, X2, mark(X3)) | → | U42#(X1, X2, X3) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
U41#(X1, X2, active(X3)) | → | U41#(X1, X2, X3) | U41#(X1, mark(X2), X3) | → | U41#(X1, X2, X3) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
U42#(X1, X2, active(X3)) | → | U42#(X1, X2, X3) | mark#(U11(X1, X2)) | → | mark#(X1) | |
active#(U41(tt, M, N)) | → | isNat#(N) | mark#(U21(X)) | → | active#(U21(mark(X))) | |
active#(U21(tt)) | → | mark#(tt) | U11#(mark(X1), X2) | → | U11#(X1, X2) | |
active#(plus(N, 0)) | → | U31#(isNat(N), N) | U12#(mark(X)) | → | U12#(X) | |
mark#(s(X)) | → | s#(mark(X)) | active#(plus(N, s(M))) | → | mark#(U41(isNat(M), M, N)) | |
active#(U41(tt, M, N)) | → | U42#(isNat(N), M, N) | plus#(X1, mark(X2)) | → | plus#(X1, X2) | |
U31#(active(X1), X2) | → | U31#(X1, X2) | active#(plus(N, s(M))) | → | U41#(isNat(M), M, N) | |
mark#(U31(X1, X2)) | → | mark#(X1) | isNat#(active(X)) | → | isNat#(X) | |
mark#(s(X)) | → | mark#(X) | mark#(U11(X1, X2)) | → | active#(U11(mark(X1), X2)) | |
active#(plus(N, 0)) | → | isNat#(N) | active#(U41(tt, M, N)) | → | mark#(U42(isNat(N), M, N)) | |
mark#(plus(X1, X2)) | → | active#(plus(mark(X1), mark(X2))) | mark#(U12(X)) | → | U12#(mark(X)) | |
U11#(active(X1), X2) | → | U11#(X1, X2) | U42#(mark(X1), X2, X3) | → | U42#(X1, X2, X3) | |
active#(U11(tt, V2)) | → | mark#(U12(isNat(V2))) | U42#(active(X1), X2, X3) | → | U42#(X1, X2, X3) | |
active#(isNat(0)) | → | mark#(tt) | active#(plus(N, 0)) | → | mark#(U31(isNat(N), N)) | |
mark#(U42(X1, X2, X3)) | → | mark#(X1) | U42#(X1, mark(X2), X3) | → | U42#(X1, X2, X3) | |
U42#(X1, active(X2), X3) | → | U42#(X1, X2, X3) | mark#(U12(X)) | → | active#(U12(mark(X))) | |
U11#(X1, mark(X2)) | → | U11#(X1, X2) | mark#(plus(X1, X2)) | → | mark#(X1) | |
active#(U11(tt, V2)) | → | U12#(isNat(V2)) | U11#(X1, active(X2)) | → | U11#(X1, X2) | |
active#(U12(tt)) | → | mark#(tt) | U41#(X1, active(X2), X3) | → | U41#(X1, X2, X3) | |
mark#(U41(X1, X2, X3)) | → | mark#(X1) | mark#(U42(X1, X2, X3)) | → | U42#(mark(X1), X2, X3) | |
U12#(active(X)) | → | U12#(X) | U41#(active(X1), X2, X3) | → | U41#(X1, X2, X3) | |
plus#(X1, active(X2)) | → | plus#(X1, X2) | plus#(mark(X1), X2) | → | plus#(X1, X2) | |
plus#(active(X1), X2) | → | plus#(X1, X2) | active#(U42(tt, M, N)) | → | mark#(s(plus(N, M))) | |
mark#(U41(X1, X2, X3)) | → | U41#(mark(X1), X2, X3) | mark#(isNat(X)) | → | active#(isNat(X)) | |
mark#(tt) | → | active#(tt) | U31#(X1, active(X2)) | → | U31#(X1, X2) | |
mark#(isNat(X)) | → | isNat#(X) | active#(U42(tt, M, N)) | → | s#(plus(N, M)) | |
active#(isNat(plus(V1, V2))) | → | isNat#(V1) | isNat#(mark(X)) | → | isNat#(X) | |
U31#(X1, mark(X2)) | → | U31#(X1, X2) | mark#(U21(X)) | → | mark#(X) | |
mark#(U42(X1, X2, X3)) | → | active#(U42(mark(X1), X2, X3)) | mark#(plus(X1, X2)) | → | mark#(X2) | |
mark#(U11(X1, X2)) | → | U11#(mark(X1), X2) | U41#(mark(X1), X2, X3) | → | U41#(X1, X2, X3) | |
active#(isNat(plus(V1, V2))) | → | mark#(U11(isNat(V1), V2)) | U41#(X1, X2, active(X3)) | → | U41#(X1, X2, X3) | |
mark#(U31(X1, X2)) | → | active#(U31(mark(X1), X2)) | active#(isNat(s(V1))) | → | isNat#(V1) | |
mark#(U12(X)) | → | mark#(X) | mark#(0) | → | active#(0) | |
mark#(s(X)) | → | active#(s(mark(X))) | active#(U11(tt, V2)) | → | isNat#(V2) | |
U41#(X1, X2, mark(X3)) | → | U41#(X1, X2, X3) | U21#(mark(X)) | → | U21#(X) | |
active#(isNat(s(V1))) | → | U21#(isNat(V1)) | U21#(active(X)) | → | U21#(X) | |
mark#(plus(X1, X2)) | → | plus#(mark(X1), mark(X2)) | U41#(X1, mark(X2), X3) | → | U41#(X1, X2, X3) | |
active#(isNat(s(V1))) | → | mark#(U21(isNat(V1))) | U31#(mark(X1), X2) | → | U31#(X1, X2) | |
active#(U42(tt, M, N)) | → | plus#(N, M) | s#(mark(X)) | → | s#(X) | |
active#(isNat(plus(V1, V2))) | → | U11#(isNat(V1), V2) | mark#(U31(X1, X2)) | → | U31#(mark(X1), X2) | |
active#(plus(N, s(M))) | → | isNat#(M) | mark#(U41(X1, X2, X3)) | → | active#(U41(mark(X1), X2, X3)) | |
s#(active(X)) | → | s#(X) | active#(U31(tt, N)) | → | mark#(N) | |
U42#(X1, X2, mark(X3)) | → | U42#(X1, X2, X3) | mark#(U21(X)) | → | U21#(mark(X)) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
U11#(X1, active(X2)) → U11#(X1, X2) | U11#(active(X1), X2) → U11#(X1, X2) |
U11#(mark(X1), X2) → U11#(X1, X2) | U11#(X1, mark(X2)) → U11#(X1, X2) |
U42#(X1, X2, active(X3)) → U42#(X1, X2, X3) | U42#(mark(X1), X2, X3) → U42#(X1, X2, X3) |
U42#(active(X1), X2, X3) → U42#(X1, X2, X3) | U42#(X1, mark(X2), X3) → U42#(X1, X2, X3) |
U42#(X1, X2, mark(X3)) → U42#(X1, X2, X3) | U42#(X1, active(X2), X3) → U42#(X1, X2, X3) |
U12#(active(X)) → U12#(X) | U12#(mark(X)) → U12#(X) |
s#(mark(X)) → s#(X) | s#(active(X)) → s#(X) |
U21#(mark(X)) → U21#(X) | U21#(active(X)) → U21#(X) |
isNat#(active(X)) → isNat#(X) | isNat#(mark(X)) → isNat#(X) |
U41#(X1, active(X2), X3) → U41#(X1, X2, X3) | U41#(X1, X2, mark(X3)) → U41#(X1, X2, X3) |
U41#(active(X1), X2, X3) → U41#(X1, X2, X3) | U41#(mark(X1), X2, X3) → U41#(X1, X2, X3) |
U41#(X1, X2, active(X3)) → U41#(X1, X2, X3) | U41#(X1, mark(X2), X3) → U41#(X1, X2, X3) |
plus#(X1, mark(X2)) → plus#(X1, X2) | plus#(X1, active(X2)) → plus#(X1, X2) |
plus#(mark(X1), X2) → plus#(X1, X2) | plus#(active(X1), X2) → plus#(X1, X2) |
U31#(active(X1), X2) → U31#(X1, X2) | U31#(X1, active(X2)) → U31#(X1, X2) |
U31#(X1, mark(X2)) → U31#(X1, X2) | U31#(mark(X1), X2) → U31#(X1, X2) |
mark#(U11(X1, X2)) → mark#(X1) | mark#(isNat(X)) → active#(isNat(X)) |
mark#(U21(X)) → active#(U21(mark(X))) | active#(U21(tt)) → mark#(tt) |
mark#(tt) → active#(tt) | mark#(U21(X)) → mark#(X) |
mark#(U42(X1, X2, X3)) → active#(U42(mark(X1), X2, X3)) | mark#(plus(X1, X2)) → mark#(X2) |
active#(plus(N, s(M))) → mark#(U41(isNat(M), M, N)) | mark#(U31(X1, X2)) → mark#(X1) |
mark#(s(X)) → mark#(X) | mark#(U11(X1, X2)) → active#(U11(mark(X1), X2)) |
active#(isNat(plus(V1, V2))) → mark#(U11(isNat(V1), V2)) | mark#(U31(X1, X2)) → active#(U31(mark(X1), X2)) |
active#(U41(tt, M, N)) → mark#(U42(isNat(N), M, N)) | mark#(0) → active#(0) |
mark#(plus(X1, X2)) → active#(plus(mark(X1), mark(X2))) | mark#(U12(X)) → mark#(X) |
mark#(s(X)) → active#(s(mark(X))) | active#(U11(tt, V2)) → mark#(U12(isNat(V2))) |
active#(isNat(0)) → mark#(tt) | active#(plus(N, 0)) → mark#(U31(isNat(N), N)) |
mark#(U42(X1, X2, X3)) → mark#(X1) | active#(isNat(s(V1))) → mark#(U21(isNat(V1))) |
mark#(U12(X)) → active#(U12(mark(X))) | mark#(plus(X1, X2)) → mark#(X1) |
active#(U12(tt)) → mark#(tt) | mark#(U41(X1, X2, X3)) → mark#(X1) |
mark#(U41(X1, X2, X3)) → active#(U41(mark(X1), X2, X3)) | active#(U31(tt, N)) → mark#(N) |
active#(U42(tt, M, N)) → mark#(s(plus(N, M))) |
plus#(X1, mark(X2)) | → | plus#(X1, X2) | plus#(X1, active(X2)) | → | plus#(X1, X2) | |
plus#(mark(X1), X2) | → | plus#(X1, X2) | plus#(active(X1), X2) | → | plus#(X1, X2) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
The following projection was used:
Thus, the following dependency pairs are removed:
plus#(mark(X1), X2) | → | plus#(X1, X2) | plus#(active(X1), X2) | → | plus#(X1, X2) |
plus#(X1, active(X2)) | → | plus#(X1, X2) | plus#(X1, mark(X2)) | → | plus#(X1, X2) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
plus: all arguments are removed from plus
mark: 1
isNat: collapses to 1
0: all arguments are removed from 0
s: all arguments are removed from s
U42: all arguments are removed from U42
tt: all arguments are removed from tt
U41: all arguments are removed from U41
U11: 1 2
plus#: collapses to 2
active: collapses to 1
U12: all arguments are removed from U12
U31: all arguments are removed from U31
U21: 1
There are no usable rules.
The dependency pairs and usable rules are stronlgy conservative!
The following dependency pairs (at least) can be eliminated according to the given precedence.
plus#(X1, mark(X2)) → plus#(X1, X2) |
plus#(X1, active(X2)) | → | plus#(X1, X2) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
plus: all arguments are removed from plus
mark: all arguments are removed from mark
isNat: all arguments are removed from isNat
0: all arguments are removed from 0
s: all arguments are removed from s
U42: all arguments are removed from U42
tt: all arguments are removed from tt
U41: all arguments are removed from U41
U11: all arguments are removed from U11
plus#: 1 2
active: 1
U12: all arguments are removed from U12
U31: 1 2
U21: all arguments are removed from U21
There are no usable rules.
The dependency pairs and usable rules are stronlgy conservative!
The following dependency pairs (at least) can be eliminated according to the given precedence.
plus#(X1, active(X2)) → plus#(X1, X2) |
U31#(active(X1), X2) | → | U31#(X1, X2) | U31#(X1, active(X2)) | → | U31#(X1, X2) | |
U31#(X1, mark(X2)) | → | U31#(X1, X2) | U31#(mark(X1), X2) | → | U31#(X1, X2) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
The following projection was used:
Thus, the following dependency pairs are removed:
U31#(active(X1), X2) | → | U31#(X1, X2) | U31#(mark(X1), X2) | → | U31#(X1, X2) |
U31#(X1, active(X2)) | → | U31#(X1, X2) | U31#(X1, mark(X2)) | → | U31#(X1, X2) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
plus: all arguments are removed from plus
U31#: collapses to 2
mark: collapses to 1
isNat: all arguments are removed from isNat
0: all arguments are removed from 0
s: all arguments are removed from s
U42: all arguments are removed from U42
tt: all arguments are removed from tt
U41: all arguments are removed from U41
U11: 1 2
active: 1
U12: all arguments are removed from U12
U31: all arguments are removed from U31
U21: all arguments are removed from U21
There are no usable rules.
The dependency pairs and usable rules are stronlgy conservative!
The following dependency pairs (at least) can be eliminated according to the given precedence.
U31#(X1, active(X2)) → U31#(X1, X2) |
U31#(X1, mark(X2)) | → | U31#(X1, X2) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
plus: all arguments are removed from plus
U31#: collapses to 2
mark: 1
isNat: all arguments are removed from isNat
0: all arguments are removed from 0
s: collapses to 1
U42: collapses to 3
tt: all arguments are removed from tt
U41: all arguments are removed from U41
U11: all arguments are removed from U11
active: all arguments are removed from active
U12: 1
U31: 1 2
U21: all arguments are removed from U21
There are no usable rules.
The dependency pairs and usable rules are stronlgy conservative!
The following dependency pairs (at least) can be eliminated according to the given precedence.
U31#(X1, mark(X2)) → U31#(X1, X2) |
U41#(X1, active(X2), X3) | → | U41#(X1, X2, X3) | U41#(X1, X2, mark(X3)) | → | U41#(X1, X2, X3) | |
U41#(active(X1), X2, X3) | → | U41#(X1, X2, X3) | U41#(mark(X1), X2, X3) | → | U41#(X1, X2, X3) | |
U41#(X1, X2, active(X3)) | → | U41#(X1, X2, X3) | U41#(X1, mark(X2), X3) | → | U41#(X1, X2, X3) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
The following projection was used:
Thus, the following dependency pairs are removed:
U41#(active(X1), X2, X3) | → | U41#(X1, X2, X3) | U41#(mark(X1), X2, X3) | → | U41#(X1, X2, X3) |
U41#(X1, active(X2), X3) | → | U41#(X1, X2, X3) | U41#(X1, X2, mark(X3)) | → | U41#(X1, X2, X3) | |
U41#(X1, mark(X2), X3) | → | U41#(X1, X2, X3) | U41#(X1, X2, active(X3)) | → | U41#(X1, X2, X3) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
plus: all arguments are removed from plus
mark: 1
isNat: 1
U41#: 1 3
0: all arguments are removed from 0
s: all arguments are removed from s
U42: 1 2 3
tt: all arguments are removed from tt
U41: 2 3
U11: 1
active: collapses to 1
U12: collapses to 1
U31: all arguments are removed from U31
U21: collapses to 1
There are no usable rules.
The dependency pairs and usable rules are stronlgy conservative!
The following dependency pairs (at least) can be eliminated according to the given precedence.
U41#(X1, X2, mark(X3)) → U41#(X1, X2, X3) |
U41#(X1, active(X2), X3) | → | U41#(X1, X2, X3) | U41#(X1, X2, active(X3)) | → | U41#(X1, X2, X3) | |
U41#(X1, mark(X2), X3) | → | U41#(X1, X2, X3) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
plus: 1
mark: 1
isNat: all arguments are removed from isNat
U41#: collapses to 2
0: all arguments are removed from 0
s: collapses to 1
U42: all arguments are removed from U42
tt: all arguments are removed from tt
U41: all arguments are removed from U41
U11: all arguments are removed from U11
active: 1
U12: 1
U31: 1 2
U21: all arguments are removed from U21
There are no usable rules.
The dependency pairs and usable rules are stronlgy conservative!
The following dependency pairs (at least) can be eliminated according to the given precedence.
U41#(X1, active(X2), X3) → U41#(X1, X2, X3) |
U21#(mark(X)) | → | U21#(X) | U21#(active(X)) | → | U21#(X) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
The following projection was used:
Thus, the following dependency pairs are removed:
U21#(mark(X)) | → | U21#(X) | U21#(active(X)) | → | U21#(X) |
U42#(X1, X2, active(X3)) | → | U42#(X1, X2, X3) | U42#(mark(X1), X2, X3) | → | U42#(X1, X2, X3) | |
U42#(active(X1), X2, X3) | → | U42#(X1, X2, X3) | U42#(X1, mark(X2), X3) | → | U42#(X1, X2, X3) | |
U42#(X1, X2, mark(X3)) | → | U42#(X1, X2, X3) | U42#(X1, active(X2), X3) | → | U42#(X1, X2, X3) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
The following projection was used:
Thus, the following dependency pairs are removed:
U42#(mark(X1), X2, X3) | → | U42#(X1, X2, X3) | U42#(active(X1), X2, X3) | → | U42#(X1, X2, X3) |
U42#(X1, X2, active(X3)) | → | U42#(X1, X2, X3) | U42#(X1, mark(X2), X3) | → | U42#(X1, X2, X3) | |
U42#(X1, X2, mark(X3)) | → | U42#(X1, X2, X3) | U42#(X1, active(X2), X3) | → | U42#(X1, X2, X3) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
plus: all arguments are removed from plus
mark: collapses to 1
isNat: collapses to 1
U42#: collapses to 2
0: all arguments are removed from 0
s: collapses to 1
U42: collapses to 2
tt: all arguments are removed from tt
U41: 1 2 3
U11: all arguments are removed from U11
active: 1
U12: collapses to 1
U31: 1 2
U21: collapses to 1
There are no usable rules.
The dependency pairs and usable rules are stronlgy conservative!
The following dependency pairs (at least) can be eliminated according to the given precedence.
U42#(X1, active(X2), X3) → U42#(X1, X2, X3) |
U42#(X1, X2, active(X3)) | → | U42#(X1, X2, X3) | U42#(X1, mark(X2), X3) | → | U42#(X1, X2, X3) | |
U42#(X1, X2, mark(X3)) | → | U42#(X1, X2, X3) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
plus: 1 2
mark: 1
isNat: all arguments are removed from isNat
U42#: 2
0: all arguments are removed from 0
s: all arguments are removed from s
U42: collapses to 1
tt: all arguments are removed from tt
U41: all arguments are removed from U41
U11: 1 2
active: all arguments are removed from active
U12: 1
U31: all arguments are removed from U31
U21: 1
There are no usable rules.
The dependency pairs and usable rules are stronlgy conservative!
The following dependency pairs (at least) can be eliminated according to the given precedence.
U42#(X1, mark(X2), X3) → U42#(X1, X2, X3) |
U11#(X1, active(X2)) | → | U11#(X1, X2) | U11#(active(X1), X2) | → | U11#(X1, X2) | |
U11#(mark(X1), X2) | → | U11#(X1, X2) | U11#(X1, mark(X2)) | → | U11#(X1, X2) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
The following projection was used:
Thus, the following dependency pairs are removed:
U11#(active(X1), X2) | → | U11#(X1, X2) | U11#(mark(X1), X2) | → | U11#(X1, X2) |
U11#(X1, active(X2)) | → | U11#(X1, X2) | U11#(X1, mark(X2)) | → | U11#(X1, X2) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
U11#(X1, active(X2)) | → | U11#(X1, X2) |
U11#(X1, mark(X2)) | → | U11#(X1, X2) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
U11#(X1, mark(X2)) | → | U11#(X1, X2) |
isNat#(active(X)) | → | isNat#(X) | isNat#(mark(X)) | → | isNat#(X) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
The following projection was used:
Thus, the following dependency pairs are removed:
isNat#(active(X)) | → | isNat#(X) | isNat#(mark(X)) | → | isNat#(X) |
s#(mark(X)) | → | s#(X) | s#(active(X)) | → | s#(X) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
The following projection was used:
Thus, the following dependency pairs are removed:
s#(mark(X)) | → | s#(X) | s#(active(X)) | → | s#(X) |
mark#(U11(X1, X2)) | → | mark#(X1) | mark#(isNat(X)) | → | active#(isNat(X)) | |
mark#(U21(X)) | → | active#(U21(mark(X))) | active#(U21(tt)) | → | mark#(tt) | |
mark#(tt) | → | active#(tt) | mark#(U21(X)) | → | mark#(X) | |
mark#(U42(X1, X2, X3)) | → | active#(U42(mark(X1), X2, X3)) | mark#(plus(X1, X2)) | → | mark#(X2) | |
active#(plus(N, s(M))) | → | mark#(U41(isNat(M), M, N)) | mark#(U31(X1, X2)) | → | mark#(X1) | |
mark#(s(X)) | → | mark#(X) | mark#(U11(X1, X2)) | → | active#(U11(mark(X1), X2)) | |
active#(isNat(plus(V1, V2))) | → | mark#(U11(isNat(V1), V2)) | mark#(U31(X1, X2)) | → | active#(U31(mark(X1), X2)) | |
active#(U41(tt, M, N)) | → | mark#(U42(isNat(N), M, N)) | mark#(U12(X)) | → | mark#(X) | |
mark#(plus(X1, X2)) | → | active#(plus(mark(X1), mark(X2))) | mark#(0) | → | active#(0) | |
mark#(s(X)) | → | active#(s(mark(X))) | active#(U11(tt, V2)) | → | mark#(U12(isNat(V2))) | |
active#(isNat(0)) | → | mark#(tt) | active#(plus(N, 0)) | → | mark#(U31(isNat(N), N)) | |
mark#(U42(X1, X2, X3)) | → | mark#(X1) | active#(isNat(s(V1))) | → | mark#(U21(isNat(V1))) | |
mark#(U12(X)) | → | active#(U12(mark(X))) | mark#(plus(X1, X2)) | → | mark#(X1) | |
active#(U12(tt)) | → | mark#(tt) | mark#(U41(X1, X2, X3)) | → | mark#(X1) | |
mark#(U41(X1, X2, X3)) | → | active#(U41(mark(X1), X2, X3)) | active#(U31(tt, N)) | → | mark#(N) | |
active#(U42(tt, M, N)) | → | mark#(s(plus(N, M))) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
plus: all arguments are removed from plus
mark: all arguments are removed from mark
mark#: all arguments are removed from mark#
isNat: all arguments are removed from isNat
0: all arguments are removed from 0
s: all arguments are removed from s
U42: all arguments are removed from U42
tt: all arguments are removed from tt
U41: all arguments are removed from U41
active: collapses to 1
U11: all arguments are removed from U11
U12: all arguments are removed from U12
U31: all arguments are removed from U31
active#: collapses to 1
U21: all arguments are removed from U21
mark(isNat(X)) → active(isNat(X)) | mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2))) |
active(U21(tt)) → mark(tt) | mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3)) |
plus(mark(X1), X2) → plus(X1, X2) | U11(active(X1), X2) → U11(X1, X2) |
mark(U42(X1, X2, X3)) → active(U42(mark(X1), X2, X3)) | U11(X1, mark(X2)) → U11(X1, X2) |
active(U31(tt, N)) → mark(N) | U21(active(X)) → U21(X) |
plus(X1, active(X2)) → plus(X1, X2) | U41(X1, X2, active(X3)) → U41(X1, X2, X3) |
mark(U11(X1, X2)) → active(U11(mark(X1), X2)) | U41(X1, X2, mark(X3)) → U41(X1, X2, X3) |
isNat(active(X)) → isNat(X) | U21(mark(X)) → U21(X) |
mark(U12(X)) → active(U12(mark(X))) | U41(X1, mark(X2), X3) → U41(X1, X2, X3) |
U41(X1, active(X2), X3) → U41(X1, X2, X3) | mark(U31(X1, X2)) → active(U31(mark(X1), X2)) |
plus(active(X1), X2) → plus(X1, X2) | U12(active(X)) → U12(X) |
U31(X1, active(X2)) → U31(X1, X2) | active(plus(N, s(M))) → mark(U41(isNat(M), M, N)) |
mark(U21(X)) → active(U21(mark(X))) | active(U11(tt, V2)) → mark(U12(isNat(V2))) |
active(U41(tt, M, N)) → mark(U42(isNat(N), M, N)) | U31(mark(X1), X2) → U31(X1, X2) |
mark(s(X)) → active(s(mark(X))) | U42(X1, X2, mark(X3)) → U42(X1, X2, X3) |
U42(X1, active(X2), X3) → U42(X1, X2, X3) | U41(active(X1), X2, X3) → U41(X1, X2, X3) |
U11(X1, active(X2)) → U11(X1, X2) | U42(X1, mark(X2), X3) → U42(X1, X2, X3) |
active(isNat(0)) → mark(tt) | active(plus(N, 0)) → mark(U31(isNat(N), N)) |
mark(0) → active(0) | s(active(X)) → s(X) |
U12(mark(X)) → U12(X) | U11(mark(X1), X2) → U11(X1, X2) |
U42(mark(X1), X2, X3) → U42(X1, X2, X3) | U42(X1, X2, active(X3)) → U42(X1, X2, X3) |
U41(mark(X1), X2, X3) → U41(X1, X2, X3) | plus(X1, mark(X2)) → plus(X1, X2) |
active(U42(tt, M, N)) → mark(s(plus(N, M))) | mark(tt) → active(tt) |
active(U12(tt)) → mark(tt) | active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2)) |
isNat(mark(X)) → isNat(X) | U42(active(X1), X2, X3) → U42(X1, X2, X3) |
U31(X1, mark(X2)) → U31(X1, X2) | s(mark(X)) → s(X) |
active(isNat(s(V1))) → mark(U21(isNat(V1))) | U31(active(X1), X2) → U31(X1, X2) |
The dependency pairs and usable rules are stronlgy conservative!
The following dependency pairs (at least) can be eliminated according to the given precedence.
mark#(0) → active#(0) |
mark#(U11(X1, X2)) | → | mark#(X1) | mark#(isNat(X)) | → | active#(isNat(X)) | |
mark#(U21(X)) | → | active#(U21(mark(X))) | active#(U21(tt)) | → | mark#(tt) | |
mark#(tt) | → | active#(tt) | mark#(U21(X)) | → | mark#(X) | |
mark#(U42(X1, X2, X3)) | → | active#(U42(mark(X1), X2, X3)) | mark#(plus(X1, X2)) | → | mark#(X2) | |
active#(plus(N, s(M))) | → | mark#(U41(isNat(M), M, N)) | mark#(U31(X1, X2)) | → | mark#(X1) | |
mark#(s(X)) | → | mark#(X) | active#(isNat(plus(V1, V2))) | → | mark#(U11(isNat(V1), V2)) | |
mark#(U11(X1, X2)) | → | active#(U11(mark(X1), X2)) | mark#(U31(X1, X2)) | → | active#(U31(mark(X1), X2)) | |
active#(U41(tt, M, N)) | → | mark#(U42(isNat(N), M, N)) | mark#(U12(X)) | → | mark#(X) | |
mark#(plus(X1, X2)) | → | active#(plus(mark(X1), mark(X2))) | mark#(s(X)) | → | active#(s(mark(X))) | |
active#(U11(tt, V2)) | → | mark#(U12(isNat(V2))) | active#(isNat(0)) | → | mark#(tt) | |
active#(plus(N, 0)) | → | mark#(U31(isNat(N), N)) | mark#(U42(X1, X2, X3)) | → | mark#(X1) | |
active#(isNat(s(V1))) | → | mark#(U21(isNat(V1))) | mark#(U12(X)) | → | active#(U12(mark(X))) | |
mark#(plus(X1, X2)) | → | mark#(X1) | active#(U12(tt)) | → | mark#(tt) | |
mark#(U41(X1, X2, X3)) | → | mark#(X1) | mark#(U41(X1, X2, X3)) | → | active#(U41(mark(X1), X2, X3)) | |
active#(U31(tt, N)) | → | mark#(N) | active#(U42(tt, M, N)) | → | mark#(s(plus(N, M))) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
plus: all arguments are removed from plus
mark: all arguments are removed from mark
mark#: all arguments are removed from mark#
isNat: all arguments are removed from isNat
0: all arguments are removed from 0
s: all arguments are removed from s
U42: all arguments are removed from U42
tt: all arguments are removed from tt
U41: all arguments are removed from U41
active: collapses to 1
U11: all arguments are removed from U11
U12: all arguments are removed from U12
U31: all arguments are removed from U31
active#: collapses to 1
U21: all arguments are removed from U21
mark(isNat(X)) → active(isNat(X)) | mark(plus(X1, X2)) → active(plus(mark(X1), mark(X2))) |
active(U21(tt)) → mark(tt) | mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3)) |
plus(mark(X1), X2) → plus(X1, X2) | U11(active(X1), X2) → U11(X1, X2) |
mark(U42(X1, X2, X3)) → active(U42(mark(X1), X2, X3)) | U11(X1, mark(X2)) → U11(X1, X2) |
active(U31(tt, N)) → mark(N) | U21(active(X)) → U21(X) |
plus(X1, active(X2)) → plus(X1, X2) | U41(X1, X2, active(X3)) → U41(X1, X2, X3) |
mark(U11(X1, X2)) → active(U11(mark(X1), X2)) | U41(X1, X2, mark(X3)) → U41(X1, X2, X3) |
isNat(active(X)) → isNat(X) | U21(mark(X)) → U21(X) |
mark(U12(X)) → active(U12(mark(X))) | U41(X1, mark(X2), X3) → U41(X1, X2, X3) |
U41(X1, active(X2), X3) → U41(X1, X2, X3) | mark(U31(X1, X2)) → active(U31(mark(X1), X2)) |
plus(active(X1), X2) → plus(X1, X2) | U12(active(X)) → U12(X) |
U31(X1, active(X2)) → U31(X1, X2) | active(plus(N, s(M))) → mark(U41(isNat(M), M, N)) |
mark(U21(X)) → active(U21(mark(X))) | active(U11(tt, V2)) → mark(U12(isNat(V2))) |
active(U41(tt, M, N)) → mark(U42(isNat(N), M, N)) | U31(mark(X1), X2) → U31(X1, X2) |
mark(s(X)) → active(s(mark(X))) | U42(X1, X2, mark(X3)) → U42(X1, X2, X3) |
U42(X1, active(X2), X3) → U42(X1, X2, X3) | U41(active(X1), X2, X3) → U41(X1, X2, X3) |
U11(X1, active(X2)) → U11(X1, X2) | U42(X1, mark(X2), X3) → U42(X1, X2, X3) |
active(isNat(0)) → mark(tt) | active(plus(N, 0)) → mark(U31(isNat(N), N)) |
mark(0) → active(0) | s(active(X)) → s(X) |
U12(mark(X)) → U12(X) | U11(mark(X1), X2) → U11(X1, X2) |
U42(mark(X1), X2, X3) → U42(X1, X2, X3) | U42(X1, X2, active(X3)) → U42(X1, X2, X3) |
U41(mark(X1), X2, X3) → U41(X1, X2, X3) | plus(X1, mark(X2)) → plus(X1, X2) |
active(U42(tt, M, N)) → mark(s(plus(N, M))) | mark(tt) → active(tt) |
active(U12(tt)) → mark(tt) | active(isNat(plus(V1, V2))) → mark(U11(isNat(V1), V2)) |
isNat(mark(X)) → isNat(X) | U42(active(X1), X2, X3) → U42(X1, X2, X3) |
U31(X1, mark(X2)) → U31(X1, X2) | s(mark(X)) → s(X) |
active(isNat(s(V1))) → mark(U21(isNat(V1))) | U31(active(X1), X2) → U31(X1, X2) |
The dependency pairs and usable rules are stronlgy conservative!
The following dependency pairs (at least) can be eliminated according to the given precedence.
mark#(tt) → active#(tt) |
U12#(active(X)) | → | U12#(X) | U12#(mark(X)) | → | U12#(X) |
active(U11(tt, V2)) | → | mark(U12(isNat(V2))) | active(U12(tt)) | → | mark(tt) | |
active(U21(tt)) | → | mark(tt) | active(U31(tt, N)) | → | mark(N) | |
active(U41(tt, M, N)) | → | mark(U42(isNat(N), M, N)) | active(U42(tt, M, N)) | → | mark(s(plus(N, M))) | |
active(isNat(0)) | → | mark(tt) | active(isNat(plus(V1, V2))) | → | mark(U11(isNat(V1), V2)) | |
active(isNat(s(V1))) | → | mark(U21(isNat(V1))) | active(plus(N, 0)) | → | mark(U31(isNat(N), N)) | |
active(plus(N, s(M))) | → | mark(U41(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(U41(X1, X2, X3)) | → | active(U41(mark(X1), X2, X3)) | |
mark(U42(X1, X2, X3)) | → | active(U42(mark(X1), X2, X3)) | mark(s(X)) | → | active(s(mark(X))) | |
mark(plus(X1, X2)) | → | active(plus(mark(X1), mark(X2))) | mark(0) | → | active(0) | |
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) | |
U41(mark(X1), X2, X3) | → | U41(X1, X2, X3) | U41(X1, mark(X2), X3) | → | U41(X1, X2, X3) | |
U41(X1, X2, mark(X3)) | → | U41(X1, X2, X3) | U41(active(X1), X2, X3) | → | U41(X1, X2, X3) | |
U41(X1, active(X2), X3) | → | U41(X1, X2, X3) | U41(X1, X2, active(X3)) | → | U41(X1, X2, X3) | |
U42(mark(X1), X2, X3) | → | U42(X1, X2, X3) | U42(X1, mark(X2), X3) | → | U42(X1, X2, X3) | |
U42(X1, X2, mark(X3)) | → | U42(X1, X2, X3) | U42(active(X1), X2, X3) | → | U42(X1, X2, X3) | |
U42(X1, active(X2), X3) | → | U42(X1, X2, X3) | U42(X1, X2, active(X3)) | → | U42(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) |
Termination of terms over the following signature is verified: plus, mark, isNat, 0, U42, s, tt, U41, active, U11, U12, U31, U21
The following projection was used:
Thus, the following dependency pairs are removed:
U12#(active(X)) | → | U12#(X) | U12#(mark(X)) | → | U12#(X) |