YES
The TRS could be proven terminating. The proof took 41022 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (229ms).
| Problem 2 was processed with processor PolynomialLinearRange4 (255ms).
| | Problem 3 was processed with processor DependencyGraph (16ms).
| | | Problem 4 was processed with processor PolynomialLinearRange4 (138ms).
| | | | Problem 6 was processed with processor DependencyGraph (19ms).
| | | Problem 5 was processed with processor PolynomialLinearRange4 (91ms).
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| U41#(tt, M, N) | → | isNat#(activate(N)) | | U41#(tt, M, N) | → | activate#(M) |
| isNat#(n__plus(V1, V2)) | → | isNat#(activate(V1)) | | isNat#(n__plus(V1, V2)) | → | U11#(isNat(activate(V1)), activate(V2)) |
| plus#(N, 0) | → | isNat#(N) | | isNat#(n__plus(V1, V2)) | → | activate#(V2) |
| U11#(tt, V2) | → | U12#(isNat(activate(V2))) | | U42#(tt, M, N) | → | activate#(N) |
| plus#(N, s(M)) | → | U41#(isNat(M), M, N) | | U42#(tt, M, N) | → | plus#(activate(N), activate(M)) |
| U11#(tt, V2) | → | activate#(V2) | | U42#(tt, M, N) | → | s#(plus(activate(N), activate(M))) |
| isNat#(n__s(V1)) | → | activate#(V1) | | U11#(tt, V2) | → | isNat#(activate(V2)) |
| U31#(tt, N) | → | activate#(N) | | U41#(tt, M, N) | → | activate#(N) |
| activate#(n__s(X)) | → | s#(X) | | plus#(N, 0) | → | U31#(isNat(N), N) |
| plus#(N, s(M)) | → | isNat#(M) | | U42#(tt, M, N) | → | activate#(M) |
| isNat#(n__s(V1)) | → | U21#(isNat(activate(V1))) | | U41#(tt, M, N) | → | U42#(isNat(activate(N)), activate(M), activate(N)) |
| isNat#(n__s(V1)) | → | isNat#(activate(V1)) | | activate#(n__0) | → | 0# |
| isNat#(n__plus(V1, V2)) | → | activate#(V1) | | activate#(n__plus(X1, X2)) | → | plus#(X1, X2) |
Rewrite Rules
| U11(tt, V2) | → | U12(isNat(activate(V2))) | | U12(tt) | → | tt |
| U21(tt) | → | tt | | U31(tt, N) | → | activate(N) |
| U41(tt, M, N) | → | U42(isNat(activate(N)), activate(M), activate(N)) | | U42(tt, M, N) | → | s(plus(activate(N), activate(M))) |
| isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNat(activate(V1)), activate(V2)) |
| isNat(n__s(V1)) | → | U21(isNat(activate(V1))) | | plus(N, 0) | → | U31(isNat(N), N) |
| plus(N, s(M)) | → | U41(isNat(M), M, N) | | 0 | → | n__0 |
| plus(X1, X2) | → | n__plus(X1, X2) | | s(X) | → | n__s(X) |
| activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(X1, X2) |
| activate(n__s(X)) | → | s(X) | | activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, n__plus, n__s, activate, isNat, 0, n__0, U42, s, tt, U41, U11, U12, U31, U21
Strategy
The following SCCs where found
| U41#(tt, M, N) → isNat#(activate(N)) | U41#(tt, M, N) → activate#(M) |
| U11#(tt, V2) → isNat#(activate(V2)) | isNat#(n__plus(V1, V2)) → isNat#(activate(V1)) |
| U31#(tt, N) → activate#(N) | isNat#(n__plus(V1, V2)) → U11#(isNat(activate(V1)), activate(V2)) |
| U41#(tt, M, N) → activate#(N) | U42#(tt, M, N) → activate#(N) |
| plus#(N, 0) → isNat#(N) | isNat#(n__plus(V1, V2)) → activate#(V2) |
| plus#(N, s(M)) → U41#(isNat(M), M, N) | plus#(N, 0) → U31#(isNat(N), N) |
| plus#(N, s(M)) → isNat#(M) | U42#(tt, M, N) → plus#(activate(N), activate(M)) |
| U42#(tt, M, N) → activate#(M) | U11#(tt, V2) → activate#(V2) |
| isNat#(n__s(V1)) → isNat#(activate(V1)) | U41#(tt, M, N) → U42#(isNat(activate(N)), activate(M), activate(N)) |
| isNat#(n__plus(V1, V2)) → activate#(V1) | isNat#(n__s(V1)) → activate#(V1) |
| activate#(n__plus(X1, X2)) → plus#(X1, X2) |
Problem 2: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
| U41#(tt, M, N) | → | isNat#(activate(N)) | | U41#(tt, M, N) | → | activate#(M) |
| isNat#(n__plus(V1, V2)) | → | isNat#(activate(V1)) | | U11#(tt, V2) | → | isNat#(activate(V2)) |
| U31#(tt, N) | → | activate#(N) | | U41#(tt, M, N) | → | activate#(N) |
| isNat#(n__plus(V1, V2)) | → | U11#(isNat(activate(V1)), activate(V2)) | | isNat#(n__plus(V1, V2)) | → | activate#(V2) |
| plus#(N, 0) | → | isNat#(N) | | U42#(tt, M, N) | → | activate#(N) |
| plus#(N, 0) | → | U31#(isNat(N), N) | | plus#(N, s(M)) | → | U41#(isNat(M), M, N) |
| plus#(N, s(M)) | → | isNat#(M) | | U42#(tt, M, N) | → | plus#(activate(N), activate(M)) |
| U42#(tt, M, N) | → | activate#(M) | | U11#(tt, V2) | → | activate#(V2) |
| isNat#(n__s(V1)) | → | isNat#(activate(V1)) | | U41#(tt, M, N) | → | U42#(isNat(activate(N)), activate(M), activate(N)) |
| isNat#(n__plus(V1, V2)) | → | activate#(V1) | | isNat#(n__s(V1)) | → | activate#(V1) |
| activate#(n__plus(X1, X2)) | → | plus#(X1, X2) |
Rewrite Rules
| U11(tt, V2) | → | U12(isNat(activate(V2))) | | U12(tt) | → | tt |
| U21(tt) | → | tt | | U31(tt, N) | → | activate(N) |
| U41(tt, M, N) | → | U42(isNat(activate(N)), activate(M), activate(N)) | | U42(tt, M, N) | → | s(plus(activate(N), activate(M))) |
| isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNat(activate(V1)), activate(V2)) |
| isNat(n__s(V1)) | → | U21(isNat(activate(V1))) | | plus(N, 0) | → | U31(isNat(N), N) |
| plus(N, s(M)) | → | U41(isNat(M), M, N) | | 0 | → | n__0 |
| plus(X1, X2) | → | n__plus(X1, X2) | | s(X) | → | n__s(X) |
| activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(X1, X2) |
| activate(n__s(X)) | → | s(X) | | activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, n__plus, n__s, activate, isNat, 0, n__0, U42, s, tt, U41, U11, U12, U31, U21
Strategy
Polynomial Interpretation
- 0: 0
- U11(x,y): 0
- U11#(x,y): 2y
- U12(x): 0
- U21(x): 0
- U31(x,y): y + 1
- U31#(x,y): y
- U41(x,y,z): z + 2y + 1
- U41#(x,y,z): z + 2y
- U42(x,y,z): z + 2y + 1
- U42#(x,y,z): z + 2y
- activate(x): x
- activate#(x): x
- isNat(x): 0
- isNat#(x): x
- n__0: 0
- n__plus(x,y): 2y + x + 1
- n__s(x): x
- plus(x,y): 2y + x + 1
- plus#(x,y): 2y + x
- s(x): x
- tt: 0
Standard Usable rules
| plus(X1, X2) | → | n__plus(X1, X2) | | activate(n__plus(X1, X2)) | → | plus(X1, X2) |
| U12(tt) | → | tt | | U31(tt, N) | → | activate(N) |
| activate(n__s(X)) | → | s(X) | | U41(tt, M, N) | → | U42(isNat(activate(N)), activate(M), activate(N)) |
| activate(n__0) | → | 0 | | 0 | → | n__0 |
| isNat(n__0) | → | tt | | U42(tt, M, N) | → | s(plus(activate(N), activate(M))) |
| s(X) | → | n__s(X) | | activate(X) | → | X |
| U21(tt) | → | tt | | plus(N, 0) | → | U31(isNat(N), N) |
| isNat(n__plus(V1, V2)) | → | U11(isNat(activate(V1)), activate(V2)) | | U11(tt, V2) | → | U12(isNat(activate(V2))) |
| isNat(n__s(V1)) | → | U21(isNat(activate(V1))) | | plus(N, s(M)) | → | U41(isNat(M), M, N) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| isNat#(n__plus(V1, V2)) | → | isNat#(activate(V1)) | | isNat#(n__plus(V1, V2)) | → | U11#(isNat(activate(V1)), activate(V2)) |
| isNat#(n__plus(V1, V2)) | → | activate#(V2) | | isNat#(n__plus(V1, V2)) | → | activate#(V1) |
| activate#(n__plus(X1, X2)) | → | plus#(X1, X2) |
Problem 3: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| U41#(tt, M, N) | → | isNat#(activate(N)) | | U41#(tt, M, N) | → | activate#(M) |
| U11#(tt, V2) | → | isNat#(activate(V2)) | | U31#(tt, N) | → | activate#(N) |
| U41#(tt, M, N) | → | activate#(N) | | plus#(N, 0) | → | isNat#(N) |
| U42#(tt, M, N) | → | activate#(N) | | plus#(N, 0) | → | U31#(isNat(N), N) |
| plus#(N, s(M)) | → | U41#(isNat(M), M, N) | | plus#(N, s(M)) | → | isNat#(M) |
| U42#(tt, M, N) | → | plus#(activate(N), activate(M)) | | U42#(tt, M, N) | → | activate#(M) |
| U11#(tt, V2) | → | activate#(V2) | | U41#(tt, M, N) | → | U42#(isNat(activate(N)), activate(M), activate(N)) |
| isNat#(n__s(V1)) | → | isNat#(activate(V1)) | | isNat#(n__s(V1)) | → | activate#(V1) |
Rewrite Rules
| U11(tt, V2) | → | U12(isNat(activate(V2))) | | U12(tt) | → | tt |
| U21(tt) | → | tt | | U31(tt, N) | → | activate(N) |
| U41(tt, M, N) | → | U42(isNat(activate(N)), activate(M), activate(N)) | | U42(tt, M, N) | → | s(plus(activate(N), activate(M))) |
| isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNat(activate(V1)), activate(V2)) |
| isNat(n__s(V1)) | → | U21(isNat(activate(V1))) | | plus(N, 0) | → | U31(isNat(N), N) |
| plus(N, s(M)) | → | U41(isNat(M), M, N) | | 0 | → | n__0 |
| plus(X1, X2) | → | n__plus(X1, X2) | | s(X) | → | n__s(X) |
| activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(X1, X2) |
| activate(n__s(X)) | → | s(X) | | activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, n__plus, n__s, activate, isNat, 0, n__0, U42, s, tt, U41, U11, U12, U31, U21
Strategy
The following SCCs where found
| plus#(N, s(M)) → U41#(isNat(M), M, N) | U42#(tt, M, N) → plus#(activate(N), activate(M)) |
| U41#(tt, M, N) → U42#(isNat(activate(N)), activate(M), activate(N)) |
| isNat#(n__s(V1)) → isNat#(activate(V1)) |
Problem 4: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
| plus#(N, s(M)) | → | U41#(isNat(M), M, N) | | U42#(tt, M, N) | → | plus#(activate(N), activate(M)) |
| U41#(tt, M, N) | → | U42#(isNat(activate(N)), activate(M), activate(N)) |
Rewrite Rules
| U11(tt, V2) | → | U12(isNat(activate(V2))) | | U12(tt) | → | tt |
| U21(tt) | → | tt | | U31(tt, N) | → | activate(N) |
| U41(tt, M, N) | → | U42(isNat(activate(N)), activate(M), activate(N)) | | U42(tt, M, N) | → | s(plus(activate(N), activate(M))) |
| isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNat(activate(V1)), activate(V2)) |
| isNat(n__s(V1)) | → | U21(isNat(activate(V1))) | | plus(N, 0) | → | U31(isNat(N), N) |
| plus(N, s(M)) | → | U41(isNat(M), M, N) | | 0 | → | n__0 |
| plus(X1, X2) | → | n__plus(X1, X2) | | s(X) | → | n__s(X) |
| activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(X1, X2) |
| activate(n__s(X)) | → | s(X) | | activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, n__plus, n__s, activate, isNat, 0, n__0, U42, s, tt, U41, U11, U12, U31, U21
Strategy
Polynomial Interpretation
- 0: 2
- U11(x,y): 1
- U12(x): 0
- U21(x): x
- U31(x,y): y + 1
- U41(x,y,z): 2z + y + 1
- U41#(x,y,z): 2y + x + 1
- U42(x,y,z): 2z + y + 1
- U42#(x,y,z): 2y
- activate(x): x
- isNat(x): 1
- n__0: 2
- n__plus(x,y): y + 2x
- n__s(x): x + 1
- plus(x,y): y + 2x
- plus#(x,y): 2y
- s(x): x + 1
- tt: 0
Standard Usable rules
| plus(X1, X2) | → | n__plus(X1, X2) | | activate(n__plus(X1, X2)) | → | plus(X1, X2) |
| U12(tt) | → | tt | | U31(tt, N) | → | activate(N) |
| activate(n__s(X)) | → | s(X) | | U41(tt, M, N) | → | U42(isNat(activate(N)), activate(M), activate(N)) |
| activate(n__0) | → | 0 | | 0 | → | n__0 |
| isNat(n__0) | → | tt | | U42(tt, M, N) | → | s(plus(activate(N), activate(M))) |
| s(X) | → | n__s(X) | | activate(X) | → | X |
| U21(tt) | → | tt | | plus(N, 0) | → | U31(isNat(N), N) |
| isNat(n__plus(V1, V2)) | → | U11(isNat(activate(V1)), activate(V2)) | | U11(tt, V2) | → | U12(isNat(activate(V2))) |
| isNat(n__s(V1)) | → | U21(isNat(activate(V1))) | | plus(N, s(M)) | → | U41(isNat(M), M, N) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| U41#(tt, M, N) | → | U42#(isNat(activate(N)), activate(M), activate(N)) |
Problem 6: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| plus#(N, s(M)) | → | U41#(isNat(M), M, N) | | U42#(tt, M, N) | → | plus#(activate(N), activate(M)) |
Rewrite Rules
| U11(tt, V2) | → | U12(isNat(activate(V2))) | | U12(tt) | → | tt |
| U21(tt) | → | tt | | U31(tt, N) | → | activate(N) |
| U41(tt, M, N) | → | U42(isNat(activate(N)), activate(M), activate(N)) | | U42(tt, M, N) | → | s(plus(activate(N), activate(M))) |
| isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNat(activate(V1)), activate(V2)) |
| isNat(n__s(V1)) | → | U21(isNat(activate(V1))) | | plus(N, 0) | → | U31(isNat(N), N) |
| plus(N, s(M)) | → | U41(isNat(M), M, N) | | 0 | → | n__0 |
| plus(X1, X2) | → | n__plus(X1, X2) | | s(X) | → | n__s(X) |
| activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(X1, X2) |
| activate(n__s(X)) | → | s(X) | | activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, n__plus, n__s, activate, isNat, 0, n__0, U42, s, tt, U41, U11, U12, U31, U21
Strategy
There are no SCCs!
Problem 5: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
| isNat#(n__s(V1)) | → | isNat#(activate(V1)) |
Rewrite Rules
| U11(tt, V2) | → | U12(isNat(activate(V2))) | | U12(tt) | → | tt |
| U21(tt) | → | tt | | U31(tt, N) | → | activate(N) |
| U41(tt, M, N) | → | U42(isNat(activate(N)), activate(M), activate(N)) | | U42(tt, M, N) | → | s(plus(activate(N), activate(M))) |
| isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNat(activate(V1)), activate(V2)) |
| isNat(n__s(V1)) | → | U21(isNat(activate(V1))) | | plus(N, 0) | → | U31(isNat(N), N) |
| plus(N, s(M)) | → | U41(isNat(M), M, N) | | 0 | → | n__0 |
| plus(X1, X2) | → | n__plus(X1, X2) | | s(X) | → | n__s(X) |
| activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(X1, X2) |
| activate(n__s(X)) | → | s(X) | | activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, n__plus, n__s, activate, isNat, 0, n__0, U42, s, tt, U41, U11, U12, U31, U21
Strategy
Polynomial Interpretation
- 0: 0
- U11(x,y): 2
- U12(x): x
- U21(x): x
- U31(x,y): y
- U41(x,y,z): z + y + 2
- U42(x,y,z): z + y + x
- activate(x): x
- isNat(x): 2
- isNat#(x): x + 1
- n__0: 0
- n__plus(x,y): y + x
- n__s(x): x + 2
- plus(x,y): y + x
- s(x): x + 2
- tt: 2
Standard Usable rules
| plus(X1, X2) | → | n__plus(X1, X2) | | activate(n__plus(X1, X2)) | → | plus(X1, X2) |
| U12(tt) | → | tt | | U31(tt, N) | → | activate(N) |
| activate(n__s(X)) | → | s(X) | | U41(tt, M, N) | → | U42(isNat(activate(N)), activate(M), activate(N)) |
| activate(n__0) | → | 0 | | 0 | → | n__0 |
| isNat(n__0) | → | tt | | s(X) | → | n__s(X) |
| U42(tt, M, N) | → | s(plus(activate(N), activate(M))) | | activate(X) | → | X |
| U21(tt) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNat(activate(V1)), activate(V2)) |
| plus(N, 0) | → | U31(isNat(N), N) | | isNat(n__s(V1)) | → | U21(isNat(activate(V1))) |
| U11(tt, V2) | → | U12(isNat(activate(V2))) | | plus(N, s(M)) | → | U41(isNat(M), M, N) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| isNat#(n__s(V1)) | → | isNat#(activate(V1)) |