The rewrite relation of the following equational TRS is considered.
| zero(0) | → | 0 | (1) |
| plus(x,0) | → | x | (2) |
| plus(zero(x),zero(y)) | → | zero(plus(x,y)) | (3) |
| plus(zero(x),un(y)) | → | un(plus(x,y)) | (4) |
| plus(zero(x),j(y)) | → | j(plus(x,y)) | (5) |
| plus(un(x),j(y)) | → | zero(plus(x,y)) | (6) |
| plus(un(x),un(y)) | → | j(plus(x,plus(y,un(0)))) | (7) |
| plus(j(x),j(y)) | → | un(plus(x,plus(y,j(0)))) | (8) |
| minus(x,y) | → | plus(x,neg(y)) | (9) |
| neg(0) | → | 0 | (10) |
| neg(zero(x)) | → | zero(neg(x)) | (11) |
| neg(un(x)) | → | j(neg(x)) | (12) |
| neg(j(x)) | → | un(neg(x)) | (13) |
| times(x,0) | → | 0 | (14) |
| times(x,times(0,z)) | → | times(0,z) | (15) |
| times(x,zero(y)) | → | zero(times(x,y)) | (16) |
| times(x,times(zero(y),z)) | → | times(zero(times(x,y)),z) | (17) |
| times(x,un(y)) | → | plus(x,zero(times(x,y))) | (18) |
| times(x,times(un(y),z)) | → | times(plus(x,zero(times(x,y))),z) | (19) |
| times(x,j(y)) | → | plus(zero(times(x,y)),neg(x)) | (20) |
| times(x,times(j(y),z)) | → | times(plus(zero(times(x,y)),neg(x)),z) | (21) |
Associative symbols: plus, times
Commutative symbols: plus, times
| [plus(x1, x2)] | = | 1 · x2 + 1 · x1 |
| [times(x1, x2)] | = | 1 · x2 + 1 · x1 + 2 · x1 · x2 |
| [zero(x1)] | = | 1 · x1 |
| [0] | = | 0 |
| [un(x1)] | = | 1 + 1 · x1 |
| [j(x1)] | = | 1 + 1 · x1 |
| [minus(x1, x2)] | = | 1 · x2 + 1 · x1 |
| [neg(x1)] | = | 1 · x1 |
| plus(un(x),j(y)) | → | zero(plus(x,y)) | (6) |
| times(x,un(y)) | → | plus(x,zero(times(x,y))) | (18) |
| times(x,times(un(y),z)) | → | times(plus(x,zero(times(x,y))),z) | (19) |
| times(x,j(y)) | → | plus(zero(times(x,y)),neg(x)) | (20) |
| times(x,times(j(y),z)) | → | times(plus(zero(times(x,y)),neg(x)),z) | (21) |
| [plus(x1, x2)] | = | 1 · x2 + 1 · x1 + 1 · x1 · x2 |
| [times(x1, x2)] | = | 1 · x2 + 1 · x1 |
| [zero(x1)] | = | 1 · x1 |
| [0] | = | 0 |
| [un(x1)] | = | 1 + 2 · x1 |
| [j(x1)] | = | 1 + 2 · x1 |
| [minus(x1, x2)] | = | 3 + 3 · x2 + 1 · x1 + 3 · x1 · x2 |
| [neg(x1)] | = | 2 · x1 |
| minus(x,y) | → | plus(x,neg(y)) | (9) |
| neg(un(x)) | → | j(neg(x)) | (12) |
| neg(j(x)) | → | un(neg(x)) | (13) |
| [plus(x1, x2)] | = | 1 · x2 + 1 · x1 |
| [times(x1, x2)] | = | 2 + 2 · x2 + 2 · x1 + 1 · x1 · x2 |
| [zero(x1)] | = | 1 + 1 · x1 |
| [0] | = | 0 |
| [un(x1)] | = | 1 · x1 |
| [j(x1)] | = | 1 · x1 |
| [neg(x1)] | = | 3 + 3 · x1 · x1 |
| zero(0) | → | 0 | (1) |
| plus(zero(x),zero(y)) | → | zero(plus(x,y)) | (3) |
| plus(zero(x),un(y)) | → | un(plus(x,y)) | (4) |
| plus(zero(x),j(y)) | → | j(plus(x,y)) | (5) |
| neg(0) | → | 0 | (10) |
| neg(zero(x)) | → | zero(neg(x)) | (11) |
| times(x,0) | → | 0 | (14) |
| times(x,times(0,z)) | → | times(0,z) | (15) |
| times(x,zero(y)) | → | zero(times(x,y)) | (16) |
| times(x,times(zero(y),z)) | → | times(zero(times(x,y)),z) | (17) |
The following set of (strict) dependency pairs is constructed for the TRS.
| plus#(un(x),un(y)) | → | plus#(x,plus(y,un(0))) | (29) |
| plus#(un(x),un(y)) | → | plus#(y,un(0)) | (30) |
| plus#(j(x),j(y)) | → | plus#(x,plus(y,j(0))) | (31) |
| plus#(j(x),j(y)) | → | plus#(y,j(0)) | (32) |
| plus#(plus(x,0),ext) | → | plus#(x,ext) | (33) |
| plus#(plus(un(x),un(y)),ext) | → | plus#(j(plus(x,plus(y,un(0)))),ext) | (34) |
| plus#(plus(un(x),un(y)),ext) | → | plus#(x,plus(y,un(0))) | (35) |
| plus#(plus(un(x),un(y)),ext) | → | plus#(y,un(0)) | (36) |
| plus#(plus(j(x),j(y)),ext) | → | plus#(un(plus(x,plus(y,j(0)))),ext) | (37) |
| plus#(plus(j(x),j(y)),ext) | → | plus#(x,plus(y,j(0))) | (38) |
| plus#(plus(j(x),j(y)),ext) | → | plus#(y,j(0)) | (39) |
| plus(plus(x,0),ext) | → | plus(x,ext) | (40) |
| plus(plus(un(x),un(y)),ext) | → | plus(j(plus(x,plus(y,un(0)))),ext) | (41) |
| plus(plus(j(x),j(y)),ext) | → | plus(un(plus(x,plus(y,j(0)))),ext) | (42) |
| [plus#(x1, x2)] | = | 1 · x1 + 1 · x2 |
| [plus(x1, x2)] | = | 1 · x1 + 1 · x2 |
| [times(x1, x2)] | = | 1 · x1 + 1 · x2 |
| [0] | = | 0 |
| [un(x1)] | = | 1 + 1 · x1 |
| [j(x1)] | = | 1 + 1 · x1 |
| plus(x,0) | → | x | (2) |
| plus(un(x),un(y)) | → | j(plus(x,plus(y,un(0)))) | (7) |
| plus(j(x),j(y)) | → | un(plus(x,plus(y,j(0)))) | (8) |
| plus(plus(x,0),ext) | → | plus(x,ext) | (40) |
| plus(plus(un(x),un(y)),ext) | → | plus(j(plus(x,plus(y,un(0)))),ext) | (41) |
| plus(plus(j(x),j(y)),ext) | → | plus(un(plus(x,plus(y,j(0)))),ext) | (42) |
| plus(x,y) | → | plus(y,x) | (22) |
| times(x,y) | → | times(y,x) | (23) |
| plus(plus(x,y),z) | → | plus(x,plus(y,z)) | (24) |
| times(times(x,y),z) | → | times(x,times(y,z)) | (25) |
| plus#(un(x),un(y)) | → | plus#(x,plus(y,un(0))) | (29) |
| plus#(un(x),un(y)) | → | plus#(y,un(0)) | (30) |
| plus#(j(x),j(y)) | → | plus#(x,plus(y,j(0))) | (31) |
| plus#(j(x),j(y)) | → | plus#(y,j(0)) | (32) |
| plus#(plus(un(x),un(y)),ext) | → | plus#(x,plus(y,un(0))) | (35) |
| plus#(plus(un(x),un(y)),ext) | → | plus#(y,un(0)) | (36) |
| plus#(plus(j(x),j(y)),ext) | → | plus#(x,plus(y,j(0))) | (38) |
| plus#(plus(j(x),j(y)),ext) | → | plus#(y,j(0)) | (39) |
| [plus#(x1, x2)] | = | 2 · x1 + 2 · x2 |
| [plus(x1, x2)] | = | 1 · x1 + 1 · x2 |
| [0] | = | 1 |
| [un(x1)] | = | 0 |
| [j(x1)] | = | 0 |
| plus(j(x),j(y)) | → | un(plus(x,plus(y,j(0)))) | (8) |
| plus(un(x),un(y)) | → | j(plus(x,plus(y,un(0)))) | (7) |
| plus(x,0) | → | x | (2) |
| plus(plus(un(x),un(y)),ext) | → | plus(j(plus(x,plus(y,un(0)))),ext) | (41) |
| plus(plus(x,0),ext) | → | plus(x,ext) | (40) |
| plus(plus(j(x),j(y)),ext) | → | plus(un(plus(x,plus(y,j(0)))),ext) | (42) |
| plus(plus(x,y),z) | → | plus(x,plus(y,z)) | (24) |
| plus(x,y) | → | plus(y,x) | (22) |
| plus#(plus(x,0),ext) | → | plus#(x,ext) | (33) |
| [plus#(x1, x2)] | = | 3 · x1 + 3 · x2 |
| [plus(x1, x2)] | = | 3 + 1 · x1 + 1 · x2 |
| [un(x1)] | = | 3 |
| [j(x1)] | = | 0 |
| [0] | = | 0 |
| plus(j(x),j(y)) | → | un(plus(x,plus(y,j(0)))) | (8) |
| plus(un(x),un(y)) | → | j(plus(x,plus(y,un(0)))) | (7) |
| plus(x,0) | → | x | (2) |
| plus(plus(un(x),un(y)),ext) | → | plus(j(plus(x,plus(y,un(0)))),ext) | (41) |
| plus(plus(x,0),ext) | → | plus(x,ext) | (40) |
| plus(plus(j(x),j(y)),ext) | → | plus(un(plus(x,plus(y,j(0)))),ext) | (42) |
| plus(plus(x,y),z) | → | plus(x,plus(y,z)) | (24) |
| plus(x,y) | → | plus(y,x) | (22) |
| plus#(plus(un(x),un(y)),ext) | → | plus#(j(plus(x,plus(y,un(0)))),ext) | (34) |
| plus#(plus(x,y),z) | → | plus#(y,z) | (28) |
| [plus#(x1, x2)] | = | 2 · x1 + 2 · x2 |
| [plus(x1, x2)] | = | 1 + 1 · x1 + 1 · x2 |
| [j(x1)] | = | 0 |
| [un(x1)] | = | 0 |
| [0] | = | 0 |
| plus(j(x),j(y)) | → | un(plus(x,plus(y,j(0)))) | (8) |
| plus(un(x),un(y)) | → | j(plus(x,plus(y,un(0)))) | (7) |
| plus(x,0) | → | x | (2) |
| plus(plus(un(x),un(y)),ext) | → | plus(j(plus(x,plus(y,un(0)))),ext) | (41) |
| plus(plus(x,0),ext) | → | plus(x,ext) | (40) |
| plus(plus(j(x),j(y)),ext) | → | plus(un(plus(x,plus(y,j(0)))),ext) | (42) |
| plus(plus(x,y),z) | → | plus(x,plus(y,z)) | (24) |
| plus(x,y) | → | plus(y,x) | (22) |
| plus#(plus(j(x),j(y)),ext) | → | plus#(un(plus(x,plus(y,j(0)))),ext) | (37) |