TIMEOUT
The TRS could not be proven terminating. The proof attempt took 60015 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (7375ms).
| Problem 2 remains open; application of the following processors failed [SubtermCriterion (1ms), DependencyGraph (8ms), PolynomialLinearRange4iUR (3333ms), DependencyGraph (7ms), PolynomialLinearRange4iUR (5019ms), DependencyGraph (6ms), PolynomialLinearRange8NegiUR (15000ms), DependencyGraph (7ms), ReductionPairSAT (18294ms), DependencyGraph (5ms), ReductionPairSAT (timeout)].
| Problem 3 was processed with processor SubtermCriterion (5ms).
| Problem 4 was processed with processor SubtermCriterion (2ms).
| Problem 5 was processed with processor SubtermCriterion (1ms).
| | Problem 14 was processed with processor ReductionPairSAT (102ms).
| Problem 6 was processed with processor SubtermCriterion (2ms).
| Problem 7 was processed with processor SubtermCriterion (1ms).
| Problem 8 was processed with processor SubtermCriterion (3ms).
| Problem 9 was processed with processor SubtermCriterion (1ms).
| Problem 10 was processed with processor SubtermCriterion (1ms).
| Problem 11 was processed with processor SubtermCriterion (2ms).
| | Problem 15 was processed with processor PolynomialLinearRange4iUR (76ms).
| Problem 12 was processed with processor SubtermCriterion (3ms).
| Problem 13 was processed with processor SubtermCriterion (1ms).
The following open problems remain:
Open Dependency Pair Problem 2
Dependency Pairs
| top#(mark(X)) | → | top#(proper(X)) | | top#(ok(X)) | → | top#(active(X)) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, top, x
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| active#(plus(N, s(M))) | → | and#(isNat(M), isNat(N)) | | top#(ok(X)) | → | top#(active(X)) |
| U21#(ok(X1), ok(X2), ok(X3)) | → | U21#(X1, X2, X3) | | proper#(U11(X1, X2)) | → | proper#(X1) |
| active#(isNat(x(V1, V2))) | → | isNat#(V1) | | U11#(ok(X1), ok(X2)) | → | U11#(X1, X2) |
| proper#(U11(X1, X2)) | → | U11#(proper(X1), proper(X2)) | | U11#(mark(X1), X2) | → | U11#(X1, X2) |
| proper#(and(X1, X2)) | → | and#(proper(X1), proper(X2)) | | proper#(U41(X1, X2, X3)) | → | proper#(X2) |
| active#(x(N, 0)) | → | U31#(isNat(N)) | | active#(U21(tt, M, N)) | → | s#(plus(N, M)) |
| active#(isNat(x(V1, V2))) | → | and#(isNat(V1), isNat(V2)) | | proper#(U11(X1, X2)) | → | proper#(X2) |
| active#(U31(X)) | → | U31#(active(X)) | | proper#(and(X1, X2)) | → | proper#(X2) |
| plus#(X1, mark(X2)) | → | plus#(X1, X2) | | active#(U41(tt, M, N)) | → | x#(N, M) |
| proper#(plus(X1, X2)) | → | proper#(X1) | | x#(ok(X1), ok(X2)) | → | x#(X1, X2) |
| x#(X1, mark(X2)) | → | x#(X1, X2) | | active#(plus(N, 0)) | → | isNat#(N) |
| active#(U11(X1, X2)) | → | active#(X1) | | top#(mark(X)) | → | proper#(X) |
| proper#(U41(X1, X2, X3)) | → | U41#(proper(X1), proper(X2), proper(X3)) | | proper#(plus(X1, X2)) | → | plus#(proper(X1), proper(X2)) |
| active#(isNat(plus(V1, V2))) | → | isNat#(V2) | | top#(mark(X)) | → | top#(proper(X)) |
| active#(U31(X)) | → | active#(X) | | active#(isNat(plus(V1, V2))) | → | and#(isNat(V1), isNat(V2)) |
| U21#(mark(X1), X2, X3) | → | U21#(X1, X2, X3) | | isNat#(ok(X)) | → | isNat#(X) |
| active#(U21(X1, X2, X3)) | → | U21#(active(X1), X2, X3) | | and#(mark(X1), X2) | → | and#(X1, X2) |
| active#(x(X1, X2)) | → | x#(X1, active(X2)) | | active#(U21(X1, X2, X3)) | → | active#(X1) |
| active#(U41(X1, X2, X3)) | → | active#(X1) | | proper#(s(X)) | → | proper#(X) |
| active#(plus(X1, X2)) | → | active#(X1) | | active#(plus(X1, X2)) | → | active#(X2) |
| plus#(mark(X1), X2) | → | plus#(X1, X2) | | U31#(mark(X)) | → | U31#(X) |
| active#(x(N, s(M))) | → | and#(isNat(M), isNat(N)) | | active#(plus(N, s(M))) | → | isNat#(N) |
| active#(x(N, 0)) | → | isNat#(N) | | proper#(U41(X1, X2, X3)) | → | proper#(X3) |
| proper#(U31(X)) | → | U31#(proper(X)) | | proper#(U21(X1, X2, X3)) | → | proper#(X3) |
| active#(U41(X1, X2, X3)) | → | U41#(active(X1), X2, X3) | | active#(x(N, s(M))) | → | U41#(and(isNat(M), isNat(N)), M, N) |
| proper#(x(X1, X2)) | → | proper#(X1) | | and#(ok(X1), ok(X2)) | → | and#(X1, X2) |
| active#(x(X1, X2)) | → | x#(active(X1), X2) | | active#(isNat(plus(V1, V2))) | → | isNat#(V1) |
| proper#(and(X1, X2)) | → | proper#(X1) | | top#(ok(X)) | → | active#(X) |
| active#(and(X1, X2)) | → | and#(active(X1), X2) | | active#(isNat(x(V1, V2))) | → | isNat#(V2) |
| x#(mark(X1), X2) | → | x#(X1, X2) | | proper#(U21(X1, X2, X3)) | → | proper#(X1) |
| proper#(U41(X1, X2, X3)) | → | proper#(X1) | | U41#(mark(X1), X2, X3) | → | U41#(X1, X2, X3) |
| active#(U41(tt, M, N)) | → | plus#(x(N, M), N) | | proper#(isNat(X)) | → | isNat#(proper(X)) |
| proper#(plus(X1, X2)) | → | proper#(X2) | | proper#(x(X1, X2)) | → | x#(proper(X1), proper(X2)) |
| active#(isNat(s(V1))) | → | isNat#(V1) | | U41#(ok(X1), ok(X2), ok(X3)) | → | U41#(X1, X2, X3) |
| active#(plus(N, s(M))) | → | U21#(and(isNat(M), isNat(N)), M, N) | | plus#(ok(X1), ok(X2)) | → | plus#(X1, X2) |
| proper#(isNat(X)) | → | proper#(X) | | active#(x(X1, X2)) | → | active#(X1) |
| active#(U11(X1, X2)) | → | U11#(active(X1), X2) | | active#(s(X)) | → | s#(active(X)) |
| proper#(U21(X1, X2, X3)) | → | U21#(proper(X1), proper(X2), proper(X3)) | | U31#(ok(X)) | → | U31#(X) |
| proper#(x(X1, X2)) | → | proper#(X2) | | s#(ok(X)) | → | s#(X) |
| s#(mark(X)) | → | s#(X) | | active#(plus(X1, X2)) | → | plus#(X1, active(X2)) |
| active#(U21(tt, M, N)) | → | plus#(N, M) | | active#(x(N, s(M))) | → | isNat#(M) |
| active#(plus(X1, X2)) | → | plus#(active(X1), X2) | | active#(s(X)) | → | active#(X) |
| active#(plus(N, s(M))) | → | isNat#(M) | | active#(x(N, s(M))) | → | isNat#(N) |
| proper#(s(X)) | → | s#(proper(X)) | | active#(x(X1, X2)) | → | active#(X2) |
| proper#(U21(X1, X2, X3)) | → | proper#(X2) | | active#(and(X1, X2)) | → | active#(X1) |
| active#(plus(N, 0)) | → | U11#(isNat(N), N) | | proper#(U31(X)) | → | proper#(X) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, x, top
Strategy
The following SCCs where found
| plus#(ok(X1), ok(X2)) → plus#(X1, X2) | plus#(X1, mark(X2)) → plus#(X1, X2) |
| plus#(mark(X1), X2) → plus#(X1, X2) |
| active#(plus(X1, X2)) → active#(X1) | active#(U31(X)) → active#(X) |
| active#(s(X)) → active#(X) | active#(x(X1, X2)) → active#(X1) |
| active#(x(X1, X2)) → active#(X2) | active#(plus(X1, X2)) → active#(X2) |
| active#(and(X1, X2)) → active#(X1) | active#(U11(X1, X2)) → active#(X1) |
| active#(U41(X1, X2, X3)) → active#(X1) | active#(U21(X1, X2, X3)) → active#(X1) |
| U21#(ok(X1), ok(X2), ok(X3)) → U21#(X1, X2, X3) | U21#(mark(X1), X2, X3) → U21#(X1, X2, X3) |
| x#(mark(X1), X2) → x#(X1, X2) | x#(ok(X1), ok(X2)) → x#(X1, X2) |
| x#(X1, mark(X2)) → x#(X1, X2) |
| proper#(isNat(X)) → proper#(X) | proper#(U11(X1, X2)) → proper#(X1) |
| proper#(U41(X1, X2, X3)) → proper#(X3) | proper#(U21(X1, X2, X3)) → proper#(X3) |
| proper#(x(X1, X2)) → proper#(X1) | proper#(and(X1, X2)) → proper#(X1) |
| proper#(x(X1, X2)) → proper#(X2) | proper#(U41(X1, X2, X3)) → proper#(X2) |
| proper#(s(X)) → proper#(X) | proper#(U11(X1, X2)) → proper#(X2) |
| proper#(and(X1, X2)) → proper#(X2) | proper#(U21(X1, X2, X3)) → proper#(X1) |
| proper#(U41(X1, X2, X3)) → proper#(X1) | proper#(plus(X1, X2)) → proper#(X1) |
| proper#(U21(X1, X2, X3)) → proper#(X2) | proper#(plus(X1, X2)) → proper#(X2) |
| proper#(U31(X)) → proper#(X) |
| U31#(ok(X)) → U31#(X) | U31#(mark(X)) → U31#(X) |
| U11#(ok(X1), ok(X2)) → U11#(X1, X2) | U11#(mark(X1), X2) → U11#(X1, X2) |
| isNat#(ok(X)) → isNat#(X) |
| and#(ok(X1), ok(X2)) → and#(X1, X2) | and#(mark(X1), X2) → and#(X1, X2) |
| s#(mark(X)) → s#(X) | s#(ok(X)) → s#(X) |
| U41#(mark(X1), X2, X3) → U41#(X1, X2, X3) | U41#(ok(X1), ok(X2), ok(X3)) → U41#(X1, X2, X3) |
| top#(mark(X)) → top#(proper(X)) | top#(ok(X)) → top#(active(X)) |
Problem 3: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| proper#(isNat(X)) | → | proper#(X) | | proper#(U11(X1, X2)) | → | proper#(X1) |
| proper#(U41(X1, X2, X3)) | → | proper#(X3) | | proper#(U21(X1, X2, X3)) | → | proper#(X3) |
| proper#(x(X1, X2)) | → | proper#(X1) | | proper#(and(X1, X2)) | → | proper#(X1) |
| proper#(U41(X1, X2, X3)) | → | proper#(X2) | | proper#(x(X1, X2)) | → | proper#(X2) |
| proper#(s(X)) | → | proper#(X) | | proper#(U11(X1, X2)) | → | proper#(X2) |
| proper#(and(X1, X2)) | → | proper#(X2) | | proper#(U21(X1, X2, X3)) | → | proper#(X1) |
| proper#(U41(X1, X2, X3)) | → | proper#(X1) | | proper#(plus(X1, X2)) | → | proper#(X1) |
| proper#(U21(X1, X2, X3)) | → | proper#(X2) | | proper#(plus(X1, X2)) | → | proper#(X2) |
| proper#(U31(X)) | → | proper#(X) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, x, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| proper#(isNat(X)) | → | proper#(X) | | proper#(U11(X1, X2)) | → | proper#(X1) |
| proper#(U41(X1, X2, X3)) | → | proper#(X3) | | proper#(U21(X1, X2, X3)) | → | proper#(X3) |
| proper#(x(X1, X2)) | → | proper#(X1) | | proper#(and(X1, X2)) | → | proper#(X1) |
| proper#(x(X1, X2)) | → | proper#(X2) | | proper#(U41(X1, X2, X3)) | → | proper#(X2) |
| proper#(s(X)) | → | proper#(X) | | proper#(U11(X1, X2)) | → | proper#(X2) |
| proper#(and(X1, X2)) | → | proper#(X2) | | proper#(U21(X1, X2, X3)) | → | proper#(X1) |
| proper#(U41(X1, X2, X3)) | → | proper#(X1) | | proper#(plus(X1, X2)) | → | proper#(X1) |
| proper#(U21(X1, X2, X3)) | → | proper#(X2) | | proper#(plus(X1, X2)) | → | proper#(X2) |
| proper#(U31(X)) | → | proper#(X) |
Problem 4: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| active#(plus(X1, X2)) | → | active#(X1) | | active#(U31(X)) | → | active#(X) |
| active#(s(X)) | → | active#(X) | | active#(x(X1, X2)) | → | active#(X1) |
| active#(x(X1, X2)) | → | active#(X2) | | active#(plus(X1, X2)) | → | active#(X2) |
| active#(and(X1, X2)) | → | active#(X1) | | active#(U11(X1, X2)) | → | active#(X1) |
| active#(U41(X1, X2, X3)) | → | active#(X1) | | active#(U21(X1, X2, X3)) | → | active#(X1) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, x, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| active#(U31(X)) | → | active#(X) | | active#(plus(X1, X2)) | → | active#(X1) |
| active#(s(X)) | → | active#(X) | | active#(x(X1, X2)) | → | active#(X1) |
| active#(x(X1, X2)) | → | active#(X2) | | active#(plus(X1, X2)) | → | active#(X2) |
| active#(and(X1, X2)) | → | active#(X1) | | active#(U11(X1, X2)) | → | active#(X1) |
| active#(U21(X1, X2, X3)) | → | active#(X1) | | active#(U41(X1, X2, X3)) | → | active#(X1) |
Problem 5: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| plus#(ok(X1), ok(X2)) | → | plus#(X1, X2) | | plus#(X1, mark(X2)) | → | plus#(X1, X2) |
| plus#(mark(X1), X2) | → | plus#(X1, X2) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, x, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| plus#(ok(X1), ok(X2)) | → | plus#(X1, X2) | | plus#(mark(X1), X2) | → | plus#(X1, X2) |
Problem 14: ReductionPairSAT
Dependency Pair Problem
Dependency Pairs
| plus#(X1, mark(X2)) | → | plus#(X1, X2) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, top, x
Strategy
Function Precedence
plus# < mark < plus = and = isNat = 0 = s = tt = U41 = U11 = active = ok = U31 = proper = U21 = top = x
Argument Filtering
plus: all arguments are removed from plus
mark: 1
and: all arguments are removed from and
isNat: all arguments are removed from isNat
0: all arguments are removed from 0
s: all arguments are removed from s
tt: all arguments are removed from tt
U41: all arguments are removed from U41
U11: 1 2
plus#: 2
active: all arguments are removed from active
ok: all arguments are removed from ok
U31: all arguments are removed from U31
proper: all arguments are removed from proper
U21: collapses to 2
top: all arguments are removed from top
x: 1 2
Status
plus: multiset
mark: multiset
and: multiset
isNat: multiset
0: multiset
s: multiset
tt: multiset
U41: multiset
U11: lexicographic with permutation 1 → 2 2 → 1
plus#: lexicographic with permutation 2 → 1
active: multiset
ok: multiset
U31: multiset
proper: multiset
top: multiset
x: lexicographic with permutation 1 → 2 2 → 1
Usable Rules
There are no usable rules.
The dependency pairs and usable rules are stronlgy conservative!
Eliminated dependency pairs
The following dependency pairs (at least) can be eliminated according to the given precedence.
| plus#(X1, mark(X2)) → plus#(X1, X2) |
Problem 6: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| isNat#(ok(X)) | → | isNat#(X) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, x, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| isNat#(ok(X)) | → | isNat#(X) |
Problem 7: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| U31#(ok(X)) | → | U31#(X) | | U31#(mark(X)) | → | U31#(X) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, x, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| U31#(ok(X)) | → | U31#(X) | | U31#(mark(X)) | → | U31#(X) |
Problem 8: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| s#(mark(X)) | → | s#(X) | | s#(ok(X)) | → | s#(X) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, x, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| s#(mark(X)) | → | s#(X) | | s#(ok(X)) | → | s#(X) |
Problem 9: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| U41#(mark(X1), X2, X3) | → | U41#(X1, X2, X3) | | U41#(ok(X1), ok(X2), ok(X3)) | → | U41#(X1, X2, X3) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, x, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| U41#(mark(X1), X2, X3) | → | U41#(X1, X2, X3) | | U41#(ok(X1), ok(X2), ok(X3)) | → | U41#(X1, X2, X3) |
Problem 10: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| U11#(ok(X1), ok(X2)) | → | U11#(X1, X2) | | U11#(mark(X1), X2) | → | U11#(X1, X2) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, x, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| U11#(ok(X1), ok(X2)) | → | U11#(X1, X2) | | U11#(mark(X1), X2) | → | U11#(X1, X2) |
Problem 11: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| x#(mark(X1), X2) | → | x#(X1, X2) | | x#(ok(X1), ok(X2)) | → | x#(X1, X2) |
| x#(X1, mark(X2)) | → | x#(X1, X2) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, x, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| x#(mark(X1), X2) | → | x#(X1, X2) | | x#(ok(X1), ok(X2)) | → | x#(X1, X2) |
Problem 15: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
| x#(X1, mark(X2)) | → | x#(X1, X2) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, top, x
Strategy
Polynomial Interpretation
- 0: 0
- U11(x,y): 0
- U21(x,y,z): 0
- U31(x): 0
- U41(x,y,z): 0
- active(x): 0
- and(x,y): 0
- isNat(x): 0
- mark(x): x + 2
- ok(x): 0
- plus(x,y): 0
- proper(x): 0
- s(x): 0
- top(x): 0
- tt: 0
- x(x,y): 0
- x#(x,y): y + x + 1
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| x#(X1, mark(X2)) | → | x#(X1, X2) |
Problem 12: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| U21#(ok(X1), ok(X2), ok(X3)) | → | U21#(X1, X2, X3) | | U21#(mark(X1), X2, X3) | → | U21#(X1, X2, X3) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, x, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| U21#(ok(X1), ok(X2), ok(X3)) | → | U21#(X1, X2, X3) | | U21#(mark(X1), X2, X3) | → | U21#(X1, X2, X3) |
Problem 13: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| and#(ok(X1), ok(X2)) | → | and#(X1, X2) | | and#(mark(X1), X2) | → | and#(X1, X2) |
Rewrite Rules
| active(U11(tt, N)) | → | mark(N) | | active(U21(tt, M, N)) | → | mark(s(plus(N, M))) |
| active(U31(tt)) | → | mark(0) | | active(U41(tt, M, N)) | → | mark(plus(x(N, M), N)) |
| active(and(tt, X)) | → | mark(X) | | active(isNat(0)) | → | mark(tt) |
| active(isNat(plus(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(isNat(s(V1))) | → | mark(isNat(V1)) |
| active(isNat(x(V1, V2))) | → | mark(and(isNat(V1), isNat(V2))) | | active(plus(N, 0)) | → | mark(U11(isNat(N), N)) |
| active(plus(N, s(M))) | → | mark(U21(and(isNat(M), isNat(N)), M, N)) | | active(x(N, 0)) | → | mark(U31(isNat(N))) |
| active(x(N, s(M))) | → | mark(U41(and(isNat(M), isNat(N)), M, N)) | | active(U11(X1, X2)) | → | U11(active(X1), X2) |
| active(U21(X1, X2, X3)) | → | U21(active(X1), X2, X3) | | active(s(X)) | → | s(active(X)) |
| active(plus(X1, X2)) | → | plus(active(X1), X2) | | active(plus(X1, X2)) | → | plus(X1, active(X2)) |
| active(U31(X)) | → | U31(active(X)) | | active(U41(X1, X2, X3)) | → | U41(active(X1), X2, X3) |
| active(x(X1, X2)) | → | x(active(X1), X2) | | active(x(X1, X2)) | → | x(X1, active(X2)) |
| active(and(X1, X2)) | → | and(active(X1), X2) | | U11(mark(X1), X2) | → | mark(U11(X1, X2)) |
| U21(mark(X1), X2, X3) | → | mark(U21(X1, X2, X3)) | | s(mark(X)) | → | mark(s(X)) |
| plus(mark(X1), X2) | → | mark(plus(X1, X2)) | | plus(X1, mark(X2)) | → | mark(plus(X1, X2)) |
| U31(mark(X)) | → | mark(U31(X)) | | U41(mark(X1), X2, X3) | → | mark(U41(X1, X2, X3)) |
| x(mark(X1), X2) | → | mark(x(X1, X2)) | | x(X1, mark(X2)) | → | mark(x(X1, X2)) |
| and(mark(X1), X2) | → | mark(and(X1, X2)) | | proper(U11(X1, X2)) | → | U11(proper(X1), proper(X2)) |
| proper(tt) | → | ok(tt) | | proper(U21(X1, X2, X3)) | → | U21(proper(X1), proper(X2), proper(X3)) |
| proper(s(X)) | → | s(proper(X)) | | proper(plus(X1, X2)) | → | plus(proper(X1), proper(X2)) |
| proper(U31(X)) | → | U31(proper(X)) | | proper(0) | → | ok(0) |
| proper(U41(X1, X2, X3)) | → | U41(proper(X1), proper(X2), proper(X3)) | | proper(x(X1, X2)) | → | x(proper(X1), proper(X2)) |
| proper(and(X1, X2)) | → | and(proper(X1), proper(X2)) | | proper(isNat(X)) | → | isNat(proper(X)) |
| U11(ok(X1), ok(X2)) | → | ok(U11(X1, X2)) | | U21(ok(X1), ok(X2), ok(X3)) | → | ok(U21(X1, X2, X3)) |
| s(ok(X)) | → | ok(s(X)) | | plus(ok(X1), ok(X2)) | → | ok(plus(X1, X2)) |
| U31(ok(X)) | → | ok(U31(X)) | | U41(ok(X1), ok(X2), ok(X3)) | → | ok(U41(X1, X2, X3)) |
| x(ok(X1), ok(X2)) | → | ok(x(X1, X2)) | | and(ok(X1), ok(X2)) | → | ok(and(X1, X2)) |
| isNat(ok(X)) | → | ok(isNat(X)) | | top(mark(X)) | → | top(proper(X)) |
| top(ok(X)) | → | top(active(X)) |
Original Signature
Termination of terms over the following signature is verified: plus, mark, and, isNat, 0, s, tt, U41, active, U11, ok, proper, U31, U21, x, top
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| and#(ok(X1), ok(X2)) | → | and#(X1, X2) | | and#(mark(X1), X2) | → | and#(X1, X2) |