The rewrite relation of the following equational TRS is considered.
if(true,x,y) | → | x | (1) |
if(false,x,y) | → | y | (2) |
eq(0,0) | → | true | (3) |
eq(0,s(x)) | → | false | (4) |
eq(s(x),s(y)) | → | eq(x,y) | (5) |
plus(empty,x) | → | x | (6) |
app(x,empty) | → | empty | (7) |
app(x,app(empty,z)) | → | app(empty,z) | (8) |
app(x,plus(y,z)) | → | plus(app(x,y),app(x,z)) | (9) |
app(x,app(plus(y,z),t)) | → | app(plus(app(x,y),app(x,z)),t) | (10) |
app(singl(x),singl(y)) | → | if(eq(x,y),singl(x),empty) | (11) |
Associative symbols: app, plus
Commutative symbols: app, plus
[app(x1, x2)] | = | 1 · x2 + 1 · x1 + 3 · x1 · x2 |
[plus(x1, x2)] | = | 1 + 1 · x2 + 1 · x1 |
[if(x1, x2, x3)] | = | 2 + 1 · x3 + 1 · x2 + 2 · x1 + 2 · x2 · x3 |
[true] | = | 1 |
[false] | = | 3 |
[eq(x1, x2)] | = | 1 · x2 + 2 · x1 |
[0] | = | 2 |
[s(x1)] | = | 1 · x1 + 3 · x1 · x1 |
[empty] | = | 2 |
[singl(x1)] | = | 3 + 1 · x1 |
if(true,x,y) | → | x | (1) |
if(false,x,y) | → | y | (2) |
eq(0,0) | → | true | (3) |
eq(0,s(x)) | → | false | (4) |
plus(empty,x) | → | x | (6) |
app(singl(x),singl(y)) | → | if(eq(x,y),singl(x),empty) | (11) |
[app(x1, x2)] | = | 1 · x2 + 1 · x1 + 1 · x1 · x2 |
[plus(x1, x2)] | = | 2 + 1 · x2 + 1 · x1 |
[eq(x1, x2)] | = | 1 · x2 + 1 · x1 |
[s(x1)] | = | 1 + 1 · x1 + 3 · x1 · x1 |
[empty] | = | 0 |
eq(s(x),s(y)) | → | eq(x,y) | (5) |
The following set of (strict) dependency pairs is constructed for the TRS.
app#(x,plus(y,z)) | → | app#(x,y) | (19) |
app#(x,plus(y,z)) | → | app#(x,z) | (20) |
app#(x,app(plus(y,z),t)) | → | app#(plus(app(x,y),app(x,z)),t) | (21) |
app#(x,app(plus(y,z),t)) | → | app#(x,y) | (22) |
app#(x,app(plus(y,z),t)) | → | app#(x,z) | (23) |
app#(app(x,empty),ext) | → | app#(empty,ext) | (24) |
app#(app(x,app(empty,z)),ext) | → | app#(app(empty,z),ext) | (25) |
app#(app(x,plus(y,z)),ext) | → | app#(plus(app(x,y),app(x,z)),ext) | (26) |
app#(app(x,plus(y,z)),ext) | → | app#(x,y) | (27) |
app#(app(x,plus(y,z)),ext) | → | app#(x,z) | (28) |
app#(app(x,app(plus(y,z),t)),ext) | → | app#(app(plus(app(x,y),app(x,z)),t),ext) | (29) |
app#(app(x,app(plus(y,z),t)),ext) | → | app#(plus(app(x,y),app(x,z)),t) | (30) |
app#(app(x,app(plus(y,z),t)),ext) | → | app#(x,y) | (31) |
app#(app(x,app(plus(y,z),t)),ext) | → | app#(x,z) | (32) |
app(app(x,empty),ext) | → | app(empty,ext) | (33) |
app(app(x,app(empty,z)),ext) | → | app(app(empty,z),ext) | (34) |
app(app(x,plus(y,z)),ext) | → | app(plus(app(x,y),app(x,z)),ext) | (35) |
app(app(x,app(plus(y,z),t)),ext) | → | app(app(plus(app(x,y),app(x,z)),t),ext) | (36) |
[app#(x1, x2)] | = | 1 · x2 + 1 · x1 + 1 · x1 · x2 |
[plus(x1, x2)] | = | 1 + 1 · x2 + 1 · x1 |
[app(x1, x2)] | = | 1 · x2 + 1 · x1 + 1 · x1 · x2 |
[empty] | = | 0 |
app(app(x,app(empty,z)),ext) | → | app(app(empty,z),ext) | (34) |
app(app(x,empty),ext) | → | app(empty,ext) | (33) |
app(x,empty) | → | empty | (7) |
app(app(x,plus(y,z)),ext) | → | app(plus(app(x,y),app(x,z)),ext) | (35) |
app(app(x,app(plus(y,z),t)),ext) | → | app(app(plus(app(x,y),app(x,z)),t),ext) | (36) |
app(x,app(plus(y,z),t)) | → | app(plus(app(x,y),app(x,z)),t) | (10) |
app(x,app(empty,z)) | → | app(empty,z) | (8) |
app(x,plus(y,z)) | → | plus(app(x,y),app(x,z)) | (9) |
app(app(x,y),z) | → | app(x,app(y,z)) | (14) |
app(x,y) | → | app(y,x) | (12) |
plus(plus(x,y),z) | → | plus(x,plus(y,z)) | (15) |
plus(x,y) | → | plus(y,x) | (13) |
app#(x,plus(y,z)) | → | app#(x,y) | (19) |
app#(x,plus(y,z)) | → | app#(x,z) | (20) |
app#(x,app(plus(y,z),t)) | → | app#(x,y) | (22) |
app#(x,app(plus(y,z),t)) | → | app#(x,z) | (23) |
app#(app(x,plus(y,z)),ext) | → | app#(x,y) | (27) |
app#(app(x,plus(y,z)),ext) | → | app#(x,z) | (28) |
app#(app(x,app(plus(y,z),t)),ext) | → | app#(x,y) | (31) |
app#(app(x,app(plus(y,z),t)),ext) | → | app#(x,z) | (32) |
[app#(x1, x2)] | = | 1 · x1 + 1 · x2 |
[app(x1, x2)] | = | 1 + 1 · x1 + 1 · x2 |
[plus(x1, x2)] | = | 0 |
[empty] | = | 0 |
app(app(x,app(empty,z)),ext) | → | app(app(empty,z),ext) | (34) |
app(app(x,empty),ext) | → | app(empty,ext) | (33) |
app(x,empty) | → | empty | (7) |
app(app(x,plus(y,z)),ext) | → | app(plus(app(x,y),app(x,z)),ext) | (35) |
app(app(x,app(plus(y,z),t)),ext) | → | app(app(plus(app(x,y),app(x,z)),t),ext) | (36) |
app(x,app(plus(y,z),t)) | → | app(plus(app(x,y),app(x,z)),t) | (10) |
app(x,app(empty,z)) | → | app(empty,z) | (8) |
app(x,plus(y,z)) | → | plus(app(x,y),app(x,z)) | (9) |
app(app(x,y),z) | → | app(x,app(y,z)) | (14) |
app(x,y) | → | app(y,x) | (12) |
plus(plus(x,y),z) | → | plus(x,plus(y,z)) | (15) |
plus(x,y) | → | plus(y,x) | (13) |
app#(x,app(plus(y,z),t)) | → | app#(plus(app(x,y),app(x,z)),t) | (21) |
app#(app(x,empty),ext) | → | app#(empty,ext) | (24) |
app#(app(x,app(empty,z)),ext) | → | app#(app(empty,z),ext) | (25) |
app#(app(x,plus(y,z)),ext) | → | app#(plus(app(x,y),app(x,z)),ext) | (26) |
app#(app(x,app(plus(y,z),t)),ext) | → | app#(app(plus(app(x,y),app(x,z)),t),ext) | (29) |
app#(app(x,app(plus(y,z),t)),ext) | → | app#(plus(app(x,y),app(x,z)),t) | (30) |
app#(app(x,y),z) | → | app#(y,z) | (18) |