YES
The TRS could be proven terminating. The proof took 1671 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (463ms).
| Problem 2 was processed with processor PolynomialLinearRange4 (335ms).
| | Problem 4 was processed with processor DependencyGraph (19ms).
| | | Problem 5 was processed with processor PolynomialLinearRange4 (127ms).
| | | | Problem 8 was processed with processor DependencyGraph (4ms).
| | | Problem 6 was processed with processor PolynomialLinearRange4 (13ms).
| | | Problem 7 was processed with processor PolynomialLinearRange4 (17ms).
| Problem 3 was processed with processor PolynomialLinearRange4 (253ms).
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U11#(tt, V1, V2) | → | U12#(isNat(V1), V2) | | isNat#(plus(V1, V2)) | → | U11#(and(isNatKind(V1), isNatKind(V2)), V1, V2) |
plus#(N, 0) | → | isNat#(N) | | U12#(tt, V2) | → | isNat#(V2) |
isNat#(s(V1)) | → | isNatKind#(V1) | | isNat#(s(V1)) | → | U21#(isNatKind(V1), V1) |
plus#(N, s(M)) | → | and#(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) | | T(isNat(x_1)) | → | T(x_1) |
T(and(x_1, x_2)) | → | T(x_1) | | plus#(N, s(M)) | → | isNat#(M) |
U12#(tt, V2) | → | U13#(isNat(V2)) | | isNatKind#(s(V1)) | → | isNatKind#(V1) |
isNatKind#(plus(V1, V2)) | → | and#(isNatKind(V1), isNatKind(V2)) | | T(isNatKind(V2)) | → | isNatKind#(V2) |
isNat#(plus(V1, V2)) | → | and#(isNatKind(V1), isNatKind(V2)) | | U21#(tt, V1) | → | isNat#(V1) |
T(isNatKind(M)) | → | isNatKind#(M) | | and#(tt, X) | → | T(X) |
U31#(tt, N) | → | T(N) | | isNatKind#(plus(V1, V2)) | → | isNatKind#(V1) |
U21#(tt, V1) | → | U22#(isNat(V1)) | | T(and(isNat(N), isNatKind(N))) | → | and#(isNat(N), isNatKind(N)) |
plus#(N, 0) | → | and#(isNat(N), isNatKind(N)) | | T(isNatKind(N)) | → | isNatKind#(N) |
U41#(tt, M, N) | → | plus#(N, M) | | plus#(N, s(M)) | → | and#(isNat(M), isNatKind(M)) |
U11#(tt, V1, V2) | → | isNat#(V1) | | U41#(tt, M, N) | → | T(M) |
plus#(N, 0) | → | U31#(and(isNat(N), isNatKind(N)), N) | | plus#(N, s(M)) | → | U41#(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) |
isNat#(plus(V1, V2)) | → | isNatKind#(V1) | | U41#(tt, M, N) | → | T(N) |
T(isNat(N)) | → | isNat#(N) | | T(isNatKind(x_1)) | → | T(x_1) |
T(and(x_1, x_2)) | → | T(x_2) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(V1), V2) | | U12(tt, V2) | → | U13(isNat(V2)) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, N) | → | N |
U41(tt, M, N) | → | s(plus(N, M)) | | and(tt, X) | → | X |
isNat(0) | → | tt | | isNat(plus(V1, V2)) | → | U11(and(isNatKind(V1), isNatKind(V2)), V1, V2) |
isNat(s(V1)) | → | U21(isNatKind(V1), V1) | | isNatKind(0) | → | tt |
isNatKind(plus(V1, V2)) | → | and(isNatKind(V1), isNatKind(V2)) | | isNatKind(s(V1)) | → | isNatKind(V1) |
plus(N, 0) | → | U31(and(isNat(N), isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, and, isNat, 0, s, tt, U41, U11, U12, U13, U31, U21, U22
Strategy
Context-sensitive strategy:
μ(isNat) = μ(T) = μ(isNatKind) = μ(0) = μ(isNatKind#) = μ(tt) = μ(isNat#) = ∅
μ(U11#) = μ(U13#) = μ(U31#) = μ(U21#) = μ(and#) = μ(U41#) = μ(U41) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(and) = μ(s) = μ(U11) = μ(U12) = μ(U31) = μ(U13) = {1}
μ(plus) = μ(plus#) = {1, 2}
The following SCCs where found
plus#(N, s(M)) → U41#(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) | U41#(tt, M, N) → plus#(N, M) |
U11#(tt, V1, V2) → U12#(isNat(V1), V2) | and#(tt, X) → T(X) |
T(isNatKind(M)) → isNatKind#(M) | isNatKind#(plus(V1, V2)) → isNatKind#(V1) |
isNat#(plus(V1, V2)) → U11#(and(isNatKind(V1), isNatKind(V2)), V1, V2) | U12#(tt, V2) → isNat#(V2) |
T(and(isNat(N), isNatKind(N))) → and#(isNat(N), isNatKind(N)) | isNat#(s(V1)) → isNatKind#(V1) |
isNat#(s(V1)) → U21#(isNatKind(V1), V1) | T(isNatKind(N)) → isNatKind#(N) |
T(isNat(x_1)) → T(x_1) | T(and(x_1, x_2)) → T(x_1) |
U11#(tt, V1, V2) → isNat#(V1) | isNatKind#(s(V1)) → isNatKind#(V1) |
isNatKind#(plus(V1, V2)) → and#(isNatKind(V1), isNatKind(V2)) | isNat#(plus(V1, V2)) → isNatKind#(V1) |
T(isNat(N)) → isNat#(N) | T(isNatKind(V2)) → isNatKind#(V2) |
isNat#(plus(V1, V2)) → and#(isNatKind(V1), isNatKind(V2)) | T(isNatKind(x_1)) → T(x_1) |
T(and(x_1, x_2)) → T(x_2) | U21#(tt, V1) → isNat#(V1) |
Problem 2: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
U11#(tt, V1, V2) | → | U12#(isNat(V1), V2) | | isNatKind#(plus(V1, V2)) | → | isNatKind#(V1) |
T(isNatKind(M)) | → | isNatKind#(M) | | and#(tt, X) | → | T(X) |
isNat#(plus(V1, V2)) | → | U11#(and(isNatKind(V1), isNatKind(V2)), V1, V2) | | T(and(isNat(N), isNatKind(N))) | → | and#(isNat(N), isNatKind(N)) |
U12#(tt, V2) | → | isNat#(V2) | | isNat#(s(V1)) | → | isNatKind#(V1) |
isNat#(s(V1)) | → | U21#(isNatKind(V1), V1) | | T(isNatKind(N)) | → | isNatKind#(N) |
T(and(x_1, x_2)) | → | T(x_1) | | T(isNat(x_1)) | → | T(x_1) |
U11#(tt, V1, V2) | → | isNat#(V1) | | isNatKind#(s(V1)) | → | isNatKind#(V1) |
isNatKind#(plus(V1, V2)) | → | and#(isNatKind(V1), isNatKind(V2)) | | isNat#(plus(V1, V2)) | → | isNatKind#(V1) |
T(isNat(N)) | → | isNat#(N) | | T(isNatKind(V2)) | → | isNatKind#(V2) |
isNat#(plus(V1, V2)) | → | and#(isNatKind(V1), isNatKind(V2)) | | T(isNatKind(x_1)) | → | T(x_1) |
T(and(x_1, x_2)) | → | T(x_2) | | U21#(tt, V1) | → | isNat#(V1) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(V1), V2) | | U12(tt, V2) | → | U13(isNat(V2)) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, N) | → | N |
U41(tt, M, N) | → | s(plus(N, M)) | | and(tt, X) | → | X |
isNat(0) | → | tt | | isNat(plus(V1, V2)) | → | U11(and(isNatKind(V1), isNatKind(V2)), V1, V2) |
isNat(s(V1)) | → | U21(isNatKind(V1), V1) | | isNatKind(0) | → | tt |
isNatKind(plus(V1, V2)) | → | and(isNatKind(V1), isNatKind(V2)) | | isNatKind(s(V1)) | → | isNatKind(V1) |
plus(N, 0) | → | U31(and(isNat(N), isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, and, isNat, 0, s, tt, U41, U11, U12, U13, U31, U21, U22
Strategy
Context-sensitive strategy:
μ(isNat) = μ(T) = μ(isNatKind) = μ(0) = μ(isNatKind#) = μ(tt) = μ(isNat#) = ∅
μ(U11#) = μ(U31#) = μ(U13#) = μ(U21#) = μ(and#) = μ(U41#) = μ(U41) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(and) = μ(s) = μ(U11) = μ(U12) = μ(U13) = μ(U31) = {1}
μ(plus) = μ(plus#) = {1, 2}
Polynomial Interpretation
- 0: 0
- T(x): 2x + 1
- U11(x,y,z): 2z + 2y + 2
- U11#(x,y,z): 2z + 2y + 1
- U12(x,y): 2
- U12#(x,y): 2y + 1
- U13(x): 2
- U21(x,y): y
- U21#(x,y): y + 1
- U22(x): 0
- U31(x,y): y + 1
- U41(x,y,z): 2z + 2y + 1
- and(x,y): 2y + x
- and#(x,y): 2y + 1
- isNat(x): x + 1
- isNat#(x): x + 1
- isNatKind(x): x
- isNatKind#(x): x
- plus(x,y): 2y + 2x + 1
- s(x): x
- tt: 0
Standard Usable rules
isNat(0) | → | tt | | plus(N, s(M)) | → | U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) |
U21(tt, V1) | → | U22(isNat(V1)) | | plus(N, 0) | → | U31(and(isNat(N), isNatKind(N)), N) |
U41(tt, M, N) | → | s(plus(N, M)) | | isNat(s(V1)) | → | U21(isNatKind(V1), V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | U31(tt, N) | → | N |
U11(tt, V1, V2) | → | U12(isNat(V1), V2) | | U13(tt) | → | tt |
isNat(plus(V1, V2)) | → | U11(and(isNatKind(V1), isNatKind(V2)), V1, V2) | | and(tt, X) | → | X |
isNatKind(plus(V1, V2)) | → | and(isNatKind(V1), isNatKind(V2)) | | isNatKind(0) | → | tt |
U12(tt, V2) | → | U13(isNat(V2)) | | U22(tt) | → | tt |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
isNatKind#(plus(V1, V2)) | → | isNatKind#(V1) | | T(isNatKind(M)) | → | isNatKind#(M) |
isNat#(plus(V1, V2)) | → | U11#(and(isNatKind(V1), isNatKind(V2)), V1, V2) | | T(and(isNat(N), isNatKind(N))) | → | and#(isNat(N), isNatKind(N)) |
isNat#(s(V1)) | → | isNatKind#(V1) | | T(isNatKind(N)) | → | isNatKind#(N) |
T(isNat(x_1)) | → | T(x_1) | | isNat#(plus(V1, V2)) | → | isNatKind#(V1) |
T(isNat(N)) | → | isNat#(N) | | T(isNatKind(V2)) | → | isNatKind#(V2) |
isNat#(plus(V1, V2)) | → | and#(isNatKind(V1), isNatKind(V2)) |
Problem 4: DependencyGraph
Dependency Pair Problem
Dependency Pairs
isNatKind#(s(V1)) | → | isNatKind#(V1) | | U11#(tt, V1, V2) | → | U12#(isNat(V1), V2) |
and#(tt, X) | → | T(X) | | isNatKind#(plus(V1, V2)) | → | and#(isNatKind(V1), isNatKind(V2)) |
U12#(tt, V2) | → | isNat#(V2) | | isNat#(s(V1)) | → | U21#(isNatKind(V1), V1) |
T(isNatKind(x_1)) | → | T(x_1) | | T(and(x_1, x_2)) | → | T(x_1) |
T(and(x_1, x_2)) | → | T(x_2) | | U21#(tt, V1) | → | isNat#(V1) |
U11#(tt, V1, V2) | → | isNat#(V1) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(V1), V2) | | U12(tt, V2) | → | U13(isNat(V2)) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, N) | → | N |
U41(tt, M, N) | → | s(plus(N, M)) | | and(tt, X) | → | X |
isNat(0) | → | tt | | isNat(plus(V1, V2)) | → | U11(and(isNatKind(V1), isNatKind(V2)), V1, V2) |
isNat(s(V1)) | → | U21(isNatKind(V1), V1) | | isNatKind(0) | → | tt |
isNatKind(plus(V1, V2)) | → | and(isNatKind(V1), isNatKind(V2)) | | isNatKind(s(V1)) | → | isNatKind(V1) |
plus(N, 0) | → | U31(and(isNat(N), isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, and, isNat, 0, s, tt, U41, U11, U12, U13, U31, U21, U22
Strategy
Context-sensitive strategy:
μ(isNat) = μ(T) = μ(isNatKind) = μ(0) = μ(isNatKind#) = μ(tt) = μ(isNat#) = ∅
μ(U11#) = μ(U13#) = μ(U31#) = μ(U21#) = μ(and#) = μ(U41#) = μ(U41) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(and) = μ(s) = μ(U11) = μ(U12) = μ(U31) = μ(U13) = {1}
μ(plus) = μ(plus#) = {1, 2}
The following SCCs where found
isNatKind#(s(V1)) → isNatKind#(V1) |
T(and(x_1, x_2)) → T(x_1) | T(isNatKind(x_1)) → T(x_1) |
T(and(x_1, x_2)) → T(x_2) |
isNat#(s(V1)) → U21#(isNatKind(V1), V1) | U21#(tt, V1) → isNat#(V1) |
Problem 5: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
isNat#(s(V1)) | → | U21#(isNatKind(V1), V1) | | U21#(tt, V1) | → | isNat#(V1) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(V1), V2) | | U12(tt, V2) | → | U13(isNat(V2)) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, N) | → | N |
U41(tt, M, N) | → | s(plus(N, M)) | | and(tt, X) | → | X |
isNat(0) | → | tt | | isNat(plus(V1, V2)) | → | U11(and(isNatKind(V1), isNatKind(V2)), V1, V2) |
isNat(s(V1)) | → | U21(isNatKind(V1), V1) | | isNatKind(0) | → | tt |
isNatKind(plus(V1, V2)) | → | and(isNatKind(V1), isNatKind(V2)) | | isNatKind(s(V1)) | → | isNatKind(V1) |
plus(N, 0) | → | U31(and(isNat(N), isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, and, isNat, 0, s, tt, U41, U11, U12, U13, U31, U21, U22
Strategy
Context-sensitive strategy:
μ(isNat) = μ(T) = μ(isNatKind) = μ(0) = μ(isNatKind#) = μ(tt) = μ(isNat#) = ∅
μ(U11#) = μ(U31#) = μ(U13#) = μ(U21#) = μ(and#) = μ(U41#) = μ(U41) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(and) = μ(s) = μ(U11) = μ(U12) = μ(U13) = μ(U31) = {1}
μ(plus) = μ(plus#) = {1, 2}
Polynomial Interpretation
- 0: 0
- U11(x,y,z): 0
- U12(x,y): 0
- U13(x): 0
- U21(x,y): 0
- U21#(x,y): y + 1
- U22(x): 0
- U31(x,y): y
- U41(x,y,z): z + 2y + 1
- and(x,y): 2y
- isNat(x): 1
- isNat#(x): x + 1
- isNatKind(x): 0
- plus(x,y): 2y + x
- s(x): x + 1
- tt: 0
Standard Usable rules
isNat(0) | → | tt | | plus(N, s(M)) | → | U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) |
U21(tt, V1) | → | U22(isNat(V1)) | | plus(N, 0) | → | U31(and(isNat(N), isNatKind(N)), N) |
U41(tt, M, N) | → | s(plus(N, M)) | | isNat(s(V1)) | → | U21(isNatKind(V1), V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | U31(tt, N) | → | N |
U11(tt, V1, V2) | → | U12(isNat(V1), V2) | | U13(tt) | → | tt |
isNat(plus(V1, V2)) | → | U11(and(isNatKind(V1), isNatKind(V2)), V1, V2) | | and(tt, X) | → | X |
isNatKind(plus(V1, V2)) | → | and(isNatKind(V1), isNatKind(V2)) | | isNatKind(0) | → | tt |
U12(tt, V2) | → | U13(isNat(V2)) | | U22(tt) | → | tt |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
isNat#(s(V1)) | → | U21#(isNatKind(V1), V1) |
Problem 8: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U21#(tt, V1) | → | isNat#(V1) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(V1), V2) | | U12(tt, V2) | → | U13(isNat(V2)) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, N) | → | N |
U41(tt, M, N) | → | s(plus(N, M)) | | and(tt, X) | → | X |
isNat(0) | → | tt | | isNat(plus(V1, V2)) | → | U11(and(isNatKind(V1), isNatKind(V2)), V1, V2) |
isNat(s(V1)) | → | U21(isNatKind(V1), V1) | | isNatKind(0) | → | tt |
isNatKind(plus(V1, V2)) | → | and(isNatKind(V1), isNatKind(V2)) | | isNatKind(s(V1)) | → | isNatKind(V1) |
plus(N, 0) | → | U31(and(isNat(N), isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, and, isNat, 0, s, tt, U41, U11, U12, U13, U31, U21, U22
Strategy
Context-sensitive strategy:
μ(isNat) = μ(T) = μ(isNatKind) = μ(0) = μ(isNatKind#) = μ(tt) = μ(isNat#) = ∅
μ(U11#) = μ(U13#) = μ(U31#) = μ(U21#) = μ(and#) = μ(U41#) = μ(U41) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(and) = μ(s) = μ(U11) = μ(U12) = μ(U31) = μ(U13) = {1}
μ(plus) = μ(plus#) = {1, 2}
There are no SCCs!
Problem 6: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
isNatKind#(s(V1)) | → | isNatKind#(V1) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(V1), V2) | | U12(tt, V2) | → | U13(isNat(V2)) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, N) | → | N |
U41(tt, M, N) | → | s(plus(N, M)) | | and(tt, X) | → | X |
isNat(0) | → | tt | | isNat(plus(V1, V2)) | → | U11(and(isNatKind(V1), isNatKind(V2)), V1, V2) |
isNat(s(V1)) | → | U21(isNatKind(V1), V1) | | isNatKind(0) | → | tt |
isNatKind(plus(V1, V2)) | → | and(isNatKind(V1), isNatKind(V2)) | | isNatKind(s(V1)) | → | isNatKind(V1) |
plus(N, 0) | → | U31(and(isNat(N), isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, and, isNat, 0, s, tt, U41, U11, U12, U13, U31, U21, U22
Strategy
Context-sensitive strategy:
μ(isNat) = μ(T) = μ(isNatKind) = μ(0) = μ(isNatKind#) = μ(tt) = μ(isNat#) = ∅
μ(U11#) = μ(U31#) = μ(U13#) = μ(U21#) = μ(and#) = μ(U41#) = μ(U41) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(and) = μ(s) = μ(U11) = μ(U12) = μ(U13) = μ(U31) = {1}
μ(plus) = μ(plus#) = {1, 2}
Polynomial Interpretation
- 0: 0
- U11(x,y,z): 0
- U12(x,y): 0
- U13(x): 0
- U21(x,y): 0
- U22(x): 0
- U31(x,y): 0
- U41(x,y,z): 0
- and(x,y): 0
- isNat(x): 0
- isNatKind(x): 0
- isNatKind#(x): 2x
- plus(x,y): 0
- s(x): x + 1
- tt: 0
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
isNatKind#(s(V1)) | → | isNatKind#(V1) |
Problem 7: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
T(and(x_1, x_2)) | → | T(x_1) | | T(isNatKind(x_1)) | → | T(x_1) |
T(and(x_1, x_2)) | → | T(x_2) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(V1), V2) | | U12(tt, V2) | → | U13(isNat(V2)) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, N) | → | N |
U41(tt, M, N) | → | s(plus(N, M)) | | and(tt, X) | → | X |
isNat(0) | → | tt | | isNat(plus(V1, V2)) | → | U11(and(isNatKind(V1), isNatKind(V2)), V1, V2) |
isNat(s(V1)) | → | U21(isNatKind(V1), V1) | | isNatKind(0) | → | tt |
isNatKind(plus(V1, V2)) | → | and(isNatKind(V1), isNatKind(V2)) | | isNatKind(s(V1)) | → | isNatKind(V1) |
plus(N, 0) | → | U31(and(isNat(N), isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, and, isNat, 0, s, tt, U41, U11, U12, U13, U31, U21, U22
Strategy
Context-sensitive strategy:
μ(isNat) = μ(T) = μ(isNatKind) = μ(0) = μ(isNatKind#) = μ(tt) = μ(isNat#) = ∅
μ(U11#) = μ(U31#) = μ(U13#) = μ(U21#) = μ(and#) = μ(U41#) = μ(U41) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(and) = μ(s) = μ(U11) = μ(U12) = μ(U13) = μ(U31) = {1}
μ(plus) = μ(plus#) = {1, 2}
Polynomial Interpretation
- 0: 0
- T(x): 2x
- U11(x,y,z): 0
- U12(x,y): 0
- U13(x): 0
- U21(x,y): 0
- U22(x): 0
- U31(x,y): 0
- U41(x,y,z): 0
- and(x,y): 2y + 2x + 1
- isNat(x): 0
- isNatKind(x): 2x + 1
- plus(x,y): 0
- s(x): 0
- tt: 0
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
T(isNatKind(x_1)) | → | T(x_1) | | T(and(x_1, x_2)) | → | T(x_1) |
T(and(x_1, x_2)) | → | T(x_2) |
Problem 3: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
plus#(N, s(M)) | → | U41#(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) | | U41#(tt, M, N) | → | plus#(N, M) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(V1), V2) | | U12(tt, V2) | → | U13(isNat(V2)) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, N) | → | N |
U41(tt, M, N) | → | s(plus(N, M)) | | and(tt, X) | → | X |
isNat(0) | → | tt | | isNat(plus(V1, V2)) | → | U11(and(isNatKind(V1), isNatKind(V2)), V1, V2) |
isNat(s(V1)) | → | U21(isNatKind(V1), V1) | | isNatKind(0) | → | tt |
isNatKind(plus(V1, V2)) | → | and(isNatKind(V1), isNatKind(V2)) | | isNatKind(s(V1)) | → | isNatKind(V1) |
plus(N, 0) | → | U31(and(isNat(N), isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, and, isNat, 0, s, tt, U41, U11, U12, U13, U31, U21, U22
Strategy
Context-sensitive strategy:
μ(isNat) = μ(T) = μ(isNatKind) = μ(0) = μ(isNatKind#) = μ(tt) = μ(isNat#) = ∅
μ(U11#) = μ(U31#) = μ(U13#) = μ(U21#) = μ(and#) = μ(U41#) = μ(U41) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(and) = μ(s) = μ(U11) = μ(U12) = μ(U13) = μ(U31) = {1}
μ(plus) = μ(plus#) = {1, 2}
Polynomial Interpretation
- 0: 0
- U11(x,y,z): 1
- U12(x,y): 1
- U13(x): 0
- U21(x,y): 2
- U22(x): 0
- U31(x,y): y
- U41(x,y,z): z + y + 1
- U41#(x,y,z): 2y + 1
- and(x,y): 2y
- isNat(x): 3
- isNatKind(x): 0
- plus(x,y): y + x
- plus#(x,y): 2y
- s(x): x + 1
- tt: 0
Standard Usable rules
isNat(0) | → | tt | | plus(N, s(M)) | → | U41(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) |
U21(tt, V1) | → | U22(isNat(V1)) | | plus(N, 0) | → | U31(and(isNat(N), isNatKind(N)), N) |
U41(tt, M, N) | → | s(plus(N, M)) | | isNat(s(V1)) | → | U21(isNatKind(V1), V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | U31(tt, N) | → | N |
U11(tt, V1, V2) | → | U12(isNat(V1), V2) | | U13(tt) | → | tt |
isNat(plus(V1, V2)) | → | U11(and(isNatKind(V1), isNatKind(V2)), V1, V2) | | and(tt, X) | → | X |
isNatKind(plus(V1, V2)) | → | and(isNatKind(V1), isNatKind(V2)) | | isNatKind(0) | → | tt |
U12(tt, V2) | → | U13(isNat(V2)) | | U22(tt) | → | tt |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
plus#(N, s(M)) | → | U41#(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N) | | U41#(tt, M, N) | → | plus#(N, M) |