YES
The TRS could be proven terminating. The proof took 331 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (3ms).
| Problem 2 was processed with processor BackwardsNarrowing (3ms).
| | Problem 3 was processed with processor ForwardNarrowing (1ms).
| | Problem 4 was processed with processor BackwardsNarrowing (3ms).
| | | Problem 5 was processed with processor BackwardsNarrowing (3ms).
| | | | Problem 6 was processed with processor BackwardsNarrowing (5ms).
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
f#(s(0)) | → | f#(p(s(0))) | | T(f(s(0))) | → | f#(s(0)) |
f#(s(0)) | → | p#(s(0)) |
Rewrite Rules
f(0) | → | cons(0, f(s(0))) | | f(s(0)) | → | f(p(s(0))) |
p(s(X)) | → | X |
Original Signature
Termination of terms over the following signature is verified: f, 0, s, p, cons
Strategy
Context-sensitive strategy:
μ(T) = μ(0) = ∅
μ(f) = μ(f#) = μ(p#) = μ(s) = μ(p) = μ(cons) = {1}
The following SCCs where found
Problem 2: BackwardsNarrowing
Dependency Pair Problem
Dependency Pairs
Rewrite Rules
f(0) | → | cons(0, f(s(0))) | | f(s(0)) | → | f(p(s(0))) |
p(s(X)) | → | X |
Original Signature
Termination of terms over the following signature is verified: f, 0, s, p, cons
Strategy
Context-sensitive strategy:
μ(T) = μ(0) = ∅
μ(f) = μ(f#) = μ(p#) = μ(s) = μ(p) = μ(cons) = {1}
The left-hand side of the rule f
#(s(0)) → f
#(p(s(0))) is backward narrowed to the following relevant and irrelevant terms (a narrowing is irrelevant if by dropping it the correctness (and completeness) of the processor is not influenced).
Relevant Terms | Irrelevant Terms |
---|
f#(s(p(s(0)))) | |
f#(p(s(s(0)))) | |
Thus, the rule f
#(s(0)) → f
#(p(s(0))) is replaced by the following rules:
f#(p(s(s(0)))) → f#(p(s(0))) | f#(s(p(s(0)))) → f#(p(s(0))) |
Problem 3: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
Rewrite Rules
f(0) | → | cons(0, f(s(0))) | | f(s(0)) | → | f(p(s(0))) |
p(s(X)) | → | X |
Original Signature
Termination of terms over the following signature is verified: f, 0, s, p, cons
Strategy
Context-sensitive strategy:
μ(T) = μ(0) = ∅
μ(f) = μ(f#) = μ(p#) = μ(s) = μ(p) = μ(cons) = {1}
The right-hand side of the rule f
#(s(0)) → f
#(0) is narrowed to the following relevant and irrelevant terms (a narrowing is irrelevant if by dropping it the correctness (and completeness) of the processor is not influenced).
Relevant Terms | Irrelevant Terms |
---|
Thus, the rule f
#(s(0)) → f
#(0) is deleted.
Problem 4: BackwardsNarrowing
Dependency Pair Problem
Dependency Pairs
f#(p(s(s(0)))) | → | f#(p(s(0))) | | f#(s(p(s(0)))) | → | f#(p(s(0))) |
Rewrite Rules
f(0) | → | cons(0, f(s(0))) | | f(s(0)) | → | f(p(s(0))) |
p(s(X)) | → | X |
Original Signature
Termination of terms over the following signature is verified: f, 0, s, p, cons
Strategy
Context-sensitive strategy:
μ(T) = μ(0) = ∅
μ(f) = μ(f#) = μ(p#) = μ(s) = μ(p) = μ(cons) = {1}
The left-hand side of the rule f
#(p(s(s(0)))) → f
#(p(s(0))) is backward narrowed to the following relevant and irrelevant terms (a narrowing is irrelevant if by dropping it the correctness (and completeness) of the processor is not influenced).
Relevant Terms | Irrelevant Terms |
---|
f#(p(p(s(s(s(0)))))) | |
f#(p(s(p(s(s(0)))))) | |
f#(p(s(s(p(s(0)))))) | |
Thus, the rule f
#(p(s(s(0)))) → f
#(p(s(0))) is replaced by the following rules:
f#(p(s(s(p(s(0)))))) → f#(p(s(0))) | f#(p(p(s(s(s(0)))))) → f#(p(s(0))) |
f#(p(s(p(s(s(0)))))) → f#(p(s(0))) |
Problem 5: BackwardsNarrowing
Dependency Pair Problem
Dependency Pairs
f#(p(s(s(p(s(0)))))) | → | f#(p(s(0))) | | f#(p(p(s(s(s(0)))))) | → | f#(p(s(0))) |
f#(p(s(p(s(s(0)))))) | → | f#(p(s(0))) | | f#(s(p(s(0)))) | → | f#(p(s(0))) |
Rewrite Rules
f(0) | → | cons(0, f(s(0))) | | f(s(0)) | → | f(p(s(0))) |
p(s(X)) | → | X |
Original Signature
Termination of terms over the following signature is verified: f, 0, s, p, cons
Strategy
Context-sensitive strategy:
μ(T) = μ(0) = ∅
μ(f) = μ(f#) = μ(p#) = μ(s) = μ(p) = μ(cons) = {1}
The left-hand side of the rule f
#(p(s(s(p(s(0)))))) → f
#(p(s(0))) is backward narrowed to the following relevant and irrelevant terms (a narrowing is irrelevant if by dropping it the correctness (and completeness) of the processor is not influenced).
Relevant Terms | Irrelevant Terms |
---|
f#(p(p(s(s(s(p(s(0)))))))) | |
f#(p(s(p(s(s(p(s(0)))))))) | |
f#(p(s(s(p(p(s(s(0)))))))) | |
f#(p(s(s(p(s(p(s(0)))))))) | |
Thus, the rule f
#(p(s(s(p(s(0)))))) → f
#(p(s(0))) is replaced by the following rules:
f#(p(s(s(p(s(p(s(0)))))))) → f#(p(s(0))) | f#(p(s(s(p(p(s(s(0)))))))) → f#(p(s(0))) |
f#(p(p(s(s(s(p(s(0)))))))) → f#(p(s(0))) | f#(p(s(p(s(s(p(s(0)))))))) → f#(p(s(0))) |
Problem 6: BackwardsNarrowing
Dependency Pair Problem
Dependency Pairs
f#(p(s(s(p(s(p(s(0)))))))) | → | f#(p(s(0))) | | f#(p(p(s(s(s(0)))))) | → | f#(p(s(0))) |
f#(p(s(s(p(p(s(s(0)))))))) | → | f#(p(s(0))) | | f#(p(p(s(s(s(p(s(0)))))))) | → | f#(p(s(0))) |
f#(p(s(p(s(s(0)))))) | → | f#(p(s(0))) | | f#(p(s(p(s(s(p(s(0)))))))) | → | f#(p(s(0))) |
f#(s(p(s(0)))) | → | f#(p(s(0))) |
Rewrite Rules
f(0) | → | cons(0, f(s(0))) | | f(s(0)) | → | f(p(s(0))) |
p(s(X)) | → | X |
Original Signature
Termination of terms over the following signature is verified: f, 0, s, p, cons
Strategy
Context-sensitive strategy:
μ(T) = μ(0) = ∅
μ(f) = μ(f#) = μ(p#) = μ(s) = μ(p) = μ(cons) = {1}
The left-hand side of the rule f
#(p(s(s(p(s(p(s(0)))))))) → f
#(p(s(0))) is backward narrowed to the following relevant and irrelevant terms (a narrowing is irrelevant if by dropping it the correctness (and completeness) of the processor is not influenced).
Relevant Terms | Irrelevant Terms |
---|
f#(p(s(s(p(p(s(s(p(s(0)))))))))) | |
f#(p(s(s(p(s(p(p(s(s(0)))))))))) | |
f#(p(s(s(p(s(p(s(p(s(0)))))))))) | |
f#(p(s(p(s(s(p(s(p(s(0)))))))))) | |
f#(p(p(s(s(s(p(s(p(s(0)))))))))) | |
Thus, the rule f
#(p(s(s(p(s(p(s(0)))))))) → f
#(p(s(0))) is replaced by the following rules:
f#(p(s(s(p(p(s(s(p(s(0)))))))))) → f#(p(s(0))) | f#(p(s(p(s(s(p(s(p(s(0)))))))))) → f#(p(s(0))) |
f#(p(p(s(s(s(p(s(p(s(0)))))))))) → f#(p(s(0))) | f#(p(s(s(p(s(p(s(p(s(0)))))))))) → f#(p(s(0))) |
f#(p(s(s(p(s(p(p(s(s(0)))))))))) → f#(p(s(0))) |