TIMEOUT
The TRS could not be proven terminating. The proof attempt took 60001 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (128ms).
| Problem 2 was processed with processor SubtermCriterion (1ms).
| Problem 3 was processed with processor BackwardInstantiation (2ms).
| | Problem 7 was processed with processor BackwardInstantiation (2ms).
| | | Problem 9 was processed with processor Propagation (3ms).
| | | | Problem 11 remains open; application of the following processors failed [ForwardNarrowing (1ms), BackwardInstantiation (1ms), ForwardInstantiation (0ms), Propagation (1ms)].
| Problem 4 was processed with processor SubtermCriterion (1ms).
| Problem 5 was processed with processor BackwardInstantiation (1ms).
| | Problem 8 was processed with processor BackwardInstantiation (1ms).
| | | Problem 10 was processed with processor Propagation (2ms).
| | | | Problem 12 remains open; application of the following processors failed [ForwardNarrowing (0ms), BackwardInstantiation (1ms), ForwardInstantiation (0ms), Propagation (1ms)].
| Problem 6 was processed with processor SubtermCriterion (0ms).
The following open problems remain:
Open Dependency Pair Problem 3
Dependency Pairs
ifTimes#(false, x, y, z, u) | → | timesIter#(x, y, u) | | timesIter#(x, y, z) | → | ifTimes#(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
Rewrite Rules
inc(s(x)) | → | s(inc(x)) | | inc(0) | → | s(0) |
plus(x, y) | → | ifPlus(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus(false, x, y, z) | → | plus(x, z) |
ifPlus(true, x, y, z) | → | y | | minus(s(x), s(y)) | → | minus(x, y) |
minus(0, x) | → | 0 | | minus(x, 0) | → | x |
minus(x, x) | → | 0 | | eq(s(x), s(y)) | → | eq(x, y) |
eq(0, s(x)) | → | false | | eq(s(x), 0) | → | false |
eq(0, 0) | → | true | | eq(x, x) | → | true |
times(x, y) | → | timesIter(x, y, 0) | | timesIter(x, y, z) | → | ifTimes(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, u) |
f | → | g | | f | → | h |
Original Signature
Termination of terms over the following signature is verified: f, g, plus, ifTimes, minus, true, h, ifPlus, timesIter, 0, inc, s, times, false, eq
Open Dependency Pair Problem 5
Dependency Pairs
plus#(x, y) | → | ifPlus#(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus#(false, x, y, z) | → | plus#(x, z) |
Rewrite Rules
inc(s(x)) | → | s(inc(x)) | | inc(0) | → | s(0) |
plus(x, y) | → | ifPlus(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus(false, x, y, z) | → | plus(x, z) |
ifPlus(true, x, y, z) | → | y | | minus(s(x), s(y)) | → | minus(x, y) |
minus(0, x) | → | 0 | | minus(x, 0) | → | x |
minus(x, x) | → | 0 | | eq(s(x), s(y)) | → | eq(x, y) |
eq(0, s(x)) | → | false | | eq(s(x), 0) | → | false |
eq(0, 0) | → | true | | eq(x, x) | → | true |
times(x, y) | → | timesIter(x, y, 0) | | timesIter(x, y, z) | → | ifTimes(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, u) |
f | → | g | | f | → | h |
Original Signature
Termination of terms over the following signature is verified: f, g, plus, ifTimes, minus, true, h, ifPlus, timesIter, 0, inc, s, times, false, eq
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
plus#(x, y) | → | minus#(x, s(0)) | | plus#(x, y) | → | eq#(x, 0) |
ifTimes#(false, x, y, z, u) | → | timesIter#(x, y, u) | | timesIter#(x, y, z) | → | plus#(y, z) |
plus#(x, y) | → | ifPlus#(eq(x, 0), minus(x, s(0)), x, inc(x)) | | timesIter#(x, y, z) | → | minus#(x, s(0)) |
ifPlus#(false, x, y, z) | → | plus#(x, z) | | times#(x, y) | → | timesIter#(x, y, 0) |
timesIter#(x, y, z) | → | eq#(x, 0) | | minus#(s(x), s(y)) | → | minus#(x, y) |
inc#(s(x)) | → | inc#(x) | | eq#(s(x), s(y)) | → | eq#(x, y) |
timesIter#(x, y, z) | → | ifTimes#(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) | | plus#(x, y) | → | inc#(x) |
Rewrite Rules
inc(s(x)) | → | s(inc(x)) | | inc(0) | → | s(0) |
plus(x, y) | → | ifPlus(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus(false, x, y, z) | → | plus(x, z) |
ifPlus(true, x, y, z) | → | y | | minus(s(x), s(y)) | → | minus(x, y) |
minus(0, x) | → | 0 | | minus(x, 0) | → | x |
minus(x, x) | → | 0 | | eq(s(x), s(y)) | → | eq(x, y) |
eq(0, s(x)) | → | false | | eq(s(x), 0) | → | false |
eq(0, 0) | → | true | | eq(x, x) | → | true |
times(x, y) | → | timesIter(x, y, 0) | | timesIter(x, y, z) | → | ifTimes(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, u) |
f | → | g | | f | → | h |
Original Signature
Termination of terms over the following signature is verified: f, g, plus, ifTimes, minus, true, h, ifPlus, timesIter, 0, inc, s, times, false, eq
Strategy
The following SCCs where found
plus#(x, y) → ifPlus#(eq(x, 0), minus(x, s(0)), x, inc(x)) | ifPlus#(false, x, y, z) → plus#(x, z) |
ifTimes#(false, x, y, z, u) → timesIter#(x, y, u) | timesIter#(x, y, z) → ifTimes#(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
minus#(s(x), s(y)) → minus#(x, y) |
eq#(s(x), s(y)) → eq#(x, y) |
Problem 2: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
Rewrite Rules
inc(s(x)) | → | s(inc(x)) | | inc(0) | → | s(0) |
plus(x, y) | → | ifPlus(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus(false, x, y, z) | → | plus(x, z) |
ifPlus(true, x, y, z) | → | y | | minus(s(x), s(y)) | → | minus(x, y) |
minus(0, x) | → | 0 | | minus(x, 0) | → | x |
minus(x, x) | → | 0 | | eq(s(x), s(y)) | → | eq(x, y) |
eq(0, s(x)) | → | false | | eq(s(x), 0) | → | false |
eq(0, 0) | → | true | | eq(x, x) | → | true |
times(x, y) | → | timesIter(x, y, 0) | | timesIter(x, y, z) | → | ifTimes(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, u) |
f | → | g | | f | → | h |
Original Signature
Termination of terms over the following signature is verified: f, g, plus, ifTimes, minus, true, h, ifPlus, timesIter, 0, inc, s, times, false, eq
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
Problem 3: BackwardInstantiation
Dependency Pair Problem
Dependency Pairs
ifTimes#(false, x, y, z, u) | → | timesIter#(x, y, u) | | timesIter#(x, y, z) | → | ifTimes#(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
Rewrite Rules
inc(s(x)) | → | s(inc(x)) | | inc(0) | → | s(0) |
plus(x, y) | → | ifPlus(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus(false, x, y, z) | → | plus(x, z) |
ifPlus(true, x, y, z) | → | y | | minus(s(x), s(y)) | → | minus(x, y) |
minus(0, x) | → | 0 | | minus(x, 0) | → | x |
minus(x, x) | → | 0 | | eq(s(x), s(y)) | → | eq(x, y) |
eq(0, s(x)) | → | false | | eq(s(x), 0) | → | false |
eq(0, 0) | → | true | | eq(x, x) | → | true |
times(x, y) | → | timesIter(x, y, 0) | | timesIter(x, y, z) | → | ifTimes(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, u) |
f | → | g | | f | → | h |
Original Signature
Termination of terms over the following signature is verified: f, g, plus, ifTimes, minus, true, h, ifPlus, timesIter, 0, inc, s, times, false, eq
Strategy
Instantiation
For all potential predecessors l → r of the rule timesIter
#(
x,
y,
z) → ifTimes
#(eq(
x, 0), minus(
x, s(0)),
y,
z, plus(
y,
z)) on dependency pair chains it holds that:
- timesIter#(x, y, z) matches r,
- all variables of timesIter#(x, y, z) are embedded in constructor contexts, i.e., each subterm of timesIter#(x, y, z), containing a variable is rooted by a constructor symbol.
Thus, timesIter
#(
x,
y,
z) → ifTimes
#(eq(
x, 0), minus(
x, s(0)),
y,
z, plus(
y,
z)) is replaced by instances determined through the above matching. These instances are:
timesIter#(_x, _y, _u) → ifTimes#(eq(_x, 0), minus(_x, s(0)), _y, _u, plus(_y, _u)) |
Problem 7: BackwardInstantiation
Dependency Pair Problem
Dependency Pairs
ifTimes#(false, x, y, z, u) | → | timesIter#(x, y, u) | | timesIter#(_x, _y, _u) | → | ifTimes#(eq(_x, 0), minus(_x, s(0)), _y, _u, plus(_y, _u)) |
Rewrite Rules
inc(s(x)) | → | s(inc(x)) | | inc(0) | → | s(0) |
plus(x, y) | → | ifPlus(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus(false, x, y, z) | → | plus(x, z) |
ifPlus(true, x, y, z) | → | y | | minus(s(x), s(y)) | → | minus(x, y) |
minus(0, x) | → | 0 | | minus(x, 0) | → | x |
minus(x, x) | → | 0 | | eq(s(x), s(y)) | → | eq(x, y) |
eq(0, s(x)) | → | false | | eq(s(x), 0) | → | false |
eq(0, 0) | → | true | | eq(x, x) | → | true |
times(x, y) | → | timesIter(x, y, 0) | | timesIter(x, y, z) | → | ifTimes(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, u) |
f | → | g | | f | → | h |
Original Signature
Termination of terms over the following signature is verified: f, g, plus, ifTimes, minus, true, h, ifPlus, timesIter, 0, inc, s, times, false, eq
Strategy
Instantiation
For all potential predecessors l → r of the rule timesIter
#(
_x,
_y,
_u) → ifTimes
#(eq(
_x, 0), minus(
_x, s(0)),
_y,
_u, plus(
_y,
_u)) on dependency pair chains it holds that:
- timesIter#(_x, _y, _u) matches r,
- all variables of timesIter#(_x, _y, _u) are embedded in constructor contexts, i.e., each subterm of timesIter#(_x, _y, _u), containing a variable is rooted by a constructor symbol.
Thus, timesIter
#(
_x,
_y,
_u) → ifTimes
#(eq(
_x, 0), minus(
_x, s(0)),
_y,
_u, plus(
_y,
_u)) is replaced by instances determined through the above matching. These instances are:
timesIter#(x, y, u) → ifTimes#(eq(x, 0), minus(x, s(0)), y, u, plus(y, u)) |
Problem 9: Propagation
Dependency Pair Problem
Dependency Pairs
ifTimes#(false, x, y, z, u) | → | timesIter#(x, y, u) | | timesIter#(x, y, u) | → | ifTimes#(eq(x, 0), minus(x, s(0)), y, u, plus(y, u)) |
Rewrite Rules
inc(s(x)) | → | s(inc(x)) | | inc(0) | → | s(0) |
plus(x, y) | → | ifPlus(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus(false, x, y, z) | → | plus(x, z) |
ifPlus(true, x, y, z) | → | y | | minus(s(x), s(y)) | → | minus(x, y) |
minus(0, x) | → | 0 | | minus(x, 0) | → | x |
minus(x, x) | → | 0 | | eq(s(x), s(y)) | → | eq(x, y) |
eq(0, s(x)) | → | false | | eq(s(x), 0) | → | false |
eq(0, 0) | → | true | | eq(x, x) | → | true |
times(x, y) | → | timesIter(x, y, 0) | | timesIter(x, y, z) | → | ifTimes(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, u) |
f | → | g | | f | → | h |
Original Signature
Termination of terms over the following signature is verified: f, g, plus, ifTimes, minus, true, h, ifPlus, timesIter, 0, inc, s, times, false, eq
Strategy
The dependency pairs ifTimes
#(false,
x,
y,
z,
u) → timesIter
#(
x,
y,
u) and timesIter
#(
x,
y,
u) → ifTimes
#(eq(
x, 0), minus(
x, s(0)),
y,
u, plus(
y,
u)) are consolidated into the rule ifTimes
#(false,
x,
y,
z,
u) → ifTimes
#(eq(
x, 0), minus(
x, s(0)),
y,
u, plus(
y,
u)) .
This is possible as
- all subterms of timesIter#(x, y, u) containing variables are rooted by a constructor symbol,
- there is no variable that is replacing in timesIter#(x, y, u), but non-replacing in both ifTimes#(false, x, y, z, u) and ifTimes#(eq(x, 0), minus(x, s(0)), y, u, plus(y, u))
The dependency pairs ifTimes
#(false,
x,
y,
z,
u) → timesIter
#(
x,
y,
u) and timesIter
#(
x,
y,
u) → ifTimes
#(eq(
x, 0), minus(
x, s(0)),
y,
u, plus(
y,
u)) are consolidated into the rule ifTimes
#(false,
x,
y,
z,
u) → ifTimes
#(eq(
x, 0), minus(
x, s(0)),
y,
u, plus(
y,
u)) .
This is possible as
- all subterms of timesIter#(x, y, u) containing variables are rooted by a constructor symbol,
- there is no variable that is replacing in timesIter#(x, y, u), but non-replacing in both ifTimes#(false, x, y, z, u) and ifTimes#(eq(x, 0), minus(x, s(0)), y, u, plus(y, u))
Summary
Removed Dependency Pairs | Added Dependency Pairs |
---|
ifTimes#(false, x, y, z, u) → timesIter#(x, y, u) | ifTimes#(false, x, y, z, u) → ifTimes#(eq(x, 0), minus(x, s(0)), y, u, plus(y, u)) |
timesIter#(x, y, u) → ifTimes#(eq(x, 0), minus(x, s(0)), y, u, plus(y, u)) | |
Problem 4: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
eq#(s(x), s(y)) | → | eq#(x, y) |
Rewrite Rules
inc(s(x)) | → | s(inc(x)) | | inc(0) | → | s(0) |
plus(x, y) | → | ifPlus(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus(false, x, y, z) | → | plus(x, z) |
ifPlus(true, x, y, z) | → | y | | minus(s(x), s(y)) | → | minus(x, y) |
minus(0, x) | → | 0 | | minus(x, 0) | → | x |
minus(x, x) | → | 0 | | eq(s(x), s(y)) | → | eq(x, y) |
eq(0, s(x)) | → | false | | eq(s(x), 0) | → | false |
eq(0, 0) | → | true | | eq(x, x) | → | true |
times(x, y) | → | timesIter(x, y, 0) | | timesIter(x, y, z) | → | ifTimes(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, u) |
f | → | g | | f | → | h |
Original Signature
Termination of terms over the following signature is verified: f, g, plus, ifTimes, minus, true, h, ifPlus, timesIter, 0, inc, s, times, false, eq
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
eq#(s(x), s(y)) | → | eq#(x, y) |
Problem 5: BackwardInstantiation
Dependency Pair Problem
Dependency Pairs
plus#(x, y) | → | ifPlus#(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus#(false, x, y, z) | → | plus#(x, z) |
Rewrite Rules
inc(s(x)) | → | s(inc(x)) | | inc(0) | → | s(0) |
plus(x, y) | → | ifPlus(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus(false, x, y, z) | → | plus(x, z) |
ifPlus(true, x, y, z) | → | y | | minus(s(x), s(y)) | → | minus(x, y) |
minus(0, x) | → | 0 | | minus(x, 0) | → | x |
minus(x, x) | → | 0 | | eq(s(x), s(y)) | → | eq(x, y) |
eq(0, s(x)) | → | false | | eq(s(x), 0) | → | false |
eq(0, 0) | → | true | | eq(x, x) | → | true |
times(x, y) | → | timesIter(x, y, 0) | | timesIter(x, y, z) | → | ifTimes(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, u) |
f | → | g | | f | → | h |
Original Signature
Termination of terms over the following signature is verified: f, g, plus, ifTimes, minus, true, h, ifPlus, timesIter, 0, inc, s, times, false, eq
Strategy
Instantiation
For all potential predecessors l → r of the rule plus
#(
x,
y) → ifPlus
#(eq(
x, 0), minus(
x, s(0)),
x, inc(
x)) on dependency pair chains it holds that:
- plus#(x, y) matches r,
- all variables of plus#(x, y) are embedded in constructor contexts, i.e., each subterm of plus#(x, y), containing a variable is rooted by a constructor symbol.
Thus, plus
#(
x,
y) → ifPlus
#(eq(
x, 0), minus(
x, s(0)),
x, inc(
x)) is replaced by instances determined through the above matching. These instances are:
plus#(_x, _z) → ifPlus#(eq(_x, 0), minus(_x, s(0)), _x, inc(_x)) |
Problem 8: BackwardInstantiation
Dependency Pair Problem
Dependency Pairs
plus#(_x, _z) | → | ifPlus#(eq(_x, 0), minus(_x, s(0)), _x, inc(_x)) | | ifPlus#(false, x, y, z) | → | plus#(x, z) |
Rewrite Rules
inc(s(x)) | → | s(inc(x)) | | inc(0) | → | s(0) |
plus(x, y) | → | ifPlus(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus(false, x, y, z) | → | plus(x, z) |
ifPlus(true, x, y, z) | → | y | | minus(s(x), s(y)) | → | minus(x, y) |
minus(0, x) | → | 0 | | minus(x, 0) | → | x |
minus(x, x) | → | 0 | | eq(s(x), s(y)) | → | eq(x, y) |
eq(0, s(x)) | → | false | | eq(s(x), 0) | → | false |
eq(0, 0) | → | true | | eq(x, x) | → | true |
times(x, y) | → | timesIter(x, y, 0) | | timesIter(x, y, z) | → | ifTimes(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, u) |
f | → | g | | f | → | h |
Original Signature
Termination of terms over the following signature is verified: f, g, plus, ifTimes, minus, true, h, ifPlus, timesIter, 0, inc, s, times, false, eq
Strategy
Instantiation
For all potential predecessors l → r of the rule plus
#(
_x,
_z) → ifPlus
#(eq(
_x, 0), minus(
_x, s(0)),
_x, inc(
_x)) on dependency pair chains it holds that:
- plus#(_x, _z) matches r,
- all variables of plus#(_x, _z) are embedded in constructor contexts, i.e., each subterm of plus#(_x, _z), containing a variable is rooted by a constructor symbol.
Thus, plus
#(
_x,
_z) → ifPlus
#(eq(
_x, 0), minus(
_x, s(0)),
_x, inc(
_x)) is replaced by instances determined through the above matching. These instances are:
plus#(x, z) → ifPlus#(eq(x, 0), minus(x, s(0)), x, inc(x)) |
Problem 10: Propagation
Dependency Pair Problem
Dependency Pairs
plus#(x, z) | → | ifPlus#(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus#(false, x, y, z) | → | plus#(x, z) |
Rewrite Rules
inc(s(x)) | → | s(inc(x)) | | inc(0) | → | s(0) |
plus(x, y) | → | ifPlus(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus(false, x, y, z) | → | plus(x, z) |
ifPlus(true, x, y, z) | → | y | | minus(s(x), s(y)) | → | minus(x, y) |
minus(0, x) | → | 0 | | minus(x, 0) | → | x |
minus(x, x) | → | 0 | | eq(s(x), s(y)) | → | eq(x, y) |
eq(0, s(x)) | → | false | | eq(s(x), 0) | → | false |
eq(0, 0) | → | true | | eq(x, x) | → | true |
times(x, y) | → | timesIter(x, y, 0) | | timesIter(x, y, z) | → | ifTimes(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, u) |
f | → | g | | f | → | h |
Original Signature
Termination of terms over the following signature is verified: f, g, plus, ifTimes, minus, true, h, ifPlus, timesIter, 0, inc, s, times, false, eq
Strategy
The dependency pairs ifPlus
#(false,
x,
y,
z) → plus
#(
x,
z) and plus
#(
x,
z) → ifPlus
#(eq(
x, 0), minus(
x, s(0)),
x, inc(
x)) are consolidated into the rule ifPlus
#(false,
x,
y,
z) → ifPlus
#(eq(
x, 0), minus(
x, s(0)),
x, inc(
x)) .
This is possible as
- all subterms of plus#(x, z) containing variables are rooted by a constructor symbol,
- there is no variable that is replacing in plus#(x, z), but non-replacing in both ifPlus#(false, x, y, z) and ifPlus#(eq(x, 0), minus(x, s(0)), x, inc(x))
The dependency pairs ifPlus
#(false,
x,
y,
z) → plus
#(
x,
z) and plus
#(
x,
z) → ifPlus
#(eq(
x, 0), minus(
x, s(0)),
x, inc(
x)) are consolidated into the rule ifPlus
#(false,
x,
y,
z) → ifPlus
#(eq(
x, 0), minus(
x, s(0)),
x, inc(
x)) .
This is possible as
- all subterms of plus#(x, z) containing variables are rooted by a constructor symbol,
- there is no variable that is replacing in plus#(x, z), but non-replacing in both ifPlus#(false, x, y, z) and ifPlus#(eq(x, 0), minus(x, s(0)), x, inc(x))
Summary
Removed Dependency Pairs | Added Dependency Pairs |
---|
plus#(x, z) → ifPlus#(eq(x, 0), minus(x, s(0)), x, inc(x)) | ifPlus#(false, x, y, z) → ifPlus#(eq(x, 0), minus(x, s(0)), x, inc(x)) |
ifPlus#(false, x, y, z) → plus#(x, z) | |
Problem 6: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
minus#(s(x), s(y)) | → | minus#(x, y) |
Rewrite Rules
inc(s(x)) | → | s(inc(x)) | | inc(0) | → | s(0) |
plus(x, y) | → | ifPlus(eq(x, 0), minus(x, s(0)), x, inc(x)) | | ifPlus(false, x, y, z) | → | plus(x, z) |
ifPlus(true, x, y, z) | → | y | | minus(s(x), s(y)) | → | minus(x, y) |
minus(0, x) | → | 0 | | minus(x, 0) | → | x |
minus(x, x) | → | 0 | | eq(s(x), s(y)) | → | eq(x, y) |
eq(0, s(x)) | → | false | | eq(s(x), 0) | → | false |
eq(0, 0) | → | true | | eq(x, x) | → | true |
times(x, y) | → | timesIter(x, y, 0) | | timesIter(x, y, z) | → | ifTimes(eq(x, 0), minus(x, s(0)), y, z, plus(y, z)) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, u) |
f | → | g | | f | → | h |
Original Signature
Termination of terms over the following signature is verified: f, g, plus, ifTimes, minus, true, h, ifPlus, timesIter, 0, inc, s, times, false, eq
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
minus#(s(x), s(y)) | → | minus#(x, y) |