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) |