NO
The TRS could be proven non-terminating. The proof took 657 ms.
The following reduction sequence is a witness for non-termination:
g#(___x) →* g#(___x)
The following DP Processors were used
Problem 1 was processed with processor PolynomialLinearRange4iUR (293ms).
| Problem 2 was processed with processor DependencyGraph (3ms).
| | Problem 3 was processed with processor PolynomialLinearRange4iUR (119ms).
| | Problem 4 was processed with processor BackwardInstantiation (1ms).
| | | Problem 5 was processed with processor BackwardInstantiation (1ms).
| | | | Problem 6 was processed with processor BackwardInstantiation (1ms).
| | | | | Problem 7 remains open; application of the following processors failed [ForwardInstantiation (1ms), Propagation (1ms)].
Problem 1: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
f#(g(a)) | → | f#(s(g(b))) | | f#(g(a)) | → | g#(b) |
g#(x) | → | g#(x) | | g#(x) | → | f#(g(x)) |
Rewrite Rules
f(g(a)) | → | f(s(g(b))) | | f(f(x)) | → | b |
g(x) | → | f(g(x)) |
Original Signature
Termination of terms over the following signature is verified: f, g, b, s, a
Strategy
Polynomial Interpretation
- a: 1
- b: 0
- f(x): 0
- f#(x): 2x
- g(x): x
- g#(x): 2x + 1
- s(x): 1
Improved Usable rules
f(g(a)) | → | f(s(g(b))) | | g(x) | → | f(g(x)) |
f(f(x)) | → | b |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
f#(g(a)) | → | g#(b) | | g#(x) | → | f#(g(x)) |
Problem 2: DependencyGraph
Dependency Pair Problem
Dependency Pairs
f#(g(a)) | → | f#(s(g(b))) | | g#(x) | → | g#(x) |
Rewrite Rules
f(g(a)) | → | f(s(g(b))) | | f(f(x)) | → | b |
g(x) | → | f(g(x)) |
Original Signature
Termination of terms over the following signature is verified: f, g, s, b, a
Strategy
The following SCCs where found
Problem 3: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
Rewrite Rules
f(g(a)) | → | f(s(g(b))) | | f(f(x)) | → | b |
g(x) | → | f(g(x)) |
Original Signature
Termination of terms over the following signature is verified: f, g, s, b, a
Strategy
Polynomial Interpretation
- a: 0
- b: 3
- f(x): 0
- f#(x): x
- g(x): 1
- s(x): 0
Improved Usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
Problem 4: BackwardInstantiation
Dependency Pair Problem
Dependency Pairs
Rewrite Rules
f(g(a)) | → | f(s(g(b))) | | f(f(x)) | → | b |
g(x) | → | f(g(x)) |
Original Signature
Termination of terms over the following signature is verified: f, g, s, b, a
Strategy
Instantiation
For all potential predecessors l → r of the rule g
#(
x) → g
#(
x) on dependency pair chains it holds that:
- g#(x) matches r,
- all variables of g#(x) are embedded in constructor contexts, i.e., each subterm of g#(x), containing a variable is rooted by a constructor symbol.
Thus, g
#(
x) → g
#(
x) is replaced by instances determined through the above matching. These instances are:
Problem 5: BackwardInstantiation
Dependency Pair Problem
Dependency Pairs
Rewrite Rules
f(g(a)) | → | f(s(g(b))) | | f(f(x)) | → | b |
g(x) | → | f(g(x)) |
Original Signature
Termination of terms over the following signature is verified: f, g, b, s, a
Strategy
Instantiation
For all potential predecessors l → r of the rule g
#(
_x) → g
#(
_x) on dependency pair chains it holds that:
- g#(_x) matches r,
- all variables of g#(_x) are embedded in constructor contexts, i.e., each subterm of g#(_x), containing a variable is rooted by a constructor symbol.
Thus, g
#(
_x) → g
#(
_x) is replaced by instances determined through the above matching. These instances are:
Problem 6: BackwardInstantiation
Dependency Pair Problem
Dependency Pairs
Rewrite Rules
f(g(a)) | → | f(s(g(b))) | | f(f(x)) | → | b |
g(x) | → | f(g(x)) |
Original Signature
Termination of terms over the following signature is verified: f, g, s, b, a
Strategy
Instantiation
For all potential predecessors l → r of the rule g
#(
__x) → g
#(
__x) on dependency pair chains it holds that:
- g#(__x) matches r,
- all variables of g#(__x) are embedded in constructor contexts, i.e., each subterm of g#(__x), containing a variable is rooted by a constructor symbol.
Thus, g
#(
__x) → g
#(
__x) is replaced by instances determined through the above matching. These instances are: