YES
The TRS could be proven terminating. The proof took 44489 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (760ms).
| Problem 2 was processed with processor PolynomialLinearRange4 (1320ms).
| | Problem 3 was processed with processor DependencyGraph (205ms).
| | | Problem 4 was processed with processor PolynomialLinearRange4 (808ms).
| | | | Problem 5 was processed with processor DependencyGraph (153ms).
| | | | | Problem 6 was processed with processor PolynomialLinearRange4 (154ms).
| | | | | | Problem 8 was processed with processor DependencyGraph (0ms).
| | | | | Problem 7 was processed with processor PolynomialLinearRange4 (245ms).
| | | | | | Problem 9 was processed with processor DependencyGraph (2ms).
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U52#(tt, N) | → | activate#(N) | | plus#(N, 0) | → | U51#(isNat(N), N) |
U15#(tt, V2) | → | isNat#(activate(V2)) | | U21#(tt, V1) | → | isNatKind#(activate(V1)) |
U12#(tt, V1, V2) | → | U13#(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U64#(tt, M, N) | → | activate#(N) |
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | U13#(tt, V1, V2) | → | isNatKind#(activate(V2)) |
U14#(tt, V1, V2) | → | isNat#(activate(V1)) | | U12#(tt, V1, V2) | → | activate#(V1) |
U51#(tt, N) | → | U52#(isNatKind(activate(N)), activate(N)) | | U12#(tt, V1, V2) | → | isNatKind#(activate(V2)) |
U63#(tt, M, N) | → | activate#(N) | | isNat#(n__s(V1)) | → | activate#(V1) |
U64#(tt, M, N) | → | plus#(activate(N), activate(M)) | | isNatKind#(n__plus(V1, V2)) | → | U31#(isNatKind(activate(V1)), activate(V2)) |
U14#(tt, V1, V2) | → | activate#(V2) | | U15#(tt, V2) | → | activate#(V2) |
U11#(tt, V1, V2) | → | activate#(V1) | | U61#(tt, M, N) | → | U62#(isNatKind(activate(M)), activate(M), activate(N)) |
U22#(tt, V1) | → | activate#(V1) | | activate#(n__0) | → | 0# |
isNat#(n__plus(V1, V2)) | → | activate#(V1) | | isNatKind#(n__s(V1)) | → | isNatKind#(activate(V1)) |
isNat#(n__s(V1)) | → | U21#(isNatKind(activate(V1)), activate(V1)) | | activate#(n__plus(X1, X2)) | → | plus#(X1, X2) |
isNat#(n__s(V1)) | → | isNatKind#(activate(V1)) | | U22#(tt, V1) | → | U23#(isNat(activate(V1))) |
U63#(tt, M, N) | → | isNatKind#(activate(N)) | | U13#(tt, V1, V2) | → | activate#(V2) |
isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | U22#(tt, V1) | → | isNat#(activate(V1)) |
U14#(tt, V1, V2) | → | U15#(isNat(activate(V1)), activate(V2)) | | U12#(tt, V1, V2) | → | activate#(V2) |
isNatKind#(n__s(V1)) | → | activate#(V1) | | U13#(tt, V1, V2) | → | activate#(V1) |
U51#(tt, N) | → | isNatKind#(activate(N)) | | plus#(N, 0) | → | isNat#(N) |
isNat#(n__plus(V1, V2)) | → | activate#(V2) | | U11#(tt, V1, V2) | → | activate#(V2) |
U62#(tt, M, N) | → | activate#(N) | | U13#(tt, V1, V2) | → | U14#(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U11#(tt, V1, V2) | → | U12#(isNatKind(activate(V1)), activate(V1), activate(V2)) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V2) |
U62#(tt, M, N) | → | activate#(M) | | U31#(tt, V2) | → | isNatKind#(activate(V2)) |
U64#(tt, M, N) | → | activate#(M) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
U62#(tt, M, N) | → | isNat#(activate(N)) | | U61#(tt, M, N) | → | activate#(N) |
U11#(tt, V1, V2) | → | isNatKind#(activate(V1)) | | U21#(tt, V1) | → | activate#(V1) |
U63#(tt, M, N) | → | U64#(isNatKind(activate(N)), activate(M), activate(N)) | | plus#(N, s(M)) | → | U61#(isNat(M), M, N) |
U63#(tt, M, N) | → | activate#(M) | | U61#(tt, M, N) | → | isNatKind#(activate(M)) |
U15#(tt, V2) | → | U16#(isNat(activate(V2))) | | isNat#(n__plus(V1, V2)) | → | U11#(isNatKind(activate(V1)), activate(V1), activate(V2)) |
U64#(tt, M, N) | → | s#(plus(activate(N), activate(M))) | | activate#(n__s(X)) | → | s#(X) |
U62#(tt, M, N) | → | U63#(isNat(activate(N)), activate(M), activate(N)) | | U31#(tt, V2) | → | U32#(isNatKind(activate(V2))) |
plus#(N, s(M)) | → | isNat#(M) | | U51#(tt, N) | → | activate#(N) |
U14#(tt, V1, V2) | → | activate#(V1) | | U61#(tt, M, N) | → | activate#(M) |
isNatKind#(n__s(V1)) | → | U41#(isNatKind(activate(V1))) | | U31#(tt, V2) | → | activate#(V2) |
U21#(tt, V1) | → | U22#(isNatKind(activate(V1)), activate(V1)) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U12(tt, V1, V2) | → | U13(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U13(tt, V1, V2) | → | U14(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U14(tt, V1, V2) | → | U15(isNat(activate(V1)), activate(V2)) |
U15(tt, V2) | → | U16(isNat(activate(V2))) | | U16(tt) | → | tt |
U21(tt, V1) | → | U22(isNatKind(activate(V1)), activate(V1)) | | U22(tt, V1) | → | U23(isNat(activate(V1))) |
U23(tt) | → | tt | | U31(tt, V2) | → | U32(isNatKind(activate(V2))) |
U32(tt) | → | tt | | U41(tt) | → | tt |
U51(tt, N) | → | U52(isNatKind(activate(N)), activate(N)) | | U52(tt, N) | → | activate(N) |
U61(tt, M, N) | → | U62(isNatKind(activate(M)), activate(M), activate(N)) | | U62(tt, M, N) | → | U63(isNat(activate(N)), activate(M), activate(N)) |
U63(tt, M, N) | → | U64(isNatKind(activate(N)), activate(M), activate(N)) | | U64(tt, M, N) | → | s(plus(activate(N), activate(M))) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNatKind(activate(V1)), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | U31(isNatKind(activate(V1)), activate(V2)) | | isNatKind(n__s(V1)) | → | U41(isNatKind(activate(V1))) |
plus(N, 0) | → | U51(isNat(N), N) | | plus(N, s(M)) | → | U61(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: n__plus, U64, activate, isNat, n__s, U63, U62, n__0, U61, U41, U23, U21, U22, plus, isNatKind, 0, U14, U51, s, U15, tt, U16, U52, U11, U12, U31, U13, U32
Strategy
The following SCCs where found
U52#(tt, N) → activate#(N) | plus#(N, 0) → U51#(isNat(N), N) |
U15#(tt, V2) → isNat#(activate(V2)) | U21#(tt, V1) → isNatKind#(activate(V1)) |
U12#(tt, V1, V2) → U13#(isNatKind(activate(V2)), activate(V1), activate(V2)) | U64#(tt, M, N) → activate#(N) |
isNatKind#(n__plus(V1, V2)) → isNatKind#(activate(V1)) | U13#(tt, V1, V2) → isNatKind#(activate(V2)) |
U14#(tt, V1, V2) → isNat#(activate(V1)) | U12#(tt, V1, V2) → activate#(V1) |
U51#(tt, N) → U52#(isNatKind(activate(N)), activate(N)) | U12#(tt, V1, V2) → isNatKind#(activate(V2)) |
U63#(tt, M, N) → activate#(N) | isNat#(n__s(V1)) → activate#(V1) |
U64#(tt, M, N) → plus#(activate(N), activate(M)) | isNatKind#(n__plus(V1, V2)) → U31#(isNatKind(activate(V1)), activate(V2)) |
U14#(tt, V1, V2) → activate#(V2) | U15#(tt, V2) → activate#(V2) |
U11#(tt, V1, V2) → activate#(V1) | U61#(tt, M, N) → U62#(isNatKind(activate(M)), activate(M), activate(N)) |
U22#(tt, V1) → activate#(V1) | isNat#(n__plus(V1, V2)) → activate#(V1) |
isNatKind#(n__s(V1)) → isNatKind#(activate(V1)) | isNat#(n__s(V1)) → U21#(isNatKind(activate(V1)), activate(V1)) |
activate#(n__plus(X1, X2)) → plus#(X1, X2) | isNat#(n__s(V1)) → isNatKind#(activate(V1)) |
U63#(tt, M, N) → isNatKind#(activate(N)) | U13#(tt, V1, V2) → activate#(V2) |
isNat#(n__plus(V1, V2)) → isNatKind#(activate(V1)) | U22#(tt, V1) → isNat#(activate(V1)) |
U14#(tt, V1, V2) → U15#(isNat(activate(V1)), activate(V2)) | U12#(tt, V1, V2) → activate#(V2) |
isNatKind#(n__s(V1)) → activate#(V1) | U51#(tt, N) → isNatKind#(activate(N)) |
U13#(tt, V1, V2) → activate#(V1) | plus#(N, 0) → isNat#(N) |
isNat#(n__plus(V1, V2)) → activate#(V2) | U11#(tt, V1, V2) → activate#(V2) |
U62#(tt, M, N) → activate#(N) | U13#(tt, V1, V2) → U14#(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U11#(tt, V1, V2) → U12#(isNatKind(activate(V1)), activate(V1), activate(V2)) | isNatKind#(n__plus(V1, V2)) → activate#(V2) |
U62#(tt, M, N) → activate#(M) | U31#(tt, V2) → isNatKind#(activate(V2)) |
U64#(tt, M, N) → activate#(M) | isNatKind#(n__plus(V1, V2)) → activate#(V1) |
U62#(tt, M, N) → isNat#(activate(N)) | U11#(tt, V1, V2) → isNatKind#(activate(V1)) |
U61#(tt, M, N) → activate#(N) | U21#(tt, V1) → activate#(V1) |
plus#(N, s(M)) → U61#(isNat(M), M, N) | U63#(tt, M, N) → U64#(isNatKind(activate(N)), activate(M), activate(N)) |
U63#(tt, M, N) → activate#(M) | U61#(tt, M, N) → isNatKind#(activate(M)) |
isNat#(n__plus(V1, V2)) → U11#(isNatKind(activate(V1)), activate(V1), activate(V2)) | U62#(tt, M, N) → U63#(isNat(activate(N)), activate(M), activate(N)) |
plus#(N, s(M)) → isNat#(M) | U51#(tt, N) → activate#(N) |
U14#(tt, V1, V2) → activate#(V1) | U61#(tt, M, N) → activate#(M) |
U31#(tt, V2) → activate#(V2) | U21#(tt, V1) → U22#(isNatKind(activate(V1)), activate(V1)) |
Problem 2: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
U52#(tt, N) | → | activate#(N) | | plus#(N, 0) | → | U51#(isNat(N), N) |
U15#(tt, V2) | → | isNat#(activate(V2)) | | U21#(tt, V1) | → | isNatKind#(activate(V1)) |
U12#(tt, V1, V2) | → | U13#(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U64#(tt, M, N) | → | activate#(N) |
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | U13#(tt, V1, V2) | → | isNatKind#(activate(V2)) |
U14#(tt, V1, V2) | → | isNat#(activate(V1)) | | U51#(tt, N) | → | U52#(isNatKind(activate(N)), activate(N)) |
U12#(tt, V1, V2) | → | activate#(V1) | | U63#(tt, M, N) | → | activate#(N) |
U12#(tt, V1, V2) | → | isNatKind#(activate(V2)) | | isNat#(n__s(V1)) | → | activate#(V1) |
U64#(tt, M, N) | → | plus#(activate(N), activate(M)) | | isNatKind#(n__plus(V1, V2)) | → | U31#(isNatKind(activate(V1)), activate(V2)) |
U14#(tt, V1, V2) | → | activate#(V2) | | U15#(tt, V2) | → | activate#(V2) |
U11#(tt, V1, V2) | → | activate#(V1) | | U61#(tt, M, N) | → | U62#(isNatKind(activate(M)), activate(M), activate(N)) |
U22#(tt, V1) | → | activate#(V1) | | isNat#(n__plus(V1, V2)) | → | activate#(V1) |
isNatKind#(n__s(V1)) | → | isNatKind#(activate(V1)) | | isNat#(n__s(V1)) | → | U21#(isNatKind(activate(V1)), activate(V1)) |
isNat#(n__s(V1)) | → | isNatKind#(activate(V1)) | | activate#(n__plus(X1, X2)) | → | plus#(X1, X2) |
U63#(tt, M, N) | → | isNatKind#(activate(N)) | | U13#(tt, V1, V2) | → | activate#(V2) |
isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | U22#(tt, V1) | → | isNat#(activate(V1)) |
U14#(tt, V1, V2) | → | U15#(isNat(activate(V1)), activate(V2)) | | U12#(tt, V1, V2) | → | activate#(V2) |
isNatKind#(n__s(V1)) | → | activate#(V1) | | U13#(tt, V1, V2) | → | activate#(V1) |
U51#(tt, N) | → | isNatKind#(activate(N)) | | isNat#(n__plus(V1, V2)) | → | activate#(V2) |
plus#(N, 0) | → | isNat#(N) | | U11#(tt, V1, V2) | → | activate#(V2) |
U62#(tt, M, N) | → | activate#(N) | | U13#(tt, V1, V2) | → | U14#(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U11#(tt, V1, V2) | → | U12#(isNatKind(activate(V1)), activate(V1), activate(V2)) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V2) |
U62#(tt, M, N) | → | activate#(M) | | U64#(tt, M, N) | → | activate#(M) |
U31#(tt, V2) | → | isNatKind#(activate(V2)) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
U62#(tt, M, N) | → | isNat#(activate(N)) | | U61#(tt, M, N) | → | activate#(N) |
U11#(tt, V1, V2) | → | isNatKind#(activate(V1)) | | U21#(tt, V1) | → | activate#(V1) |
plus#(N, s(M)) | → | U61#(isNat(M), M, N) | | U63#(tt, M, N) | → | U64#(isNatKind(activate(N)), activate(M), activate(N)) |
U63#(tt, M, N) | → | activate#(M) | | U61#(tt, M, N) | → | isNatKind#(activate(M)) |
isNat#(n__plus(V1, V2)) | → | U11#(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U62#(tt, M, N) | → | U63#(isNat(activate(N)), activate(M), activate(N)) |
plus#(N, s(M)) | → | isNat#(M) | | U51#(tt, N) | → | activate#(N) |
U14#(tt, V1, V2) | → | activate#(V1) | | U61#(tt, M, N) | → | activate#(M) |
U31#(tt, V2) | → | activate#(V2) | | U21#(tt, V1) | → | U22#(isNatKind(activate(V1)), activate(V1)) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U12(tt, V1, V2) | → | U13(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U13(tt, V1, V2) | → | U14(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U14(tt, V1, V2) | → | U15(isNat(activate(V1)), activate(V2)) |
U15(tt, V2) | → | U16(isNat(activate(V2))) | | U16(tt) | → | tt |
U21(tt, V1) | → | U22(isNatKind(activate(V1)), activate(V1)) | | U22(tt, V1) | → | U23(isNat(activate(V1))) |
U23(tt) | → | tt | | U31(tt, V2) | → | U32(isNatKind(activate(V2))) |
U32(tt) | → | tt | | U41(tt) | → | tt |
U51(tt, N) | → | U52(isNatKind(activate(N)), activate(N)) | | U52(tt, N) | → | activate(N) |
U61(tt, M, N) | → | U62(isNatKind(activate(M)), activate(M), activate(N)) | | U62(tt, M, N) | → | U63(isNat(activate(N)), activate(M), activate(N)) |
U63(tt, M, N) | → | U64(isNatKind(activate(N)), activate(M), activate(N)) | | U64(tt, M, N) | → | s(plus(activate(N), activate(M))) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNatKind(activate(V1)), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | U31(isNatKind(activate(V1)), activate(V2)) | | isNatKind(n__s(V1)) | → | U41(isNatKind(activate(V1))) |
plus(N, 0) | → | U51(isNat(N), N) | | plus(N, s(M)) | → | U61(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: n__plus, U64, activate, isNat, n__s, U63, U62, n__0, U61, U41, U23, U21, U22, plus, isNatKind, 0, U14, U51, s, U15, tt, U16, U52, U11, U12, U31, U13, U32
Strategy
Polynomial Interpretation
- 0: 1
- U11(x,y,z): 0
- U11#(x,y,z): 2z + 2y
- U12(x,y,z): 0
- U12#(x,y,z): 2z + 2y
- U13(x,y,z): 0
- U13#(x,y,z): 2z + 2y
- U14(x,y,z): 0
- U14#(x,y,z): 2z + 2y
- U15(x,y): 0
- U15#(x,y): 2y
- U16(x): 0
- U21(x,y): 0
- U21#(x,y): 2y
- U22(x,y): 0
- U22#(x,y): 2y
- U23(x): 0
- U31(x,y): 0
- U31#(x,y): 2y
- U32(x): 0
- U41(x): 0
- U51(x,y): y
- U51#(x,y): 2y + 2
- U52(x,y): y
- U52#(x,y): 2y + 1
- U61(x,y,z): z + y
- U61#(x,y,z): 2z + 2y
- U62(x,y,z): z + y
- U62#(x,y,z): 2z + 2y
- U63(x,y,z): z + y
- U63#(x,y,z): 2z + 2y
- U64(x,y,z): z + y
- U64#(x,y,z): 2z + 2y
- activate(x): x
- activate#(x): 2x
- isNat(x): 0
- isNat#(x): 2x
- isNatKind(x): 0
- isNatKind#(x): 2x
- n__0: 1
- n__plus(x,y): y + x
- n__s(x): x
- plus(x,y): y + x
- plus#(x,y): 2y + 2x
- s(x): x
- tt: 0
Standard Usable rules
U51(tt, N) | → | U52(isNatKind(activate(N)), activate(N)) | | U21(tt, V1) | → | U22(isNatKind(activate(V1)), activate(V1)) |
activate(n__s(X)) | → | s(X) | | U31(tt, V2) | → | U32(isNatKind(activate(V2))) |
activate(n__0) | → | 0 | | U41(tt) | → | tt |
isNat(n__0) | → | tt | | U64(tt, M, N) | → | s(plus(activate(N), activate(M))) |
isNat(n__plus(V1, V2)) | → | U11(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U12(tt, V1, V2) | → | U13(isNatKind(activate(V2)), activate(V1), activate(V2)) |
s(X) | → | n__s(X) | | U32(tt) | → | tt |
isNatKind(n__plus(V1, V2)) | → | U31(isNatKind(activate(V1)), activate(V2)) | | plus(X1, X2) | → | n__plus(X1, X2) |
plus(N, 0) | → | U51(isNat(N), N) | | isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) |
activate(n__plus(X1, X2)) | → | plus(X1, X2) | | U22(tt, V1) | → | U23(isNat(activate(V1))) |
U23(tt) | → | tt | | isNatKind(n__s(V1)) | → | U41(isNatKind(activate(V1))) |
U11(tt, V1, V2) | → | U12(isNatKind(activate(V1)), activate(V1), activate(V2)) | | plus(N, s(M)) | → | U61(isNat(M), M, N) |
U15(tt, V2) | → | U16(isNat(activate(V2))) | | 0 | → | n__0 |
isNatKind(n__0) | → | tt | | U62(tt, M, N) | → | U63(isNat(activate(N)), activate(M), activate(N)) |
U14(tt, V1, V2) | → | U15(isNat(activate(V1)), activate(V2)) | | U16(tt) | → | tt |
U61(tt, M, N) | → | U62(isNatKind(activate(M)), activate(M), activate(N)) | | U63(tt, M, N) | → | U64(isNatKind(activate(N)), activate(M), activate(N)) |
activate(X) | → | X | | U13(tt, V1, V2) | → | U14(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U52(tt, N) | → | activate(N) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
U52#(tt, N) | → | activate#(N) | | U51#(tt, N) | → | U52#(isNatKind(activate(N)), activate(N)) |
U51#(tt, N) | → | isNatKind#(activate(N)) | | plus#(N, 0) | → | isNat#(N) |
U51#(tt, N) | → | activate#(N) |
Problem 3: DependencyGraph
Dependency Pair Problem
Dependency Pairs
plus#(N, 0) | → | U51#(isNat(N), N) | | U15#(tt, V2) | → | isNat#(activate(V2)) |
U21#(tt, V1) | → | isNatKind#(activate(V1)) | | U12#(tt, V1, V2) | → | U13#(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U64#(tt, M, N) | → | activate#(N) | | isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) |
U13#(tt, V1, V2) | → | isNatKind#(activate(V2)) | | U14#(tt, V1, V2) | → | isNat#(activate(V1)) |
U12#(tt, V1, V2) | → | activate#(V1) | | U63#(tt, M, N) | → | activate#(N) |
U12#(tt, V1, V2) | → | isNatKind#(activate(V2)) | | isNat#(n__s(V1)) | → | activate#(V1) |
U64#(tt, M, N) | → | plus#(activate(N), activate(M)) | | isNatKind#(n__plus(V1, V2)) | → | U31#(isNatKind(activate(V1)), activate(V2)) |
U14#(tt, V1, V2) | → | activate#(V2) | | U15#(tt, V2) | → | activate#(V2) |
U11#(tt, V1, V2) | → | activate#(V1) | | U61#(tt, M, N) | → | U62#(isNatKind(activate(M)), activate(M), activate(N)) |
U22#(tt, V1) | → | activate#(V1) | | isNat#(n__plus(V1, V2)) | → | activate#(V1) |
isNatKind#(n__s(V1)) | → | isNatKind#(activate(V1)) | | isNat#(n__s(V1)) | → | U21#(isNatKind(activate(V1)), activate(V1)) |
activate#(n__plus(X1, X2)) | → | plus#(X1, X2) | | isNat#(n__s(V1)) | → | isNatKind#(activate(V1)) |
U63#(tt, M, N) | → | isNatKind#(activate(N)) | | U13#(tt, V1, V2) | → | activate#(V2) |
isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | U22#(tt, V1) | → | isNat#(activate(V1)) |
U14#(tt, V1, V2) | → | U15#(isNat(activate(V1)), activate(V2)) | | U12#(tt, V1, V2) | → | activate#(V2) |
isNatKind#(n__s(V1)) | → | activate#(V1) | | U13#(tt, V1, V2) | → | activate#(V1) |
isNat#(n__plus(V1, V2)) | → | activate#(V2) | | U11#(tt, V1, V2) | → | activate#(V2) |
U62#(tt, M, N) | → | activate#(N) | | U13#(tt, V1, V2) | → | U14#(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U11#(tt, V1, V2) | → | U12#(isNatKind(activate(V1)), activate(V1), activate(V2)) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V2) |
U62#(tt, M, N) | → | activate#(M) | | U64#(tt, M, N) | → | activate#(M) |
U31#(tt, V2) | → | isNatKind#(activate(V2)) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
U62#(tt, M, N) | → | isNat#(activate(N)) | | U61#(tt, M, N) | → | activate#(N) |
U11#(tt, V1, V2) | → | isNatKind#(activate(V1)) | | U21#(tt, V1) | → | activate#(V1) |
plus#(N, s(M)) | → | U61#(isNat(M), M, N) | | U63#(tt, M, N) | → | U64#(isNatKind(activate(N)), activate(M), activate(N)) |
U63#(tt, M, N) | → | activate#(M) | | U61#(tt, M, N) | → | isNatKind#(activate(M)) |
isNat#(n__plus(V1, V2)) | → | U11#(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U62#(tt, M, N) | → | U63#(isNat(activate(N)), activate(M), activate(N)) |
plus#(N, s(M)) | → | isNat#(M) | | U14#(tt, V1, V2) | → | activate#(V1) |
U61#(tt, M, N) | → | activate#(M) | | U31#(tt, V2) | → | activate#(V2) |
U21#(tt, V1) | → | U22#(isNatKind(activate(V1)), activate(V1)) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U12(tt, V1, V2) | → | U13(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U13(tt, V1, V2) | → | U14(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U14(tt, V1, V2) | → | U15(isNat(activate(V1)), activate(V2)) |
U15(tt, V2) | → | U16(isNat(activate(V2))) | | U16(tt) | → | tt |
U21(tt, V1) | → | U22(isNatKind(activate(V1)), activate(V1)) | | U22(tt, V1) | → | U23(isNat(activate(V1))) |
U23(tt) | → | tt | | U31(tt, V2) | → | U32(isNatKind(activate(V2))) |
U32(tt) | → | tt | | U41(tt) | → | tt |
U51(tt, N) | → | U52(isNatKind(activate(N)), activate(N)) | | U52(tt, N) | → | activate(N) |
U61(tt, M, N) | → | U62(isNatKind(activate(M)), activate(M), activate(N)) | | U62(tt, M, N) | → | U63(isNat(activate(N)), activate(M), activate(N)) |
U63(tt, M, N) | → | U64(isNatKind(activate(N)), activate(M), activate(N)) | | U64(tt, M, N) | → | s(plus(activate(N), activate(M))) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNatKind(activate(V1)), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | U31(isNatKind(activate(V1)), activate(V2)) | | isNatKind(n__s(V1)) | → | U41(isNatKind(activate(V1))) |
plus(N, 0) | → | U51(isNat(N), N) | | plus(N, s(M)) | → | U61(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: n__plus, n__s, isNat, activate, U64, U63, U62, U61, n__0, U41, U23, U21, U22, plus, isNatKind, 0, U14, U51, s, U15, tt, U16, U52, U11, U12, U13, U31, U32
Strategy
The following SCCs where found
U15#(tt, V2) → isNat#(activate(V2)) | U21#(tt, V1) → isNatKind#(activate(V1)) |
U12#(tt, V1, V2) → U13#(isNatKind(activate(V2)), activate(V1), activate(V2)) | U64#(tt, M, N) → activate#(N) |
isNatKind#(n__plus(V1, V2)) → isNatKind#(activate(V1)) | U13#(tt, V1, V2) → isNatKind#(activate(V2)) |
U14#(tt, V1, V2) → isNat#(activate(V1)) | U12#(tt, V1, V2) → activate#(V1) |
U12#(tt, V1, V2) → isNatKind#(activate(V2)) | U63#(tt, M, N) → activate#(N) |
isNat#(n__s(V1)) → activate#(V1) | U64#(tt, M, N) → plus#(activate(N), activate(M)) |
isNatKind#(n__plus(V1, V2)) → U31#(isNatKind(activate(V1)), activate(V2)) | U14#(tt, V1, V2) → activate#(V2) |
U15#(tt, V2) → activate#(V2) | U11#(tt, V1, V2) → activate#(V1) |
U61#(tt, M, N) → U62#(isNatKind(activate(M)), activate(M), activate(N)) | U22#(tt, V1) → activate#(V1) |
isNat#(n__plus(V1, V2)) → activate#(V1) | isNatKind#(n__s(V1)) → isNatKind#(activate(V1)) |
isNat#(n__s(V1)) → U21#(isNatKind(activate(V1)), activate(V1)) | isNat#(n__s(V1)) → isNatKind#(activate(V1)) |
activate#(n__plus(X1, X2)) → plus#(X1, X2) | U63#(tt, M, N) → isNatKind#(activate(N)) |
U13#(tt, V1, V2) → activate#(V2) | isNat#(n__plus(V1, V2)) → isNatKind#(activate(V1)) |
U22#(tt, V1) → isNat#(activate(V1)) | U14#(tt, V1, V2) → U15#(isNat(activate(V1)), activate(V2)) |
U12#(tt, V1, V2) → activate#(V2) | isNatKind#(n__s(V1)) → activate#(V1) |
U13#(tt, V1, V2) → activate#(V1) | isNat#(n__plus(V1, V2)) → activate#(V2) |
U11#(tt, V1, V2) → activate#(V2) | U62#(tt, M, N) → activate#(N) |
U13#(tt, V1, V2) → U14#(isNatKind(activate(V2)), activate(V1), activate(V2)) | U11#(tt, V1, V2) → U12#(isNatKind(activate(V1)), activate(V1), activate(V2)) |
isNatKind#(n__plus(V1, V2)) → activate#(V2) | U62#(tt, M, N) → activate#(M) |
U31#(tt, V2) → isNatKind#(activate(V2)) | U64#(tt, M, N) → activate#(M) |
isNatKind#(n__plus(V1, V2)) → activate#(V1) | U62#(tt, M, N) → isNat#(activate(N)) |
U11#(tt, V1, V2) → isNatKind#(activate(V1)) | U61#(tt, M, N) → activate#(N) |
U21#(tt, V1) → activate#(V1) | U63#(tt, M, N) → U64#(isNatKind(activate(N)), activate(M), activate(N)) |
plus#(N, s(M)) → U61#(isNat(M), M, N) | U63#(tt, M, N) → activate#(M) |
U61#(tt, M, N) → isNatKind#(activate(M)) | isNat#(n__plus(V1, V2)) → U11#(isNatKind(activate(V1)), activate(V1), activate(V2)) |
U62#(tt, M, N) → U63#(isNat(activate(N)), activate(M), activate(N)) | plus#(N, s(M)) → isNat#(M) |
U14#(tt, V1, V2) → activate#(V1) | U61#(tt, M, N) → activate#(M) |
U31#(tt, V2) → activate#(V2) | U21#(tt, V1) → U22#(isNatKind(activate(V1)), activate(V1)) |
Problem 4: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
U15#(tt, V2) | → | isNat#(activate(V2)) | | U21#(tt, V1) | → | isNatKind#(activate(V1)) |
U12#(tt, V1, V2) | → | U13#(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U64#(tt, M, N) | → | activate#(N) |
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | U13#(tt, V1, V2) | → | isNatKind#(activate(V2)) |
U14#(tt, V1, V2) | → | isNat#(activate(V1)) | | U12#(tt, V1, V2) | → | activate#(V1) |
U63#(tt, M, N) | → | activate#(N) | | U12#(tt, V1, V2) | → | isNatKind#(activate(V2)) |
isNat#(n__s(V1)) | → | activate#(V1) | | U64#(tt, M, N) | → | plus#(activate(N), activate(M)) |
isNatKind#(n__plus(V1, V2)) | → | U31#(isNatKind(activate(V1)), activate(V2)) | | U14#(tt, V1, V2) | → | activate#(V2) |
U15#(tt, V2) | → | activate#(V2) | | U11#(tt, V1, V2) | → | activate#(V1) |
U61#(tt, M, N) | → | U62#(isNatKind(activate(M)), activate(M), activate(N)) | | U22#(tt, V1) | → | activate#(V1) |
isNat#(n__plus(V1, V2)) | → | activate#(V1) | | isNatKind#(n__s(V1)) | → | isNatKind#(activate(V1)) |
isNat#(n__s(V1)) | → | U21#(isNatKind(activate(V1)), activate(V1)) | | isNat#(n__s(V1)) | → | isNatKind#(activate(V1)) |
activate#(n__plus(X1, X2)) | → | plus#(X1, X2) | | U63#(tt, M, N) | → | isNatKind#(activate(N)) |
U13#(tt, V1, V2) | → | activate#(V2) | | isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) |
U22#(tt, V1) | → | isNat#(activate(V1)) | | U14#(tt, V1, V2) | → | U15#(isNat(activate(V1)), activate(V2)) |
U12#(tt, V1, V2) | → | activate#(V2) | | isNatKind#(n__s(V1)) | → | activate#(V1) |
U13#(tt, V1, V2) | → | activate#(V1) | | isNat#(n__plus(V1, V2)) | → | activate#(V2) |
U11#(tt, V1, V2) | → | activate#(V2) | | U62#(tt, M, N) | → | activate#(N) |
U13#(tt, V1, V2) | → | U14#(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U11#(tt, V1, V2) | → | U12#(isNatKind(activate(V1)), activate(V1), activate(V2)) |
isNatKind#(n__plus(V1, V2)) | → | activate#(V2) | | U62#(tt, M, N) | → | activate#(M) |
U64#(tt, M, N) | → | activate#(M) | | U31#(tt, V2) | → | isNatKind#(activate(V2)) |
isNatKind#(n__plus(V1, V2)) | → | activate#(V1) | | U62#(tt, M, N) | → | isNat#(activate(N)) |
U61#(tt, M, N) | → | activate#(N) | | U11#(tt, V1, V2) | → | isNatKind#(activate(V1)) |
U21#(tt, V1) | → | activate#(V1) | | plus#(N, s(M)) | → | U61#(isNat(M), M, N) |
U63#(tt, M, N) | → | U64#(isNatKind(activate(N)), activate(M), activate(N)) | | U63#(tt, M, N) | → | activate#(M) |
U61#(tt, M, N) | → | isNatKind#(activate(M)) | | isNat#(n__plus(V1, V2)) | → | U11#(isNatKind(activate(V1)), activate(V1), activate(V2)) |
U62#(tt, M, N) | → | U63#(isNat(activate(N)), activate(M), activate(N)) | | plus#(N, s(M)) | → | isNat#(M) |
U14#(tt, V1, V2) | → | activate#(V1) | | U61#(tt, M, N) | → | activate#(M) |
U31#(tt, V2) | → | activate#(V2) | | U21#(tt, V1) | → | U22#(isNatKind(activate(V1)), activate(V1)) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U12(tt, V1, V2) | → | U13(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U13(tt, V1, V2) | → | U14(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U14(tt, V1, V2) | → | U15(isNat(activate(V1)), activate(V2)) |
U15(tt, V2) | → | U16(isNat(activate(V2))) | | U16(tt) | → | tt |
U21(tt, V1) | → | U22(isNatKind(activate(V1)), activate(V1)) | | U22(tt, V1) | → | U23(isNat(activate(V1))) |
U23(tt) | → | tt | | U31(tt, V2) | → | U32(isNatKind(activate(V2))) |
U32(tt) | → | tt | | U41(tt) | → | tt |
U51(tt, N) | → | U52(isNatKind(activate(N)), activate(N)) | | U52(tt, N) | → | activate(N) |
U61(tt, M, N) | → | U62(isNatKind(activate(M)), activate(M), activate(N)) | | U62(tt, M, N) | → | U63(isNat(activate(N)), activate(M), activate(N)) |
U63(tt, M, N) | → | U64(isNatKind(activate(N)), activate(M), activate(N)) | | U64(tt, M, N) | → | s(plus(activate(N), activate(M))) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNatKind(activate(V1)), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | U31(isNatKind(activate(V1)), activate(V2)) | | isNatKind(n__s(V1)) | → | U41(isNatKind(activate(V1))) |
plus(N, 0) | → | U51(isNat(N), N) | | plus(N, s(M)) | → | U61(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: n__plus, n__s, isNat, activate, U64, U63, U62, U61, n__0, U41, U23, U21, U22, plus, isNatKind, 0, U14, U51, s, U15, tt, U16, U52, U11, U12, U13, U31, U32
Strategy
Polynomial Interpretation
- 0: 0
- U11(x,y,z): 1
- U11#(x,y,z): 2z + 2y
- U12(x,y,z): 1
- U12#(x,y,z): 2z + 2y
- U13(x,y,z): 1
- U13#(x,y,z): 2z + 2y
- U14(x,y,z): 0
- U14#(x,y,z): 2z + 2y
- U15(x,y): 0
- U15#(x,y): 2y
- U16(x): 0
- U21(x,y): 1
- U21#(x,y): 2y
- U22(x,y): 0
- U22#(x,y): 2y
- U23(x): 0
- U31(x,y): 0
- U31#(x,y): 2y
- U32(x): 0
- U41(x): 0
- U51(x,y): y
- U52(x,y): y
- U61(x,y,z): 2z + 2y + 2
- U61#(x,y,z): 2z + 2y
- U62(x,y,z): 2z + 2y + 2
- U62#(x,y,z): 2z + 2y
- U63(x,y,z): 2z + 2y + 1
- U63#(x,y,z): 2z + 2y
- U64(x,y,z): 2z + 2y + 1
- U64#(x,y,z): 2z + 2y
- activate(x): x
- activate#(x): 2x
- isNat(x): 1
- isNat#(x): 2x
- isNatKind(x): 0
- isNatKind#(x): 2x
- n__0: 0
- n__plus(x,y): 2y + 2x
- n__s(x): x + 1
- plus(x,y): 2y + 2x
- plus#(x,y): 2y + 2x
- s(x): x + 1
- tt: 0
Standard Usable rules
U51(tt, N) | → | U52(isNatKind(activate(N)), activate(N)) | | U21(tt, V1) | → | U22(isNatKind(activate(V1)), activate(V1)) |
activate(n__s(X)) | → | s(X) | | U31(tt, V2) | → | U32(isNatKind(activate(V2))) |
activate(n__0) | → | 0 | | U41(tt) | → | tt |
isNat(n__0) | → | tt | | U64(tt, M, N) | → | s(plus(activate(N), activate(M))) |
isNat(n__plus(V1, V2)) | → | U11(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U12(tt, V1, V2) | → | U13(isNatKind(activate(V2)), activate(V1), activate(V2)) |
s(X) | → | n__s(X) | | U32(tt) | → | tt |
isNatKind(n__plus(V1, V2)) | → | U31(isNatKind(activate(V1)), activate(V2)) | | plus(X1, X2) | → | n__plus(X1, X2) |
plus(N, 0) | → | U51(isNat(N), N) | | isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) |
activate(n__plus(X1, X2)) | → | plus(X1, X2) | | U22(tt, V1) | → | U23(isNat(activate(V1))) |
U23(tt) | → | tt | | isNatKind(n__s(V1)) | → | U41(isNatKind(activate(V1))) |
U11(tt, V1, V2) | → | U12(isNatKind(activate(V1)), activate(V1), activate(V2)) | | plus(N, s(M)) | → | U61(isNat(M), M, N) |
U15(tt, V2) | → | U16(isNat(activate(V2))) | | 0 | → | n__0 |
isNatKind(n__0) | → | tt | | U62(tt, M, N) | → | U63(isNat(activate(N)), activate(M), activate(N)) |
U14(tt, V1, V2) | → | U15(isNat(activate(V1)), activate(V2)) | | U16(tt) | → | tt |
U61(tt, M, N) | → | U62(isNatKind(activate(M)), activate(M), activate(N)) | | U63(tt, M, N) | → | U64(isNatKind(activate(N)), activate(M), activate(N)) |
activate(X) | → | X | | U13(tt, V1, V2) | → | U14(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U52(tt, N) | → | activate(N) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
isNat#(n__s(V1)) | → | activate#(V1) | | isNatKind#(n__s(V1)) | → | isNatKind#(activate(V1)) |
isNat#(n__s(V1)) | → | U21#(isNatKind(activate(V1)), activate(V1)) | | isNat#(n__s(V1)) | → | isNatKind#(activate(V1)) |
isNatKind#(n__s(V1)) | → | activate#(V1) | | plus#(N, s(M)) | → | U61#(isNat(M), M, N) |
plus#(N, s(M)) | → | isNat#(M) |
Problem 5: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U15#(tt, V2) | → | isNat#(activate(V2)) | | U21#(tt, V1) | → | isNatKind#(activate(V1)) |
U12#(tt, V1, V2) | → | U13#(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U64#(tt, M, N) | → | activate#(N) |
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | U13#(tt, V1, V2) | → | isNatKind#(activate(V2)) |
U14#(tt, V1, V2) | → | isNat#(activate(V1)) | | U12#(tt, V1, V2) | → | activate#(V1) |
U63#(tt, M, N) | → | activate#(N) | | U12#(tt, V1, V2) | → | isNatKind#(activate(V2)) |
U64#(tt, M, N) | → | plus#(activate(N), activate(M)) | | isNatKind#(n__plus(V1, V2)) | → | U31#(isNatKind(activate(V1)), activate(V2)) |
U14#(tt, V1, V2) | → | activate#(V2) | | U15#(tt, V2) | → | activate#(V2) |
U11#(tt, V1, V2) | → | activate#(V1) | | U61#(tt, M, N) | → | U62#(isNatKind(activate(M)), activate(M), activate(N)) |
U22#(tt, V1) | → | activate#(V1) | | isNat#(n__plus(V1, V2)) | → | activate#(V1) |
activate#(n__plus(X1, X2)) | → | plus#(X1, X2) | | U63#(tt, M, N) | → | isNatKind#(activate(N)) |
U13#(tt, V1, V2) | → | activate#(V2) | | isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) |
U22#(tt, V1) | → | isNat#(activate(V1)) | | U14#(tt, V1, V2) | → | U15#(isNat(activate(V1)), activate(V2)) |
U12#(tt, V1, V2) | → | activate#(V2) | | U13#(tt, V1, V2) | → | activate#(V1) |
isNat#(n__plus(V1, V2)) | → | activate#(V2) | | U11#(tt, V1, V2) | → | activate#(V2) |
U62#(tt, M, N) | → | activate#(N) | | U13#(tt, V1, V2) | → | U14#(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U11#(tt, V1, V2) | → | U12#(isNatKind(activate(V1)), activate(V1), activate(V2)) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V2) |
U62#(tt, M, N) | → | activate#(M) | | U64#(tt, M, N) | → | activate#(M) |
U31#(tt, V2) | → | isNatKind#(activate(V2)) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
U62#(tt, M, N) | → | isNat#(activate(N)) | | U61#(tt, M, N) | → | activate#(N) |
U11#(tt, V1, V2) | → | isNatKind#(activate(V1)) | | U21#(tt, V1) | → | activate#(V1) |
U63#(tt, M, N) | → | U64#(isNatKind(activate(N)), activate(M), activate(N)) | | U63#(tt, M, N) | → | activate#(M) |
U61#(tt, M, N) | → | isNatKind#(activate(M)) | | isNat#(n__plus(V1, V2)) | → | U11#(isNatKind(activate(V1)), activate(V1), activate(V2)) |
U62#(tt, M, N) | → | U63#(isNat(activate(N)), activate(M), activate(N)) | | U14#(tt, V1, V2) | → | activate#(V1) |
U61#(tt, M, N) | → | activate#(M) | | U31#(tt, V2) | → | activate#(V2) |
U21#(tt, V1) | → | U22#(isNatKind(activate(V1)), activate(V1)) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U12(tt, V1, V2) | → | U13(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U13(tt, V1, V2) | → | U14(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U14(tt, V1, V2) | → | U15(isNat(activate(V1)), activate(V2)) |
U15(tt, V2) | → | U16(isNat(activate(V2))) | | U16(tt) | → | tt |
U21(tt, V1) | → | U22(isNatKind(activate(V1)), activate(V1)) | | U22(tt, V1) | → | U23(isNat(activate(V1))) |
U23(tt) | → | tt | | U31(tt, V2) | → | U32(isNatKind(activate(V2))) |
U32(tt) | → | tt | | U41(tt) | → | tt |
U51(tt, N) | → | U52(isNatKind(activate(N)), activate(N)) | | U52(tt, N) | → | activate(N) |
U61(tt, M, N) | → | U62(isNatKind(activate(M)), activate(M), activate(N)) | | U62(tt, M, N) | → | U63(isNat(activate(N)), activate(M), activate(N)) |
U63(tt, M, N) | → | U64(isNatKind(activate(N)), activate(M), activate(N)) | | U64(tt, M, N) | → | s(plus(activate(N), activate(M))) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNatKind(activate(V1)), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | U31(isNatKind(activate(V1)), activate(V2)) | | isNatKind(n__s(V1)) | → | U41(isNatKind(activate(V1))) |
plus(N, 0) | → | U51(isNat(N), N) | | plus(N, s(M)) | → | U61(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: n__plus, U64, activate, isNat, n__s, U63, U62, n__0, U61, U41, U23, U21, U22, plus, isNatKind, 0, U14, U51, s, U15, tt, U16, U52, U11, U12, U31, U13, U32
Strategy
The following SCCs where found
isNatKind#(n__plus(V1, V2)) → isNatKind#(activate(V1)) | isNatKind#(n__plus(V1, V2)) → U31#(isNatKind(activate(V1)), activate(V2)) |
U31#(tt, V2) → isNatKind#(activate(V2)) |
U13#(tt, V1, V2) → U14#(isNatKind(activate(V2)), activate(V1), activate(V2)) | U11#(tt, V1, V2) → U12#(isNatKind(activate(V1)), activate(V1), activate(V2)) |
U14#(tt, V1, V2) → isNat#(activate(V1)) | U14#(tt, V1, V2) → U15#(isNat(activate(V1)), activate(V2)) |
U15#(tt, V2) → isNat#(activate(V2)) | isNat#(n__plus(V1, V2)) → U11#(isNatKind(activate(V1)), activate(V1), activate(V2)) |
U12#(tt, V1, V2) → U13#(isNatKind(activate(V2)), activate(V1), activate(V2)) |
Problem 6: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | isNatKind#(n__plus(V1, V2)) | → | U31#(isNatKind(activate(V1)), activate(V2)) |
U31#(tt, V2) | → | isNatKind#(activate(V2)) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U12(tt, V1, V2) | → | U13(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U13(tt, V1, V2) | → | U14(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U14(tt, V1, V2) | → | U15(isNat(activate(V1)), activate(V2)) |
U15(tt, V2) | → | U16(isNat(activate(V2))) | | U16(tt) | → | tt |
U21(tt, V1) | → | U22(isNatKind(activate(V1)), activate(V1)) | | U22(tt, V1) | → | U23(isNat(activate(V1))) |
U23(tt) | → | tt | | U31(tt, V2) | → | U32(isNatKind(activate(V2))) |
U32(tt) | → | tt | | U41(tt) | → | tt |
U51(tt, N) | → | U52(isNatKind(activate(N)), activate(N)) | | U52(tt, N) | → | activate(N) |
U61(tt, M, N) | → | U62(isNatKind(activate(M)), activate(M), activate(N)) | | U62(tt, M, N) | → | U63(isNat(activate(N)), activate(M), activate(N)) |
U63(tt, M, N) | → | U64(isNatKind(activate(N)), activate(M), activate(N)) | | U64(tt, M, N) | → | s(plus(activate(N), activate(M))) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNatKind(activate(V1)), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | U31(isNatKind(activate(V1)), activate(V2)) | | isNatKind(n__s(V1)) | → | U41(isNatKind(activate(V1))) |
plus(N, 0) | → | U51(isNat(N), N) | | plus(N, s(M)) | → | U61(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: n__plus, U64, activate, isNat, n__s, U63, U62, n__0, U61, U41, U23, U21, U22, plus, isNatKind, 0, U14, U51, s, U15, tt, U16, U52, U11, U12, U31, U13, U32
Strategy
Polynomial Interpretation
- 0: 1
- U11(x,y,z): 3
- U12(x,y,z): 3
- U13(x,y,z): 3
- U14(x,y,z): 0
- U15(x,y): 0
- U16(x): 0
- U21(x,y): 3
- U22(x,y): 3
- U23(x): 3
- U31(x,y): 0
- U31#(x,y): 2y
- U32(x): 0
- U41(x): 0
- U51(x,y): y + 2
- U52(x,y): y
- U61(x,y,z): 0
- U62(x,y,z): 0
- U63(x,y,z): 0
- U64(x,y,z): 0
- activate(x): x
- isNat(x): 3
- isNatKind(x): 0
- isNatKind#(x): 2x
- n__0: 1
- n__plus(x,y): y + 2x + 1
- n__s(x): 0
- plus(x,y): y + 2x + 1
- s(x): 0
- tt: 0
Standard Usable rules
U51(tt, N) | → | U52(isNatKind(activate(N)), activate(N)) | | U21(tt, V1) | → | U22(isNatKind(activate(V1)), activate(V1)) |
U31(tt, V2) | → | U32(isNatKind(activate(V2))) | | activate(n__s(X)) | → | s(X) |
activate(n__0) | → | 0 | | U41(tt) | → | tt |
isNat(n__0) | → | tt | | U64(tt, M, N) | → | s(plus(activate(N), activate(M))) |
U12(tt, V1, V2) | → | U13(isNatKind(activate(V2)), activate(V1), activate(V2)) | | isNat(n__plus(V1, V2)) | → | U11(isNatKind(activate(V1)), activate(V1), activate(V2)) |
s(X) | → | n__s(X) | | U32(tt) | → | tt |
isNatKind(n__plus(V1, V2)) | → | U31(isNatKind(activate(V1)), activate(V2)) | | plus(X1, X2) | → | n__plus(X1, X2) |
plus(N, 0) | → | U51(isNat(N), N) | | isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) |
activate(n__plus(X1, X2)) | → | plus(X1, X2) | | U22(tt, V1) | → | U23(isNat(activate(V1))) |
U23(tt) | → | tt | | isNatKind(n__s(V1)) | → | U41(isNatKind(activate(V1))) |
U11(tt, V1, V2) | → | U12(isNatKind(activate(V1)), activate(V1), activate(V2)) | | plus(N, s(M)) | → | U61(isNat(M), M, N) |
U15(tt, V2) | → | U16(isNat(activate(V2))) | | 0 | → | n__0 |
isNatKind(n__0) | → | tt | | U62(tt, M, N) | → | U63(isNat(activate(N)), activate(M), activate(N)) |
U16(tt) | → | tt | | U14(tt, V1, V2) | → | U15(isNat(activate(V1)), activate(V2)) |
U61(tt, M, N) | → | U62(isNatKind(activate(M)), activate(M), activate(N)) | | U63(tt, M, N) | → | U64(isNatKind(activate(N)), activate(M), activate(N)) |
activate(X) | → | X | | U13(tt, V1, V2) | → | U14(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U52(tt, N) | → | activate(N) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | isNatKind#(n__plus(V1, V2)) | → | U31#(isNatKind(activate(V1)), activate(V2)) |
Problem 8: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U31#(tt, V2) | → | isNatKind#(activate(V2)) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U12(tt, V1, V2) | → | U13(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U13(tt, V1, V2) | → | U14(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U14(tt, V1, V2) | → | U15(isNat(activate(V1)), activate(V2)) |
U15(tt, V2) | → | U16(isNat(activate(V2))) | | U16(tt) | → | tt |
U21(tt, V1) | → | U22(isNatKind(activate(V1)), activate(V1)) | | U22(tt, V1) | → | U23(isNat(activate(V1))) |
U23(tt) | → | tt | | U31(tt, V2) | → | U32(isNatKind(activate(V2))) |
U32(tt) | → | tt | | U41(tt) | → | tt |
U51(tt, N) | → | U52(isNatKind(activate(N)), activate(N)) | | U52(tt, N) | → | activate(N) |
U61(tt, M, N) | → | U62(isNatKind(activate(M)), activate(M), activate(N)) | | U62(tt, M, N) | → | U63(isNat(activate(N)), activate(M), activate(N)) |
U63(tt, M, N) | → | U64(isNatKind(activate(N)), activate(M), activate(N)) | | U64(tt, M, N) | → | s(plus(activate(N), activate(M))) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNatKind(activate(V1)), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | U31(isNatKind(activate(V1)), activate(V2)) | | isNatKind(n__s(V1)) | → | U41(isNatKind(activate(V1))) |
plus(N, 0) | → | U51(isNat(N), N) | | plus(N, s(M)) | → | U61(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: n__plus, n__s, isNat, activate, U64, U63, U62, U61, n__0, U41, U23, U21, U22, plus, isNatKind, 0, U14, U51, s, U15, tt, U16, U52, U11, U12, U13, U31, U32
Strategy
There are no SCCs!
Problem 7: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
U13#(tt, V1, V2) | → | U14#(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U11#(tt, V1, V2) | → | U12#(isNatKind(activate(V1)), activate(V1), activate(V2)) |
U14#(tt, V1, V2) | → | isNat#(activate(V1)) | | U14#(tt, V1, V2) | → | U15#(isNat(activate(V1)), activate(V2)) |
U15#(tt, V2) | → | isNat#(activate(V2)) | | isNat#(n__plus(V1, V2)) | → | U11#(isNatKind(activate(V1)), activate(V1), activate(V2)) |
U12#(tt, V1, V2) | → | U13#(isNatKind(activate(V2)), activate(V1), activate(V2)) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U12(tt, V1, V2) | → | U13(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U13(tt, V1, V2) | → | U14(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U14(tt, V1, V2) | → | U15(isNat(activate(V1)), activate(V2)) |
U15(tt, V2) | → | U16(isNat(activate(V2))) | | U16(tt) | → | tt |
U21(tt, V1) | → | U22(isNatKind(activate(V1)), activate(V1)) | | U22(tt, V1) | → | U23(isNat(activate(V1))) |
U23(tt) | → | tt | | U31(tt, V2) | → | U32(isNatKind(activate(V2))) |
U32(tt) | → | tt | | U41(tt) | → | tt |
U51(tt, N) | → | U52(isNatKind(activate(N)), activate(N)) | | U52(tt, N) | → | activate(N) |
U61(tt, M, N) | → | U62(isNatKind(activate(M)), activate(M), activate(N)) | | U62(tt, M, N) | → | U63(isNat(activate(N)), activate(M), activate(N)) |
U63(tt, M, N) | → | U64(isNatKind(activate(N)), activate(M), activate(N)) | | U64(tt, M, N) | → | s(plus(activate(N), activate(M))) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNatKind(activate(V1)), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | U31(isNatKind(activate(V1)), activate(V2)) | | isNatKind(n__s(V1)) | → | U41(isNatKind(activate(V1))) |
plus(N, 0) | → | U51(isNat(N), N) | | plus(N, s(M)) | → | U61(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: n__plus, U64, activate, isNat, n__s, U63, U62, n__0, U61, U41, U23, U21, U22, plus, isNatKind, 0, U14, U51, s, U15, tt, U16, U52, U11, U12, U31, U13, U32
Strategy
Polynomial Interpretation
- 0: 1
- U11(x,y,z): z + y + x + 1
- U11#(x,y,z): 3z + y
- U12(x,y,z): z + y + 3
- U12#(x,y,z): 3z + y
- U13(x,y,z): z + y + 3
- U13#(x,y,z): z + y + x
- U14(x,y,z): z + y + 2
- U14#(x,y,z): z + y
- U15(x,y): y + x + 1
- U15#(x,y): y
- U16(x): x
- U21(x,y): 2
- U22(x,y): 2
- U23(x): 2
- U31(x,y): 2y + x
- U32(x): x
- U41(x): 2
- U51(x,y): y
- U52(x,y): y
- U61(x,y,z): 3z + 1
- U62(x,y,z): 3z + 1
- U63(x,y,z): 3z
- U64(x,y,z): z + x
- activate(x): x
- isNat(x): x + 1
- isNat#(x): x
- isNatKind(x): 2x
- n__0: 1
- n__plus(x,y): 3y + 3x
- n__s(x): 1
- plus(x,y): 3y + 3x
- s(x): 1
- tt: 2
Standard Usable rules
U51(tt, N) | → | U52(isNatKind(activate(N)), activate(N)) | | U21(tt, V1) | → | U22(isNatKind(activate(V1)), activate(V1)) |
activate(n__s(X)) | → | s(X) | | U31(tt, V2) | → | U32(isNatKind(activate(V2))) |
activate(n__0) | → | 0 | | U41(tt) | → | tt |
isNat(n__0) | → | tt | | U64(tt, M, N) | → | s(plus(activate(N), activate(M))) |
isNat(n__plus(V1, V2)) | → | U11(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U12(tt, V1, V2) | → | U13(isNatKind(activate(V2)), activate(V1), activate(V2)) |
s(X) | → | n__s(X) | | U32(tt) | → | tt |
isNatKind(n__plus(V1, V2)) | → | U31(isNatKind(activate(V1)), activate(V2)) | | plus(X1, X2) | → | n__plus(X1, X2) |
plus(N, 0) | → | U51(isNat(N), N) | | isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) |
activate(n__plus(X1, X2)) | → | plus(X1, X2) | | U22(tt, V1) | → | U23(isNat(activate(V1))) |
U23(tt) | → | tt | | isNatKind(n__s(V1)) | → | U41(isNatKind(activate(V1))) |
U11(tt, V1, V2) | → | U12(isNatKind(activate(V1)), activate(V1), activate(V2)) | | plus(N, s(M)) | → | U61(isNat(M), M, N) |
U15(tt, V2) | → | U16(isNat(activate(V2))) | | 0 | → | n__0 |
isNatKind(n__0) | → | tt | | U62(tt, M, N) | → | U63(isNat(activate(N)), activate(M), activate(N)) |
U14(tt, V1, V2) | → | U15(isNat(activate(V1)), activate(V2)) | | U16(tt) | → | tt |
U61(tt, M, N) | → | U62(isNatKind(activate(M)), activate(M), activate(N)) | | U63(tt, M, N) | → | U64(isNatKind(activate(N)), activate(M), activate(N)) |
activate(X) | → | X | | U13(tt, V1, V2) | → | U14(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U52(tt, N) | → | activate(N) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
U13#(tt, V1, V2) | → | U14#(isNatKind(activate(V2)), activate(V1), activate(V2)) |
Problem 9: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U11#(tt, V1, V2) | → | U12#(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U14#(tt, V1, V2) | → | isNat#(activate(V1)) |
U14#(tt, V1, V2) | → | U15#(isNat(activate(V1)), activate(V2)) | | U15#(tt, V2) | → | isNat#(activate(V2)) |
U12#(tt, V1, V2) | → | U13#(isNatKind(activate(V2)), activate(V1), activate(V2)) | | isNat#(n__plus(V1, V2)) | → | U11#(isNatKind(activate(V1)), activate(V1), activate(V2)) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNatKind(activate(V1)), activate(V1), activate(V2)) | | U12(tt, V1, V2) | → | U13(isNatKind(activate(V2)), activate(V1), activate(V2)) |
U13(tt, V1, V2) | → | U14(isNatKind(activate(V2)), activate(V1), activate(V2)) | | U14(tt, V1, V2) | → | U15(isNat(activate(V1)), activate(V2)) |
U15(tt, V2) | → | U16(isNat(activate(V2))) | | U16(tt) | → | tt |
U21(tt, V1) | → | U22(isNatKind(activate(V1)), activate(V1)) | | U22(tt, V1) | → | U23(isNat(activate(V1))) |
U23(tt) | → | tt | | U31(tt, V2) | → | U32(isNatKind(activate(V2))) |
U32(tt) | → | tt | | U41(tt) | → | tt |
U51(tt, N) | → | U52(isNatKind(activate(N)), activate(N)) | | U52(tt, N) | → | activate(N) |
U61(tt, M, N) | → | U62(isNatKind(activate(M)), activate(M), activate(N)) | | U62(tt, M, N) | → | U63(isNat(activate(N)), activate(M), activate(N)) |
U63(tt, M, N) | → | U64(isNatKind(activate(N)), activate(M), activate(N)) | | U64(tt, M, N) | → | s(plus(activate(N), activate(M))) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(isNatKind(activate(V1)), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | U31(isNatKind(activate(V1)), activate(V2)) | | isNatKind(n__s(V1)) | → | U41(isNatKind(activate(V1))) |
plus(N, 0) | → | U51(isNat(N), N) | | plus(N, s(M)) | → | U61(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: n__plus, n__s, isNat, activate, U64, U63, U62, U61, n__0, U41, U23, U21, U22, plus, isNatKind, 0, U14, U51, s, U15, tt, U16, U52, U11, U12, U13, U31, U32
Strategy
There are no SCCs!