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 (145ms).
| Problem 2 was processed with processor SubtermCriterion (1ms).
| Problem 3 was processed with processor PolynomialLinearRange4iUR (3985ms).
| | Problem 5 was processed with processor ForwardNarrowing (6ms).
| | | Problem 6 was processed with processor ForwardNarrowing (3ms).
| | | | Problem 7 was processed with processor ForwardNarrowing (7ms).
| | | | | Problem 8 was processed with processor ForwardNarrowing (6ms).
| | | | | | Problem 9 was processed with processor ForwardNarrowing (0ms).
| | | | | | | Problem 10 was processed with processor ForwardNarrowing (5ms).
| | | | | | | | Problem 11 was processed with processor ForwardNarrowing (14ms).
| | | | | | | | | Problem 12 was processed with processor ForwardNarrowing (10ms).
| | | | | | | | | | Problem 13 was processed with processor ForwardNarrowing (14ms).
| | | | | | | | | | | Problem 14 was processed with processor ForwardNarrowing (8ms).
| | | | | | | | | | | | Problem 15 was processed with processor ForwardNarrowing (6ms).
| | | | | | | | | | | | | Problem 16 was processed with processor ForwardNarrowing (11ms).
| | | | | | | | | | | | | | Problem 17 was processed with processor ForwardNarrowing (10ms).
| | | | | | | | | | | | | | | Problem 18 was processed with processor ForwardNarrowing (12ms).
| | | | | | | | | | | | | | | | Problem 19 was processed with processor ForwardNarrowing (10ms).
| | | | | | | | | | | | | | | | | Problem 20 was processed with processor ForwardNarrowing (11ms).
| | | | | | | | | | | | | | | | | | Problem 21 was processed with processor ForwardNarrowing (11ms).
| | | | | | | | | | | | | | | | | | | Problem 22 was processed with processor ForwardNarrowing (12ms).
| | | | | | | | | | | | | | | | | | | | Problem 23 was processed with processor ForwardNarrowing (8ms).
| | | | | | | | | | | | | | | | | | | | | Problem 24 was processed with processor ForwardNarrowing (9ms).
| | | | | | | | | | | | | | | | | | | | | | Problem 25 was processed with processor ForwardNarrowing (11ms).
| | | | | | | | | | | | | | | | | | | | | | | Problem 26 was processed with processor ForwardNarrowing (12ms).
| | | | | | | | | | | | | | | | | | | | | | | | Problem 27 was processed with processor ForwardNarrowing (11ms).
| | | | | | | | | | | | | | | | | | | | | | | | | Problem 28 was processed with processor ForwardNarrowing (11ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | Problem 29 was processed with processor ForwardNarrowing (6ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 30 was processed with processor ForwardNarrowing (9ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 31 was processed with processor ForwardNarrowing (44ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 32 was processed with processor ForwardNarrowing (8ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 33 was processed with processor ForwardNarrowing (10ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 34 was processed with processor ForwardNarrowing (7ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 35 was processed with processor ForwardNarrowing (9ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 36 was processed with processor ForwardNarrowing (6ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 37 was processed with processor ForwardNarrowing (6ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 38 was processed with processor ForwardNarrowing (7ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 39 was processed with processor ForwardNarrowing (6ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 40 was processed with processor ForwardNarrowing (6ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 41 was processed with processor ForwardNarrowing (7ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 42 was processed with processor ForwardNarrowing (7ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 43 was processed with processor ForwardNarrowing (45ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 44 was processed with processor ForwardNarrowing (7ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 45 was processed with processor ForwardNarrowing (5ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 46 was processed with processor ForwardNarrowing (7ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 47 was processed with processor ForwardNarrowing (5ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 48 was processed with processor ForwardNarrowing (45ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 49 was processed with processor ForwardNarrowing (5ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 50 was processed with processor ForwardNarrowing (5ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 51 was processed with processor ForwardNarrowing (5ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 52 was processed with processor ForwardNarrowing (4ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 53 was processed with processor ForwardNarrowing (4ms).
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem 54 remains open; application of the following processors failed [ForwardNarrowing (5ms), ForwardNarrowing (3ms), ForwardNarrowing (4ms), ForwardNarrowing (3ms), ForwardNarrowing (4ms), ForwardNarrowing (4ms), ForwardNarrowing (4ms), ForwardNarrowing (3ms), ForwardNarrowing (5ms), ForwardNarrowing (4ms), ForwardNarrowing (4ms), ForwardNarrowing (4ms), ForwardNarrowing (4ms), ForwardNarrowing (3ms), ForwardNarrowing (4ms), ForwardNarrowing (5ms), ForwardNarrowing (4ms), ForwardNarrowing (3ms), ForwardNarrowing (3ms), ForwardNarrowing (4ms), ForwardNarrowing (4ms), ForwardNarrowing (4ms), ForwardNarrowing (4ms), ForwardNarrowing (4ms), ForwardNarrowing (4ms), ForwardNarrowing (3ms), ForwardNarrowing (4ms), ForwardNarrowing (3ms), ForwardNarrowing (3ms), ForwardNarrowing (3ms)].
| Problem 4 remains open; application of the following processors failed [SubtermCriterion (0ms), DependencyGraph (5ms), PolynomialLinearRange4iUR (919ms), DependencyGraph (5ms), PolynomialLinearRange4iUR (862ms), DependencyGraph (5ms), PolynomialLinearRange8NegiUR (8397ms), DependencyGraph (5ms), ReductionPairSAT (1480ms), DependencyGraph (49ms), SizeChangePrinciple (494ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (32ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (3ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (36ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (40ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (38ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (39ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (40ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (41ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (2ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (1ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), ForwardNarrowing (0ms), BackwardInstantiation (2ms), ForwardInstantiation (2ms), Propagation (1ms), ForwardNarrowing (1ms), BackwardInstantiation (2ms), ForwardInstantiation (1ms), Propagation (1ms)].
The following open problems remain:
Open Dependency Pair Problem 4
Dependency Pairs
plus#(id(x), s(y)) | → | plus#(x, if(gt(s(y), y), y, s(y))) | | plus#(s(x), s(y)) | → | plus#(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))) |
plus#(s(x), x) | → | plus#(if(gt(x, x), id(x), id(x)), s(x)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Open Dependency Pair Problem 5
Dependency Pairs
times#(x, plus(y, 1)) | → | times#(x, plus(y, times(1, 0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: id, not, plus, 1, 0, s, times, if, true, false, gt, zero
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
plus#(s(x), x) | → | id#(x) | | plus#(id(x), s(y)) | → | plus#(x, if(gt(s(y), y), y, s(y))) |
plus#(id(x), s(y)) | → | gt#(s(y), y) | | times#(x, plus(y, 1)) | → | times#(1, 0) |
plus#(s(x), s(y)) | → | gt#(x, y) | | plus#(s(x), s(y)) | → | if#(gt(x, y), x, y) |
plus#(s(x), x) | → | plus#(if(gt(x, x), id(x), id(x)), s(x)) | | plus#(s(x), x) | → | gt#(x, x) |
plus#(id(x), s(y)) | → | if#(gt(s(y), y), y, s(y)) | | plus#(s(x), s(y)) | → | id#(x) |
plus#(s(x), x) | → | if#(gt(x, x), id(x), id(x)) | | times#(x, plus(y, 1)) | → | plus#(times(x, plus(y, times(1, 0))), x) |
plus#(s(x), s(y)) | → | plus#(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))) | | plus#(s(x), s(y)) | → | if#(not(gt(x, y)), id(x), id(y)) |
gt#(s(x), s(y)) | → | gt#(x, y) | | times#(x, plus(y, 1)) | → | times#(x, plus(y, times(1, 0))) |
not#(x) | → | if#(x, false, true) | | plus#(s(x), s(y)) | → | id#(y) |
plus#(s(x), s(y)) | → | not#(gt(x, y)) | | times#(x, plus(y, 1)) | → | plus#(y, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: id, not, plus, 1, 0, s, times, if, true, false, gt, zero
Strategy
The following SCCs where found
times#(x, plus(y, 1)) → times#(1, 0) | times#(x, plus(y, 1)) → times#(x, plus(y, times(1, 0))) |
plus#(id(x), s(y)) → plus#(x, if(gt(s(y), y), y, s(y))) | plus#(s(x), s(y)) → plus#(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))) |
plus#(s(x), x) → plus#(if(gt(x, x), id(x), id(x)), s(x)) |
gt#(s(x), s(y)) → gt#(x, y) |
Problem 2: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
gt#(s(x), s(y)) | → | gt#(x, y) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: id, not, plus, 1, 0, s, times, if, true, false, gt, zero
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
gt#(s(x), s(y)) | → | gt#(x, y) |
Problem 3: PolynomialLinearRange4iUR
Dependency Pair Problem
Dependency Pairs
times#(x, plus(y, 1)) | → | times#(1, 0) | | times#(x, plus(y, 1)) | → | times#(x, plus(y, times(1, 0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: id, not, plus, 1, 0, s, times, if, true, false, gt, zero
Strategy
Polynomial Interpretation
- 0: 0
- 1: 0
- false: 0
- gt(x,y): x
- id(x): 3x
- if(x,y,z): 0
- not(x): 2x
- plus(x,y): y + 1
- s(x): 0
- times(x,y): 2y + x
- times#(x,y): 2y
- true: 0
- zero: 0
Improved Usable rules
times(x, 0) | → | 0 | | times(x, 1) | → | x |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) |
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | plus(zero, y) | → | y |
plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
times#(x, plus(y, 1)) | → | times#(1, 0) |
Problem 5: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(y, 1)) | → | times#(x, plus(y, times(1, 0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(
y, 1)) → times
#(
x, plus(
y, times(1, 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 |
---|
times#(x, plus(y, 0)) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | |
times#(x, times(1, 0)) | |
Thus, the rule times
#(
x, plus(
y, 1)) → times
#(
x, plus(
y, times(1, 0))) is replaced by the following rules:
times#(x, plus(y, 1)) → times#(x, plus(y, 0)) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(zero, 1)) → times#(x, times(1, 0)) |
Problem 6: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(y, 1)) | → | times#(x, plus(y, 0)) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: id, not, plus, 1, 0, s, times, if, true, false, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(
y, 1)) → times
#(
x, plus(
y, 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 |
---|
times#(x, 0) | |
times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) | |
Thus, the rule times
#(
x, plus(
y, 1)) → times
#(
x, plus(
y, 0)) is replaced by the following rules:
times#(x, plus(s(0), 1)) → times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) | times#(x, plus(zero, 1)) → times#(x, 0) |
Problem 7: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(zero, 1)) | → | times#(x, 0) | | times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(0), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), id(0)), s(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 |
---|
times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) | |
times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) | |
Thus, the rule times
#(
x, plus(s(0), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), id(0)), s(0))) is replaced by the following rules:
times#(x, plus(s(0), 1)) → times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) | times#(x, plus(s(0), 1)) → times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) |
Problem 8: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) | | times#(x, plus(zero, 1)) | → | times#(x, 0) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) |
times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: id, not, plus, 1, 0, s, times, if, true, false, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(0), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), 0), s(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 |
---|
times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(0), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), 0), s(0))) is replaced by the following rules:
times#(x, plus(s(0), 1)) → times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
Problem 9: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(zero, 1)) | → | times#(x, 0) | | times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(zero, 1)) → times
#(
x, 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 times
#(
x, plus(zero, 1)) → times
#(
x, 0) is deleted.
Problem 10: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) |
times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: id, not, plus, 1, 0, s, times, if, true, false, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(0), 1)) → times
#(
x, plus(if(gt(0, 0), 0, id(0)), s(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 |
---|
times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(0), 1)) → times
#(
x, plus(if(gt(0, 0), 0, id(0)), s(0))) is replaced by the following rules:
times#(x, plus(s(0), 1)) → times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
Problem 11: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 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 |
---|
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
Problem 12: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: id, not, plus, 1, 0, s, times, if, true, false, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(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 |
---|
times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) | |
times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) |
Problem 13: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(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 |
---|
times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(0))) | |
times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) |
Problem 14: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: id, not, plus, 1, 0, s, times, if, true, false, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(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 |
---|
times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | |
times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) | |
times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(0))) | |
times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) |
Problem 15: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(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 |
---|
times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) | |
times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) | |
times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
Problem 16: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: id, not, plus, 1, 0, s, times, if, true, false, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 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 |
---|
times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) | |
times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), times(1, 0)), s(times(1, 0)))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
Problem 17: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) | | times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(times(1, 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 |
---|
times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(times(1, 0)))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) |
Problem 18: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: id, not, plus, 1, 0, s, times, if, true, false, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(times(1, 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 |
---|
times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) | |
times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(times(1, 0)))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(times(1, 0)))) |
Problem 19: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(times(1, 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 |
---|
times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | |
times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(times(1, 0)))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Problem 20: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: id, not, plus, 1, 0, s, times, if, true, false, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(times(1, 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 |
---|
times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) |
Problem 21: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(times(1, 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 |
---|
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) |
Problem 22: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) | | times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: id, not, plus, 1, 0, s, times, if, true, false, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(times(1, 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 |
---|
times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(times(1, 0)))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) |
Problem 23: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) | | times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(times(1, 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 |
---|
times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) |
Problem 24: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: id, not, plus, 1, 0, s, times, if, true, false, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(times(1, 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 |
---|
times#(x, plus(if(gt(times(1, 0), 0), 0, 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) | |
times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), 0, 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) |
Problem 25: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(0), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 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 |
---|
times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(0))) | |
times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
Problem 26: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(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 |
---|
times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(0))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) | |
times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) | |
times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
Problem 27: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, times(1, 0)), 0, 0), s(times(1, 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 |
---|
times#(x, plus(if(gt(0, 0), 0, 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, times(1, 0)), 0, 0), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, 0), s(times(1, 0)))) |
Problem 28: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), times(1, 0)), s(times(1, 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 |
---|
times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) | |
times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), times(1, 0)), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) |
Problem 29: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(zero, 1)) | → | times#(x, times(1, 0)) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), 0, 0), s(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 times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), 0, 0), s(0))) is deleted.
Problem 30: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(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 |
---|
times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) | |
times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) | |
times#(x, plus(if(gt(0, 0), 0, id(times(1, 0))), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, id(times(1, 0))), s(0))) |
Problem 31: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(times(1, 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 |
---|
times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
Problem 32: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(times(1, 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 |
---|
times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(0))) | |
times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) |
Problem 33: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 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 |
---|
times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) | |
times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
Problem 34: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), times(1, 0), id(0)), s(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 |
---|
times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) | |
times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), times(1, 0), id(0)), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) |
Problem 35: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(times(1, 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 |
---|
times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) | |
times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(times(1, 0)))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) |
Problem 36: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), 0), 0, 0), s(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 |
---|
times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(times(1, 0), 0), 0, 0), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
Problem 37: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), 0), s(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 |
---|
times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), 0), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
Problem 38: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, times(1, 0)), 0, 0), s(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 |
---|
times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, times(1, 0)), 0, 0), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
Problem 39: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), 0), s(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 |
---|
times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), 0), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
Problem 40: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), 0), s(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 |
---|
times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), 0), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
Problem 41: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), id(0)), s(times(1, 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 |
---|
times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) | |
times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), id(0)), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) |
Problem 42: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(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 |
---|
times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) | |
times#(x, plus(if(gt(0, 0), times(1, 0), id(0)), s(0))) | |
times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), times(1, 0), id(0)), s(0))) |
Problem 43: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(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 |
---|
times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) | |
times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(0))) |
Problem 44: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(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 |
---|
times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) | |
times#(x, plus(if(gt(0, times(1, 0)), 0, id(times(1, 0))), s(0))) | |
times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(0)), s(0))) | |
times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), times(1, 0)), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), 0, id(times(1, 0))), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), times(1, 0)), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) |
Problem 45: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), 0), s(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 |
---|
times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), 0), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
Problem 46: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(times(1, 0))), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(times(1, 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 |
---|
times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(times(1, 0)))) | |
times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(times(1, 0)))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(times(1, 0)))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
Problem 47: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), 0, times(1, 0)), s(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 |
---|
times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), 0, times(1, 0)), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
Problem 48: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), times(1, 0)), s(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 |
---|
times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) | |
times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), times(1, 0)), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(0))) |
Problem 49: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), 0, times(1, 0)), s(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 |
---|
times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), 0, times(1, 0)), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
Problem 50: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), id(0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(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 |
---|
times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) | |
times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, times(1, 0)), times(1, 0), 0), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, times(1, 0)), 0, 0), s(0))) | times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) |
Problem 51: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(times(1, 0)), times(1, 0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), times(1, 0)), s(times(1, 0)))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(times(1, 0)), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), times(1, 0), 0), s(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 |
---|
times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
Problem 52: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), id(0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), 0, id(times(1, 0))), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), id(times(1, 0))), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), id(0)), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), times(1, 0), 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), 0), s(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 |
---|
times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), id(0), 0), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |
Problem 53: ForwardNarrowing
Dependency Pair Problem
Dependency Pairs
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), times(1, 0)), 0, 0), s(0))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, 0), id(0), 0), s(times(1, 0)))) |
times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(times(1, 0), 0), times(1, 0), times(1, 0)), s(0))) | | times#(x, plus(s(times(1, 0)), 1)) | → | times#(x, plus(if(gt(0, times(1, 0)), id(0), id(0)), s(0))) |
Rewrite Rules
times(x, plus(y, 1)) | → | plus(times(x, plus(y, times(1, 0))), x) | | times(x, 1) | → | x |
times(x, 0) | → | 0 | | plus(s(x), s(y)) | → | s(s(plus(if(gt(x, y), x, y), if(not(gt(x, y)), id(x), id(y))))) |
plus(s(x), x) | → | plus(if(gt(x, x), id(x), id(x)), s(x)) | | plus(zero, y) | → | y |
plus(id(x), s(y)) | → | s(plus(x, if(gt(s(y), y), y, s(y)))) | | id(x) | → | x |
if(true, x, y) | → | x | | if(false, x, y) | → | y |
not(x) | → | if(x, false, true) | | gt(s(x), zero) | → | true |
gt(zero, y) | → | false | | gt(s(x), s(y)) | → | gt(x, y) |
Original Signature
Termination of terms over the following signature is verified: not, id, plus, 1, 0, s, times, if, false, true, gt, zero
Strategy
The right-hand side of the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), times(1, 0), 0), s(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 |
---|
times#(x, plus(if(gt(0, 0), 0, 0), s(0))) | |
Thus, the rule times
#(
x, plus(s(times(1, 0)), 1)) → times
#(
x, plus(if(gt(0, 0), times(1, 0), 0), s(0))) is replaced by the following rules:
times#(x, plus(s(times(1, 0)), 1)) → times#(x, plus(if(gt(0, 0), 0, 0), s(0))) |