YES
The TRS could be proven terminating. The proof took 44493 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (483ms).
| Problem 2 was processed with processor PolynomialLinearRange4 (1424ms).
| | Problem 3 was processed with processor DependencyGraph (106ms).
| | | Problem 4 was processed with processor PolynomialLinearRange4 (1111ms).
| | | | Problem 5 was processed with processor DependencyGraph (53ms).
| | | | | Problem 6 was processed with processor PolynomialLinearRange4 (264ms).
| | | | | | Problem 7 was processed with processor DependencyGraph (27ms).
| | | | | | | Problem 8 was processed with processor PolynomialLinearRange4 (244ms).
| | | | | | | | Problem 9 was processed with processor DependencyGraph (16ms).
| | | | | | | | | Problem 10 was processed with processor PolynomialLinearRange4 (143ms).
| | | | | | | | | | Problem 11 was processed with processor DependencyGraph (13ms).
| | | | | | | | | | | Problem 12 was processed with processor PolynomialLinearRange4 (137ms).
| | | | | | | | | | | | Problem 13 was processed with processor DependencyGraph (0ms).
| | | | | | | | | | | | | Problem 14 was processed with processor PolynomialLinearRange4 (8ms).
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
and#(tt, X) | → | activate#(X) | | plus#(N, s(M)) | → | U41#(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
activate#(n__and(X1, X2)) | → | activate#(X1) | | isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) |
activate#(n__and(X1, X2)) | → | and#(activate(X1), X2) | | activate#(n__plus(X1, X2)) | → | plus#(activate(X1), activate(X2)) |
activate#(n__s(X)) | → | activate#(X) | | U41#(tt, M, N) | → | activate#(M) |
plus#(N, 0) | → | and#(isNat(N), n__isNatKind(N)) | | U41#(tt, M, N) | → | plus#(activate(N), activate(M)) |
isNatKind#(n__s(V1)) | → | activate#(V1) | | plus#(N, s(M)) | → | and#(isNat(M), n__isNatKind(M)) |
U12#(tt, V2) | → | activate#(V2) | | plus#(N, 0) | → | isNat#(N) |
U21#(tt, V1) | → | U22#(isNat(activate(V1))) | | isNat#(n__plus(V1, V2)) | → | activate#(V2) |
U41#(tt, M, N) | → | s#(plus(activate(N), activate(M))) | | U11#(tt, V1, V2) | → | activate#(V2) |
activate#(n__plus(X1, X2)) | → | activate#(X2) | | isNatKind#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | plus#(N, 0) | → | U31#(and(isNat(N), n__isNatKind(N)), N) |
isNatKind#(n__plus(V1, V2)) | → | activate#(V2) | | U11#(tt, V1, V2) | → | isNat#(activate(V1)) |
activate#(n__isNat(X)) | → | isNat#(X) | | isNat#(n__s(V1)) | → | activate#(V1) |
isNat#(n__plus(V1, V2)) | → | U11#(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) | | U12#(tt, V2) | → | isNat#(activate(V2)) |
plus#(N, s(M)) | → | and#(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))) | | activate#(n__plus(X1, X2)) | → | activate#(X1) |
isNatKind#(n__plus(V1, V2)) | → | activate#(V1) | | U21#(tt, V1) | → | activate#(V1) |
U31#(tt, N) | → | activate#(N) | | U41#(tt, M, N) | → | activate#(N) |
U11#(tt, V1, V2) | → | activate#(V1) | | plus#(N, s(M)) | → | isNat#(M) |
activate#(n__isNatKind(X)) | → | isNatKind#(X) | | isNat#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
U11#(tt, V1, V2) | → | U12#(isNat(activate(V1)), activate(V2)) | | activate#(n__0) | → | 0# |
isNat#(n__plus(V1, V2)) | → | activate#(V1) | | U21#(tt, V1) | → | isNat#(activate(V1)) |
isNatKind#(n__s(V1)) | → | isNatKind#(activate(V1)) | | activate#(n__s(X)) | → | s#(activate(X)) |
isNat#(n__s(V1)) | → | U21#(isNatKind(activate(V1)), activate(V1)) | | isNat#(n__s(V1)) | → | isNatKind#(activate(V1)) |
U12#(tt, V2) | → | U13#(isNat(activate(V2))) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
U22(tt) | → | tt | | U31(tt, N) | → | activate(N) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | and(tt, X) | → | activate(X) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
0 | → | n__0 | | plus(X1, X2) | → | n__plus(X1, X2) |
isNatKind(X) | → | n__isNatKind(X) | | s(X) | → | n__s(X) |
and(X1, X2) | → | n__and(X1, X2) | | isNat(X) | → | n__isNat(X) |
activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__isNatKind(X)) | → | isNatKind(X) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__isNat(X)) | → | isNat(X) |
activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, n__isNat, n__plus, and, n__s, activate, isNat, n__and, 0, n__0, s, U41, tt, U11, U12, U31, U13, U21, U22, n__isNatKind
Strategy
The following SCCs where found
and#(tt, X) → activate#(X) | plus#(N, s(M)) → U41#(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
activate#(n__and(X1, X2)) → activate#(X1) | isNat#(n__plus(V1, V2)) → isNatKind#(activate(V1)) |
activate#(n__and(X1, X2)) → and#(activate(X1), X2) | activate#(n__s(X)) → activate#(X) |
activate#(n__plus(X1, X2)) → plus#(activate(X1), activate(X2)) | plus#(N, 0) → and#(isNat(N), n__isNatKind(N)) |
U41#(tt, M, N) → activate#(M) | isNatKind#(n__s(V1)) → activate#(V1) |
U41#(tt, M, N) → plus#(activate(N), activate(M)) | plus#(N, s(M)) → and#(isNat(M), n__isNatKind(M)) |
U12#(tt, V2) → activate#(V2) | plus#(N, 0) → isNat#(N) |
isNat#(n__plus(V1, V2)) → activate#(V2) | U11#(tt, V1, V2) → activate#(V2) |
activate#(n__plus(X1, X2)) → activate#(X2) | isNatKind#(n__plus(V1, V2)) → and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
isNatKind#(n__plus(V1, V2)) → isNatKind#(activate(V1)) | isNatKind#(n__plus(V1, V2)) → activate#(V2) |
plus#(N, 0) → U31#(and(isNat(N), n__isNatKind(N)), N) | U11#(tt, V1, V2) → isNat#(activate(V1)) |
activate#(n__isNat(X)) → isNat#(X) | isNat#(n__plus(V1, V2)) → U11#(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat#(n__s(V1)) → activate#(V1) | activate#(n__plus(X1, X2)) → activate#(X1) |
U12#(tt, V2) → isNat#(activate(V2)) | plus#(N, s(M)) → and#(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))) |
isNatKind#(n__plus(V1, V2)) → activate#(V1) | U21#(tt, V1) → activate#(V1) |
U31#(tt, N) → activate#(N) | U41#(tt, M, N) → activate#(N) |
U11#(tt, V1, V2) → activate#(V1) | activate#(n__isNatKind(X)) → isNatKind#(X) |
plus#(N, s(M)) → isNat#(M) | U11#(tt, V1, V2) → U12#(isNat(activate(V1)), activate(V2)) |
isNat#(n__plus(V1, V2)) → and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | isNat#(n__plus(V1, V2)) → activate#(V1) |
U21#(tt, V1) → isNat#(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)) |
Problem 2: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
and#(tt, X) | → | activate#(X) | | plus#(N, s(M)) | → | U41#(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
activate#(n__and(X1, X2)) | → | activate#(X1) | | isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) |
activate#(n__and(X1, X2)) | → | and#(activate(X1), X2) | | activate#(n__s(X)) | → | activate#(X) |
activate#(n__plus(X1, X2)) | → | plus#(activate(X1), activate(X2)) | | plus#(N, 0) | → | and#(isNat(N), n__isNatKind(N)) |
U41#(tt, M, N) | → | activate#(M) | | isNatKind#(n__s(V1)) | → | activate#(V1) |
U41#(tt, M, N) | → | plus#(activate(N), activate(M)) | | plus#(N, s(M)) | → | and#(isNat(M), n__isNatKind(M)) |
U12#(tt, V2) | → | activate#(V2) | | isNat#(n__plus(V1, V2)) | → | activate#(V2) |
plus#(N, 0) | → | isNat#(N) | | U11#(tt, V1, V2) | → | activate#(V2) |
isNatKind#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | activate#(n__plus(X1, X2)) | → | activate#(X2) |
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | U11#(tt, V1, V2) | → | isNat#(activate(V1)) |
plus#(N, 0) | → | U31#(and(isNat(N), n__isNatKind(N)), N) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V2) |
activate#(n__isNat(X)) | → | isNat#(X) | | isNat#(n__s(V1)) | → | activate#(V1) |
isNat#(n__plus(V1, V2)) | → | U11#(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) | | activate#(n__plus(X1, X2)) | → | activate#(X1) |
U12#(tt, V2) | → | isNat#(activate(V2)) | | plus#(N, s(M)) | → | and#(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))) |
isNatKind#(n__plus(V1, V2)) | → | activate#(V1) | | U21#(tt, V1) | → | activate#(V1) |
U31#(tt, N) | → | activate#(N) | | U41#(tt, M, N) | → | activate#(N) |
U11#(tt, V1, V2) | → | activate#(V1) | | activate#(n__isNatKind(X)) | → | isNatKind#(X) |
plus#(N, s(M)) | → | isNat#(M) | | U11#(tt, V1, V2) | → | U12#(isNat(activate(V1)), activate(V2)) |
isNat#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNat#(n__plus(V1, V2)) | → | activate#(V1) |
U21#(tt, V1) | → | isNat#(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)) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
U22(tt) | → | tt | | U31(tt, N) | → | activate(N) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | and(tt, X) | → | activate(X) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
0 | → | n__0 | | plus(X1, X2) | → | n__plus(X1, X2) |
isNatKind(X) | → | n__isNatKind(X) | | s(X) | → | n__s(X) |
and(X1, X2) | → | n__and(X1, X2) | | isNat(X) | → | n__isNat(X) |
activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__isNatKind(X)) | → | isNatKind(X) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__isNat(X)) | → | isNat(X) |
activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, n__isNat, n__plus, and, n__s, activate, isNat, n__and, 0, n__0, s, U41, tt, U11, U12, U31, U13, U21, U22, n__isNatKind
Strategy
Polynomial Interpretation
- 0: 2
- U11(x,y,z): z + 3y
- U11#(x,y,z): z + y
- U12(x,y): 3x
- U12#(x,y): y
- U13(x): 0
- U21(x,y): x
- U21#(x,y): y
- U22(x): 0
- U31(x,y): 2y
- U31#(x,y): y
- U41(x,y,z): 3z + y
- U41#(x,y,z): 3z + y
- activate(x): x
- activate#(x): x
- and(x,y): y + 2x
- and#(x,y): y
- isNat(x): x
- isNat#(x): x
- isNatKind(x): x
- isNatKind#(x): x
- n__0: 2
- n__and(x,y): y + 2x
- n__isNat(x): x
- n__isNatKind(x): x
- n__plus(x,y): y + 3x
- n__s(x): x
- plus(x,y): y + 3x
- plus#(x,y): y + 3x
- s(x): x
- tt: 0
Standard Usable rules
isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) | | U31(tt, N) | → | activate(N) |
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | activate(n__0) | → | 0 |
isNat(n__0) | → | tt | | U13(tt) | → | tt |
s(X) | → | n__s(X) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
isNat(X) | → | n__isNat(X) | | isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
U22(tt) | → | tt | | plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) |
plus(X1, X2) | → | n__plus(X1, X2) | | isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | activate(n__isNatKind(X)) | → | isNatKind(X) |
and(X1, X2) | → | n__and(X1, X2) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
isNatKind(X) | → | n__isNatKind(X) | | 0 | → | n__0 |
isNatKind(n__0) | → | tt | | and(tt, X) | → | activate(X) |
activate(X) | → | X | | activate(n__isNat(X)) | → | isNat(X) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__s(X)) | → | s(activate(X)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
plus#(N, 0) | → | and#(isNat(N), n__isNatKind(N)) | | plus#(N, 0) | → | isNat#(N) |
plus#(N, 0) | → | U31#(and(isNat(N), n__isNatKind(N)), N) |
Problem 3: DependencyGraph
Dependency Pair Problem
Dependency Pairs
plus#(N, s(M)) | → | U41#(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) | | and#(tt, X) | → | activate#(X) |
activate#(n__and(X1, X2)) | → | activate#(X1) | | isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) |
activate#(n__and(X1, X2)) | → | and#(activate(X1), X2) | | activate#(n__plus(X1, X2)) | → | plus#(activate(X1), activate(X2)) |
activate#(n__s(X)) | → | activate#(X) | | U41#(tt, M, N) | → | activate#(M) |
U41#(tt, M, N) | → | plus#(activate(N), activate(M)) | | isNatKind#(n__s(V1)) | → | activate#(V1) |
plus#(N, s(M)) | → | and#(isNat(M), n__isNatKind(M)) | | U12#(tt, V2) | → | activate#(V2) |
isNat#(n__plus(V1, V2)) | → | activate#(V2) | | U11#(tt, V1, V2) | → | activate#(V2) |
isNatKind#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | activate#(n__plus(X1, X2)) | → | activate#(X2) |
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | U11#(tt, V1, V2) | → | isNat#(activate(V1)) |
isNatKind#(n__plus(V1, V2)) | → | activate#(V2) | | activate#(n__isNat(X)) | → | isNat#(X) |
isNat#(n__s(V1)) | → | activate#(V1) | | isNat#(n__plus(V1, V2)) | → | U11#(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
activate#(n__plus(X1, X2)) | → | activate#(X1) | | U12#(tt, V2) | → | isNat#(activate(V2)) |
plus#(N, s(M)) | → | and#(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
U21#(tt, V1) | → | activate#(V1) | | U31#(tt, N) | → | activate#(N) |
U41#(tt, M, N) | → | activate#(N) | | U11#(tt, V1, V2) | → | activate#(V1) |
plus#(N, s(M)) | → | isNat#(M) | | activate#(n__isNatKind(X)) | → | isNatKind#(X) |
isNat#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | U11#(tt, V1, V2) | → | U12#(isNat(activate(V1)), activate(V2)) |
isNat#(n__plus(V1, V2)) | → | activate#(V1) | | isNatKind#(n__s(V1)) | → | isNatKind#(activate(V1)) |
U21#(tt, V1) | → | isNat#(activate(V1)) | | isNat#(n__s(V1)) | → | U21#(isNatKind(activate(V1)), activate(V1)) |
isNat#(n__s(V1)) | → | isNatKind#(activate(V1)) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
U22(tt) | → | tt | | U31(tt, N) | → | activate(N) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | and(tt, X) | → | activate(X) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
0 | → | n__0 | | plus(X1, X2) | → | n__plus(X1, X2) |
isNatKind(X) | → | n__isNatKind(X) | | s(X) | → | n__s(X) |
and(X1, X2) | → | n__and(X1, X2) | | isNat(X) | → | n__isNat(X) |
activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__isNatKind(X)) | → | isNatKind(X) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__isNat(X)) | → | isNat(X) |
activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, n__isNat, n__plus, and, n__s, activate, isNat, n__and, 0, n__0, s, tt, U41, U11, U12, U13, U31, U21, n__isNatKind, U22
Strategy
The following SCCs where found
plus#(N, s(M)) → U41#(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) | and#(tt, X) → activate#(X) |
activate#(n__and(X1, X2)) → activate#(X1) | isNat#(n__plus(V1, V2)) → isNatKind#(activate(V1)) |
activate#(n__and(X1, X2)) → and#(activate(X1), X2) | activate#(n__s(X)) → activate#(X) |
activate#(n__plus(X1, X2)) → plus#(activate(X1), activate(X2)) | U41#(tt, M, N) → activate#(M) |
isNatKind#(n__s(V1)) → activate#(V1) | U41#(tt, M, N) → plus#(activate(N), activate(M)) |
plus#(N, s(M)) → and#(isNat(M), n__isNatKind(M)) | U12#(tt, V2) → activate#(V2) |
isNat#(n__plus(V1, V2)) → activate#(V2) | U11#(tt, V1, V2) → activate#(V2) |
activate#(n__plus(X1, X2)) → activate#(X2) | isNatKind#(n__plus(V1, V2)) → and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
isNatKind#(n__plus(V1, V2)) → isNatKind#(activate(V1)) | isNatKind#(n__plus(V1, V2)) → activate#(V2) |
U11#(tt, V1, V2) → isNat#(activate(V1)) | activate#(n__isNat(X)) → isNat#(X) |
isNat#(n__plus(V1, V2)) → U11#(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) | isNat#(n__s(V1)) → activate#(V1) |
activate#(n__plus(X1, X2)) → activate#(X1) | plus#(N, s(M)) → and#(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))) |
U12#(tt, V2) → isNat#(activate(V2)) | isNatKind#(n__plus(V1, V2)) → activate#(V1) |
U21#(tt, V1) → activate#(V1) | U41#(tt, M, N) → activate#(N) |
U11#(tt, V1, V2) → activate#(V1) | activate#(n__isNatKind(X)) → isNatKind#(X) |
plus#(N, s(M)) → isNat#(M) | U11#(tt, V1, V2) → U12#(isNat(activate(V1)), activate(V2)) |
isNat#(n__plus(V1, V2)) → and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | isNat#(n__plus(V1, V2)) → activate#(V1) |
isNatKind#(n__s(V1)) → isNatKind#(activate(V1)) | U21#(tt, V1) → isNat#(activate(V1)) |
isNat#(n__s(V1)) → U21#(isNatKind(activate(V1)), activate(V1)) | isNat#(n__s(V1)) → isNatKind#(activate(V1)) |
Problem 4: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
plus#(N, s(M)) | → | U41#(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) | | and#(tt, X) | → | activate#(X) |
activate#(n__and(X1, X2)) | → | activate#(X1) | | isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) |
activate#(n__and(X1, X2)) | → | and#(activate(X1), X2) | | activate#(n__s(X)) | → | activate#(X) |
activate#(n__plus(X1, X2)) | → | plus#(activate(X1), activate(X2)) | | U41#(tt, M, N) | → | activate#(M) |
isNatKind#(n__s(V1)) | → | activate#(V1) | | U41#(tt, M, N) | → | plus#(activate(N), activate(M)) |
plus#(N, s(M)) | → | and#(isNat(M), n__isNatKind(M)) | | U12#(tt, V2) | → | activate#(V2) |
isNat#(n__plus(V1, V2)) | → | activate#(V2) | | U11#(tt, V1, V2) | → | activate#(V2) |
isNatKind#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | activate#(n__plus(X1, X2)) | → | activate#(X2) |
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | U11#(tt, V1, V2) | → | isNat#(activate(V1)) |
isNatKind#(n__plus(V1, V2)) | → | activate#(V2) | | activate#(n__isNat(X)) | → | isNat#(X) |
isNat#(n__s(V1)) | → | activate#(V1) | | isNat#(n__plus(V1, V2)) | → | U11#(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
U12#(tt, V2) | → | isNat#(activate(V2)) | | plus#(N, s(M)) | → | and#(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))) |
activate#(n__plus(X1, X2)) | → | activate#(X1) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
U21#(tt, V1) | → | activate#(V1) | | U41#(tt, M, N) | → | activate#(N) |
U11#(tt, V1, V2) | → | activate#(V1) | | activate#(n__isNatKind(X)) | → | isNatKind#(X) |
plus#(N, s(M)) | → | isNat#(M) | | U11#(tt, V1, V2) | → | U12#(isNat(activate(V1)), activate(V2)) |
isNat#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNat#(n__plus(V1, V2)) | → | activate#(V1) |
isNatKind#(n__s(V1)) | → | isNatKind#(activate(V1)) | | U21#(tt, V1) | → | isNat#(activate(V1)) |
isNat#(n__s(V1)) | → | U21#(isNatKind(activate(V1)), activate(V1)) | | isNat#(n__s(V1)) | → | isNatKind#(activate(V1)) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
U22(tt) | → | tt | | U31(tt, N) | → | activate(N) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | and(tt, X) | → | activate(X) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
0 | → | n__0 | | plus(X1, X2) | → | n__plus(X1, X2) |
isNatKind(X) | → | n__isNatKind(X) | | s(X) | → | n__s(X) |
and(X1, X2) | → | n__and(X1, X2) | | isNat(X) | → | n__isNat(X) |
activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__isNatKind(X)) | → | isNatKind(X) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__isNat(X)) | → | isNat(X) |
activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, n__isNat, n__plus, and, n__s, activate, isNat, n__and, 0, n__0, s, tt, U41, U11, U12, U13, U31, U21, n__isNatKind, U22
Strategy
Polynomial Interpretation
- 0: 2
- U11(x,y,z): z + 2y
- U11#(x,y,z): z + 2y
- U12(x,y): y
- U12#(x,y): y
- U13(x): x
- U21(x,y): y + 1
- U21#(x,y): y
- U22(x): x
- U31(x,y): 3y + 2
- U41(x,y,z): 3z + y + 2
- U41#(x,y,z): 2z + y
- activate(x): x
- activate#(x): x
- and(x,y): y + x
- and#(x,y): y
- isNat(x): x
- isNat#(x): x
- isNatKind(x): x
- isNatKind#(x): x
- n__0: 2
- n__and(x,y): y + x
- n__isNat(x): x
- n__isNatKind(x): x
- n__plus(x,y): y + 3x
- n__s(x): x + 2
- plus(x,y): y + 3x
- plus#(x,y): y + 2x
- s(x): x + 2
- tt: 2
Standard Usable rules
isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) | | U31(tt, N) | → | activate(N) |
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | activate(n__0) | → | 0 |
isNat(n__0) | → | tt | | U13(tt) | → | tt |
s(X) | → | n__s(X) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
isNat(X) | → | n__isNat(X) | | isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
U22(tt) | → | tt | | plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) |
plus(X1, X2) | → | n__plus(X1, X2) | | isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | activate(n__isNatKind(X)) | → | isNatKind(X) |
and(X1, X2) | → | n__and(X1, X2) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
isNatKind(X) | → | n__isNatKind(X) | | 0 | → | n__0 |
isNatKind(n__0) | → | tt | | and(tt, X) | → | activate(X) |
activate(X) | → | X | | activate(n__isNat(X)) | → | isNat(X) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__s(X)) | → | s(activate(X)) |
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), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) | | activate#(n__s(X)) | → | activate#(X) |
isNatKind#(n__s(V1)) | → | activate#(V1) | | plus#(N, s(M)) | → | and#(isNat(M), n__isNatKind(M)) |
isNat#(n__s(V1)) | → | activate#(V1) | | plus#(N, s(M)) | → | and#(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))) |
plus#(N, s(M)) | → | isNat#(M) | | isNatKind#(n__s(V1)) | → | isNatKind#(activate(V1)) |
isNat#(n__s(V1)) | → | U21#(isNatKind(activate(V1)), activate(V1)) | | isNat#(n__s(V1)) | → | isNatKind#(activate(V1)) |
Problem 5: DependencyGraph
Dependency Pair Problem
Dependency Pairs
and#(tt, X) | → | activate#(X) | | activate#(n__and(X1, X2)) | → | activate#(X1) |
isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | activate#(n__and(X1, X2)) | → | and#(activate(X1), X2) |
activate#(n__plus(X1, X2)) | → | plus#(activate(X1), activate(X2)) | | U41#(tt, M, N) | → | activate#(M) |
U41#(tt, M, N) | → | plus#(activate(N), activate(M)) | | U12#(tt, V2) | → | activate#(V2) |
isNat#(n__plus(V1, V2)) | → | activate#(V2) | | U11#(tt, V1, V2) | → | activate#(V2) |
activate#(n__plus(X1, X2)) | → | activate#(X2) | | isNatKind#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | U11#(tt, V1, V2) | → | isNat#(activate(V1)) |
isNatKind#(n__plus(V1, V2)) | → | activate#(V2) | | activate#(n__isNat(X)) | → | isNat#(X) |
isNat#(n__plus(V1, V2)) | → | U11#(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) | | U12#(tt, V2) | → | isNat#(activate(V2)) |
activate#(n__plus(X1, X2)) | → | activate#(X1) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
U21#(tt, V1) | → | activate#(V1) | | U41#(tt, M, N) | → | activate#(N) |
U11#(tt, V1, V2) | → | activate#(V1) | | activate#(n__isNatKind(X)) | → | isNatKind#(X) |
isNat#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | U11#(tt, V1, V2) | → | U12#(isNat(activate(V1)), activate(V2)) |
isNat#(n__plus(V1, V2)) | → | activate#(V1) | | U21#(tt, V1) | → | isNat#(activate(V1)) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
U22(tt) | → | tt | | U31(tt, N) | → | activate(N) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | and(tt, X) | → | activate(X) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
0 | → | n__0 | | plus(X1, X2) | → | n__plus(X1, X2) |
isNatKind(X) | → | n__isNatKind(X) | | s(X) | → | n__s(X) |
and(X1, X2) | → | n__and(X1, X2) | | isNat(X) | → | n__isNat(X) |
activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__isNatKind(X)) | → | isNatKind(X) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__isNat(X)) | → | isNat(X) |
activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, n__isNat, n__plus, and, n__s, activate, isNat, n__and, 0, n__0, s, U41, tt, U11, U12, U31, U13, U21, U22, n__isNatKind
Strategy
The following SCCs where found
and#(tt, X) → activate#(X) | activate#(n__and(X1, X2)) → activate#(X1) |
isNat#(n__plus(V1, V2)) → isNatKind#(activate(V1)) | activate#(n__and(X1, X2)) → and#(activate(X1), X2) |
U12#(tt, V2) → activate#(V2) | U11#(tt, V1, V2) → activate#(V1) |
isNat#(n__plus(V1, V2)) → activate#(V2) | U11#(tt, V1, V2) → activate#(V2) |
activate#(n__isNatKind(X)) → isNatKind#(X) | activate#(n__plus(X1, X2)) → activate#(X2) |
isNatKind#(n__plus(V1, V2)) → and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | isNatKind#(n__plus(V1, V2)) → isNatKind#(activate(V1)) |
isNatKind#(n__plus(V1, V2)) → activate#(V2) | U11#(tt, V1, V2) → U12#(isNat(activate(V1)), activate(V2)) |
U11#(tt, V1, V2) → isNat#(activate(V1)) | isNat#(n__plus(V1, V2)) → and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
activate#(n__isNat(X)) → isNat#(X) | isNat#(n__plus(V1, V2)) → activate#(V1) |
isNat#(n__plus(V1, V2)) → U11#(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) | activate#(n__plus(X1, X2)) → activate#(X1) |
U12#(tt, V2) → isNat#(activate(V2)) | isNatKind#(n__plus(V1, V2)) → activate#(V1) |
Problem 6: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
and#(tt, X) | → | activate#(X) | | activate#(n__and(X1, X2)) | → | activate#(X1) |
isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | activate#(n__and(X1, X2)) | → | and#(activate(X1), X2) |
U11#(tt, V1, V2) | → | activate#(V1) | | U12#(tt, V2) | → | activate#(V2) |
isNat#(n__plus(V1, V2)) | → | activate#(V2) | | U11#(tt, V1, V2) | → | activate#(V2) |
isNatKind#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | activate#(n__plus(X1, X2)) | → | activate#(X2) |
activate#(n__isNatKind(X)) | → | isNatKind#(X) | | isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) |
isNatKind#(n__plus(V1, V2)) | → | activate#(V2) | | U11#(tt, V1, V2) | → | U12#(isNat(activate(V1)), activate(V2)) |
U11#(tt, V1, V2) | → | isNat#(activate(V1)) | | isNat#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
activate#(n__isNat(X)) | → | isNat#(X) | | isNat#(n__plus(V1, V2)) | → | activate#(V1) |
isNat#(n__plus(V1, V2)) | → | U11#(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) | | activate#(n__plus(X1, X2)) | → | activate#(X1) |
U12#(tt, V2) | → | isNat#(activate(V2)) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
U22(tt) | → | tt | | U31(tt, N) | → | activate(N) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | and(tt, X) | → | activate(X) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
0 | → | n__0 | | plus(X1, X2) | → | n__plus(X1, X2) |
isNatKind(X) | → | n__isNatKind(X) | | s(X) | → | n__s(X) |
and(X1, X2) | → | n__and(X1, X2) | | isNat(X) | → | n__isNat(X) |
activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__isNatKind(X)) | → | isNatKind(X) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__isNat(X)) | → | isNat(X) |
activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, n__isNat, n__plus, and, n__s, activate, isNat, n__and, 0, n__0, s, U41, tt, U11, U12, U31, U13, U21, U22, n__isNatKind
Strategy
Polynomial Interpretation
- 0: 2
- U11(x,y,z): z + y
- U11#(x,y,z): 2z + 2y
- U12(x,y): y
- U12#(x,y): 2y + 2x
- U13(x): x
- U21(x,y): y
- U22(x): x
- U31(x,y): y
- U41(x,y,z): z + y
- activate(x): x
- activate#(x): 2x
- and(x,y): y + x
- and#(x,y): 2y
- isNat(x): x
- isNat#(x): 2x
- isNatKind(x): x
- isNatKind#(x): 2x
- n__0: 2
- n__and(x,y): y + x
- n__isNat(x): x
- n__isNatKind(x): x
- n__plus(x,y): y + x
- n__s(x): x
- plus(x,y): y + x
- s(x): x
- tt: 1
Standard Usable rules
isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) | | U31(tt, N) | → | activate(N) |
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | activate(n__0) | → | 0 |
isNat(n__0) | → | tt | | U13(tt) | → | tt |
s(X) | → | n__s(X) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
isNat(X) | → | n__isNat(X) | | isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
U22(tt) | → | tt | | plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) |
plus(X1, X2) | → | n__plus(X1, X2) | | isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | activate(n__isNatKind(X)) | → | isNatKind(X) |
and(X1, X2) | → | n__and(X1, X2) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
isNatKind(X) | → | n__isNatKind(X) | | 0 | → | n__0 |
isNatKind(n__0) | → | tt | | and(tt, X) | → | activate(X) |
activate(X) | → | X | | activate(n__isNat(X)) | → | isNat(X) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__s(X)) | → | s(activate(X)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
U12#(tt, V2) | → | activate#(V2) | | U12#(tt, V2) | → | isNat#(activate(V2)) |
Problem 7: DependencyGraph
Dependency Pair Problem
Dependency Pairs
and#(tt, X) | → | activate#(X) | | activate#(n__and(X1, X2)) | → | activate#(X1) |
isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | activate#(n__and(X1, X2)) | → | and#(activate(X1), X2) |
U11#(tt, V1, V2) | → | activate#(V1) | | isNat#(n__plus(V1, V2)) | → | activate#(V2) |
U11#(tt, V1, V2) | → | activate#(V2) | | isNatKind#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
activate#(n__plus(X1, X2)) | → | activate#(X2) | | activate#(n__isNatKind(X)) | → | isNatKind#(X) |
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | isNat#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
U11#(tt, V1, V2) | → | isNat#(activate(V1)) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V2) |
U11#(tt, V1, V2) | → | U12#(isNat(activate(V1)), activate(V2)) | | activate#(n__isNat(X)) | → | isNat#(X) |
isNat#(n__plus(V1, V2)) | → | activate#(V1) | | isNat#(n__plus(V1, V2)) | → | U11#(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
activate#(n__plus(X1, X2)) | → | activate#(X1) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
U22(tt) | → | tt | | U31(tt, N) | → | activate(N) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | and(tt, X) | → | activate(X) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
0 | → | n__0 | | plus(X1, X2) | → | n__plus(X1, X2) |
isNatKind(X) | → | n__isNatKind(X) | | s(X) | → | n__s(X) |
and(X1, X2) | → | n__and(X1, X2) | | isNat(X) | → | n__isNat(X) |
activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__isNatKind(X)) | → | isNatKind(X) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__isNat(X)) | → | isNat(X) |
activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, n__isNat, n__plus, and, n__s, activate, isNat, n__and, 0, n__0, s, tt, U41, U11, U12, U13, U31, U21, n__isNatKind, U22
Strategy
The following SCCs where found
and#(tt, X) → activate#(X) | activate#(n__and(X1, X2)) → activate#(X1) |
isNat#(n__plus(V1, V2)) → isNatKind#(activate(V1)) | activate#(n__and(X1, X2)) → and#(activate(X1), X2) |
U11#(tt, V1, V2) → activate#(V1) | isNat#(n__plus(V1, V2)) → activate#(V2) |
U11#(tt, V1, V2) → activate#(V2) | activate#(n__isNatKind(X)) → isNatKind#(X) |
activate#(n__plus(X1, X2)) → activate#(X2) | isNatKind#(n__plus(V1, V2)) → and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
isNatKind#(n__plus(V1, V2)) → isNatKind#(activate(V1)) | isNatKind#(n__plus(V1, V2)) → activate#(V2) |
isNat#(n__plus(V1, V2)) → and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | U11#(tt, V1, V2) → isNat#(activate(V1)) |
activate#(n__isNat(X)) → isNat#(X) | isNat#(n__plus(V1, V2)) → activate#(V1) |
isNat#(n__plus(V1, V2)) → U11#(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) | activate#(n__plus(X1, X2)) → activate#(X1) |
isNatKind#(n__plus(V1, V2)) → activate#(V1) |
Problem 8: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
and#(tt, X) | → | activate#(X) | | activate#(n__and(X1, X2)) | → | activate#(X1) |
isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | activate#(n__and(X1, X2)) | → | and#(activate(X1), X2) |
U11#(tt, V1, V2) | → | activate#(V1) | | isNat#(n__plus(V1, V2)) | → | activate#(V2) |
U11#(tt, V1, V2) | → | activate#(V2) | | isNatKind#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
activate#(n__plus(X1, X2)) | → | activate#(X2) | | activate#(n__isNatKind(X)) | → | isNatKind#(X) |
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V2) |
U11#(tt, V1, V2) | → | isNat#(activate(V1)) | | isNat#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
activate#(n__isNat(X)) | → | isNat#(X) | | isNat#(n__plus(V1, V2)) | → | activate#(V1) |
isNat#(n__plus(V1, V2)) | → | U11#(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) | | activate#(n__plus(X1, X2)) | → | activate#(X1) |
isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
U22(tt) | → | tt | | U31(tt, N) | → | activate(N) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | and(tt, X) | → | activate(X) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
0 | → | n__0 | | plus(X1, X2) | → | n__plus(X1, X2) |
isNatKind(X) | → | n__isNatKind(X) | | s(X) | → | n__s(X) |
and(X1, X2) | → | n__and(X1, X2) | | isNat(X) | → | n__isNat(X) |
activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__isNatKind(X)) | → | isNatKind(X) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__isNat(X)) | → | isNat(X) |
activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, n__isNat, n__plus, and, n__s, activate, isNat, n__and, 0, n__0, s, tt, U41, U11, U12, U13, U31, U21, n__isNatKind, U22
Strategy
Polynomial Interpretation
- 0: 1
- U11(x,y,z): 2x
- U11#(x,y,z): z + 3y + x
- U12(x,y): 2
- U13(x): 2
- U21(x,y): y + x
- U22(x): 1
- U31(x,y): 3y
- U41(x,y,z): 3z + y
- activate(x): x
- activate#(x): x
- and(x,y): y + x
- and#(x,y): y
- isNat(x): 2x
- isNat#(x): 2x
- isNatKind(x): x
- isNatKind#(x): x
- n__0: 1
- n__and(x,y): y + x
- n__isNat(x): 2x
- n__isNatKind(x): x
- n__plus(x,y): y + 3x
- n__s(x): x
- plus(x,y): y + 3x
- s(x): x
- tt: 1
Standard Usable rules
isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) | | U31(tt, N) | → | activate(N) |
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | activate(n__0) | → | 0 |
isNat(n__0) | → | tt | | U13(tt) | → | tt |
s(X) | → | n__s(X) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
U21(tt, V1) | → | U22(isNat(activate(V1))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
isNat(X) | → | n__isNat(X) | | isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
U22(tt) | → | tt | | plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) |
plus(X1, X2) | → | n__plus(X1, X2) | | isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | activate(n__isNatKind(X)) | → | isNatKind(X) |
and(X1, X2) | → | n__and(X1, X2) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
isNatKind(X) | → | n__isNatKind(X) | | 0 | → | n__0 |
isNatKind(n__0) | → | tt | | and(tt, X) | → | activate(X) |
activate(X) | → | X | | activate(n__isNat(X)) | → | isNat(X) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
U11#(tt, V1, V2) | → | activate#(V1) | | U11#(tt, V1, V2) | → | activate#(V2) |
U11#(tt, V1, V2) | → | isNat#(activate(V1)) |
Problem 9: DependencyGraph
Dependency Pair Problem
Dependency Pairs
and#(tt, X) | → | activate#(X) | | activate#(n__and(X1, X2)) | → | activate#(X1) |
isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | activate#(n__and(X1, X2)) | → | and#(activate(X1), X2) |
isNat#(n__plus(V1, V2)) | → | activate#(V2) | | isNatKind#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
activate#(n__plus(X1, X2)) | → | activate#(X2) | | activate#(n__isNatKind(X)) | → | isNatKind#(X) |
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V2) |
isNat#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | activate#(n__isNat(X)) | → | isNat#(X) |
isNat#(n__plus(V1, V2)) | → | activate#(V1) | | isNat#(n__plus(V1, V2)) | → | U11#(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
activate#(n__plus(X1, X2)) | → | activate#(X1) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
U22(tt) | → | tt | | U31(tt, N) | → | activate(N) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | and(tt, X) | → | activate(X) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
0 | → | n__0 | | plus(X1, X2) | → | n__plus(X1, X2) |
isNatKind(X) | → | n__isNatKind(X) | | s(X) | → | n__s(X) |
and(X1, X2) | → | n__and(X1, X2) | | isNat(X) | → | n__isNat(X) |
activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__isNatKind(X)) | → | isNatKind(X) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__isNat(X)) | → | isNat(X) |
activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, n__isNat, n__plus, and, n__s, activate, isNat, n__and, 0, n__0, s, U41, tt, U11, U12, U31, U13, U21, U22, n__isNatKind
Strategy
The following SCCs where found
and#(tt, X) → activate#(X) | activate#(n__and(X1, X2)) → activate#(X1) |
isNat#(n__plus(V1, V2)) → isNatKind#(activate(V1)) | activate#(n__and(X1, X2)) → and#(activate(X1), X2) |
isNat#(n__plus(V1, V2)) → activate#(V2) | activate#(n__isNatKind(X)) → isNatKind#(X) |
isNatKind#(n__plus(V1, V2)) → and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | activate#(n__plus(X1, X2)) → activate#(X2) |
isNatKind#(n__plus(V1, V2)) → isNatKind#(activate(V1)) | isNatKind#(n__plus(V1, V2)) → activate#(V2) |
isNat#(n__plus(V1, V2)) → and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | activate#(n__isNat(X)) → isNat#(X) |
isNat#(n__plus(V1, V2)) → activate#(V1) | activate#(n__plus(X1, X2)) → activate#(X1) |
isNatKind#(n__plus(V1, V2)) → activate#(V1) |
Problem 10: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
and#(tt, X) | → | activate#(X) | | activate#(n__and(X1, X2)) | → | activate#(X1) |
isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | activate#(n__and(X1, X2)) | → | and#(activate(X1), X2) |
isNat#(n__plus(V1, V2)) | → | activate#(V2) | | activate#(n__plus(X1, X2)) | → | activate#(X2) |
isNatKind#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | activate#(n__isNatKind(X)) | → | isNatKind#(X) |
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | isNat#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
isNatKind#(n__plus(V1, V2)) | → | activate#(V2) | | activate#(n__isNat(X)) | → | isNat#(X) |
isNat#(n__plus(V1, V2)) | → | activate#(V1) | | activate#(n__plus(X1, X2)) | → | activate#(X1) |
isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
U22(tt) | → | tt | | U31(tt, N) | → | activate(N) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | and(tt, X) | → | activate(X) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
0 | → | n__0 | | plus(X1, X2) | → | n__plus(X1, X2) |
isNatKind(X) | → | n__isNatKind(X) | | s(X) | → | n__s(X) |
and(X1, X2) | → | n__and(X1, X2) | | isNat(X) | → | n__isNat(X) |
activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__isNatKind(X)) | → | isNatKind(X) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__isNat(X)) | → | isNat(X) |
activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, n__isNat, n__plus, and, n__s, activate, isNat, n__and, 0, n__0, s, U41, tt, U11, U12, U31, U13, U21, U22, n__isNatKind
Strategy
Polynomial Interpretation
- 0: 1
- U11(x,y,z): x
- U12(x,y): 1
- U13(x): 1
- U21(x,y): 2y + 1
- U22(x): x
- U31(x,y): 3y
- U41(x,y,z): 3z + 2y + 2
- activate(x): x
- activate#(x): 2x
- and(x,y): y + 2x
- and#(x,y): 2y + 2x
- isNat(x): 2x
- isNat#(x): 3x
- isNatKind(x): 3x
- isNatKind#(x): 3x
- n__0: 1
- n__and(x,y): y + 2x
- n__isNat(x): 2x
- n__isNatKind(x): 3x
- n__plus(x,y): 2y + 3x
- n__s(x): x + 1
- plus(x,y): 2y + 3x
- s(x): x + 1
- tt: 1
Standard Usable rules
isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) | | U31(tt, N) | → | activate(N) |
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | activate(n__0) | → | 0 |
isNat(n__0) | → | tt | | U13(tt) | → | tt |
s(X) | → | n__s(X) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
U21(tt, V1) | → | U22(isNat(activate(V1))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
isNat(X) | → | n__isNat(X) | | isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
U22(tt) | → | tt | | plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) |
plus(X1, X2) | → | n__plus(X1, X2) | | isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | activate(n__isNatKind(X)) | → | isNatKind(X) |
and(X1, X2) | → | n__and(X1, X2) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
isNatKind(X) | → | n__isNatKind(X) | | 0 | → | n__0 |
isNatKind(n__0) | → | tt | | and(tt, X) | → | activate(X) |
activate(X) | → | X | | activate(n__isNat(X)) | → | isNat(X) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
and#(tt, X) | → | activate#(X) |
Problem 11: DependencyGraph
Dependency Pair Problem
Dependency Pairs
activate#(n__and(X1, X2)) | → | activate#(X1) | | isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) |
activate#(n__and(X1, X2)) | → | and#(activate(X1), X2) | | isNat#(n__plus(V1, V2)) | → | activate#(V2) |
activate#(n__plus(X1, X2)) | → | activate#(X2) | | isNatKind#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
activate#(n__isNatKind(X)) | → | isNatKind#(X) | | isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) |
isNat#(n__plus(V1, V2)) | → | and#(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V2) |
activate#(n__isNat(X)) | → | isNat#(X) | | isNat#(n__plus(V1, V2)) | → | activate#(V1) |
activate#(n__plus(X1, X2)) | → | activate#(X1) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
U22(tt) | → | tt | | U31(tt, N) | → | activate(N) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | and(tt, X) | → | activate(X) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
0 | → | n__0 | | plus(X1, X2) | → | n__plus(X1, X2) |
isNatKind(X) | → | n__isNatKind(X) | | s(X) | → | n__s(X) |
and(X1, X2) | → | n__and(X1, X2) | | isNat(X) | → | n__isNat(X) |
activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__isNatKind(X)) | → | isNatKind(X) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__isNat(X)) | → | isNat(X) |
activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, n__isNat, n__plus, and, n__s, activate, isNat, n__and, 0, n__0, s, tt, U41, U11, U12, U13, U31, U21, n__isNatKind, U22
Strategy
The following SCCs where found
activate#(n__isNatKind(X)) → isNatKind#(X) | activate#(n__plus(X1, X2)) → activate#(X2) |
isNatKind#(n__plus(V1, V2)) → isNatKind#(activate(V1)) | activate#(n__and(X1, X2)) → activate#(X1) |
isNat#(n__plus(V1, V2)) → isNatKind#(activate(V1)) | isNatKind#(n__plus(V1, V2)) → activate#(V2) |
activate#(n__isNat(X)) → isNat#(X) | isNat#(n__plus(V1, V2)) → activate#(V1) |
activate#(n__plus(X1, X2)) → activate#(X1) | isNatKind#(n__plus(V1, V2)) → activate#(V1) |
isNat#(n__plus(V1, V2)) → activate#(V2) |
Problem 12: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
activate#(n__isNatKind(X)) | → | isNatKind#(X) | | activate#(n__plus(X1, X2)) | → | activate#(X2) |
isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | activate#(n__and(X1, X2)) | → | activate#(X1) |
isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V2) |
activate#(n__isNat(X)) | → | isNat#(X) | | isNat#(n__plus(V1, V2)) | → | activate#(V1) |
activate#(n__plus(X1, X2)) | → | activate#(X1) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
isNat#(n__plus(V1, V2)) | → | activate#(V2) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
U22(tt) | → | tt | | U31(tt, N) | → | activate(N) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | and(tt, X) | → | activate(X) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
0 | → | n__0 | | plus(X1, X2) | → | n__plus(X1, X2) |
isNatKind(X) | → | n__isNatKind(X) | | s(X) | → | n__s(X) |
and(X1, X2) | → | n__and(X1, X2) | | isNat(X) | → | n__isNat(X) |
activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__isNatKind(X)) | → | isNatKind(X) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__isNat(X)) | → | isNat(X) |
activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, n__isNat, n__plus, and, n__s, activate, isNat, n__and, 0, n__0, s, tt, U41, U11, U12, U13, U31, U21, n__isNatKind, U22
Strategy
Polynomial Interpretation
- 0: 0
- U11(x,y,z): 3z
- U12(x,y): 0
- U13(x): 0
- U21(x,y): 2y + 2
- U22(x): 1
- U31(x,y): y
- U41(x,y,z): z + 2y + 3
- activate(x): x
- activate#(x): 2x + 1
- and(x,y): 2y + x
- isNat(x): 2x
- isNat#(x): 2x
- isNatKind(x): 2x
- isNatKind#(x): 2x + 1
- n__0: 0
- n__and(x,y): 2y + x
- n__isNat(x): 2x
- n__isNatKind(x): 2x
- n__plus(x,y): 2y + x + 1
- n__s(x): x + 1
- plus(x,y): 2y + x + 1
- s(x): x + 1
- tt: 0
Standard Usable rules
isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) | | U31(tt, N) | → | activate(N) |
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | activate(n__0) | → | 0 |
isNat(n__0) | → | tt | | U13(tt) | → | tt |
s(X) | → | n__s(X) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
U21(tt, V1) | → | U22(isNat(activate(V1))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
isNat(X) | → | n__isNat(X) | | isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) |
U22(tt) | → | tt | | plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) |
plus(X1, X2) | → | n__plus(X1, X2) | | isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | activate(n__isNatKind(X)) | → | isNatKind(X) |
and(X1, X2) | → | n__and(X1, X2) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
isNatKind(X) | → | n__isNatKind(X) | | 0 | → | n__0 |
and(tt, X) | → | activate(X) | | isNatKind(n__0) | → | tt |
activate(X) | → | X | | activate(n__isNat(X)) | → | isNat(X) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
activate#(n__plus(X1, X2)) | → | activate#(X2) | | isNatKind#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) |
isNat#(n__plus(V1, V2)) | → | isNatKind#(activate(V1)) | | isNatKind#(n__plus(V1, V2)) | → | activate#(V2) |
activate#(n__isNat(X)) | → | isNat#(X) | | isNat#(n__plus(V1, V2)) | → | activate#(V1) |
activate#(n__plus(X1, X2)) | → | activate#(X1) | | isNat#(n__plus(V1, V2)) | → | activate#(V2) |
isNatKind#(n__plus(V1, V2)) | → | activate#(V1) |
Problem 13: DependencyGraph
Dependency Pair Problem
Dependency Pairs
activate#(n__isNatKind(X)) | → | isNatKind#(X) | | activate#(n__and(X1, X2)) | → | activate#(X1) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
U22(tt) | → | tt | | U31(tt, N) | → | activate(N) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | and(tt, X) | → | activate(X) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
0 | → | n__0 | | plus(X1, X2) | → | n__plus(X1, X2) |
isNatKind(X) | → | n__isNatKind(X) | | s(X) | → | n__s(X) |
and(X1, X2) | → | n__and(X1, X2) | | isNat(X) | → | n__isNat(X) |
activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__isNatKind(X)) | → | isNatKind(X) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__isNat(X)) | → | isNat(X) |
activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, n__isNat, n__plus, and, n__s, activate, isNat, n__and, 0, n__0, s, U41, tt, U11, U12, U31, U13, U21, U22, n__isNatKind
Strategy
The following SCCs where found
activate#(n__and(X1, X2)) → activate#(X1) |
Problem 14: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
activate#(n__and(X1, X2)) | → | activate#(X1) |
Rewrite Rules
U11(tt, V1, V2) | → | U12(isNat(activate(V1)), activate(V2)) | | U12(tt, V2) | → | U13(isNat(activate(V2))) |
U13(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(activate(V1))) |
U22(tt) | → | tt | | U31(tt, N) | → | activate(N) |
U41(tt, M, N) | → | s(plus(activate(N), activate(M))) | | and(tt, X) | → | activate(X) |
isNat(n__0) | → | tt | | isNat(n__plus(V1, V2)) | → | U11(and(isNatKind(activate(V1)), n__isNatKind(activate(V2))), activate(V1), activate(V2)) |
isNat(n__s(V1)) | → | U21(isNatKind(activate(V1)), activate(V1)) | | isNatKind(n__0) | → | tt |
isNatKind(n__plus(V1, V2)) | → | and(isNatKind(activate(V1)), n__isNatKind(activate(V2))) | | isNatKind(n__s(V1)) | → | isNatKind(activate(V1)) |
plus(N, 0) | → | U31(and(isNat(N), n__isNatKind(N)), N) | | plus(N, s(M)) | → | U41(and(and(isNat(M), n__isNatKind(M)), n__and(n__isNat(N), n__isNatKind(N))), M, N) |
0 | → | n__0 | | plus(X1, X2) | → | n__plus(X1, X2) |
isNatKind(X) | → | n__isNatKind(X) | | s(X) | → | n__s(X) |
and(X1, X2) | → | n__and(X1, X2) | | isNat(X) | → | n__isNat(X) |
activate(n__0) | → | 0 | | activate(n__plus(X1, X2)) | → | plus(activate(X1), activate(X2)) |
activate(n__isNatKind(X)) | → | isNatKind(X) | | activate(n__s(X)) | → | s(activate(X)) |
activate(n__and(X1, X2)) | → | and(activate(X1), X2) | | activate(n__isNat(X)) | → | isNat(X) |
activate(X) | → | X |
Original Signature
Termination of terms over the following signature is verified: plus, isNatKind, n__isNat, n__plus, and, n__s, activate, isNat, n__and, 0, n__0, s, U41, tt, U11, U12, U31, U13, U21, U22, n__isNatKind
Strategy
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
- activate(x): 0
- activate#(x): x + 1
- and(x,y): 0
- isNat(x): 0
- isNatKind(x): 0
- n__0: 0
- n__and(x,y): x + 2
- n__isNat(x): 0
- n__isNatKind(x): 0
- n__plus(x,y): 0
- n__s(x): 0
- 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:
activate#(n__and(X1, X2)) | → | activate#(X1) |