The rewrite relation of the following TRS is considered.
app(app(add,0),y) | → | y | (1) |
app(app(add,app(s,x)),y) | → | app(s,app(app(add,x),y)) | (2) |
app(app(mult,0),y) | → | 0 | (3) |
app(app(mult,app(s,x)),y) | → | app(app(add,app(app(mult,x),y)),y) | (4) |
app(app(app(rec,f),x),0) | → | x | (5) |
app(app(app(rec,f),x),app(s,y)) | → | app(app(f,app(s,y)),app(app(app(rec,f),x),y)) | (6) |
fact | → | app(app(rec,mult),app(s,0)) | (7) |
We uncurry the binary symbol app in combination with the following symbol map which also determines the applicative arities of these symbols.
add | is mapped to | add, | add1(x1), | add2(x1, x2) | |
0 | is mapped to | 0 | |||
s | is mapped to | s, | s1(x1) | ||
mult | is mapped to | mult, | mult1(x1), | mult2(x1, x2) | |
rec | is mapped to | rec, | rec1(x1), | rec2(x1, x2), | rec3(x1, x2, x3) |
fact | is mapped to | fact |
add2(0,y) | → | y | (16) |
add2(s1(x),y) | → | s1(add2(x,y)) | (17) |
mult2(0,y) | → | 0 | (18) |
mult2(s1(x),y) | → | add2(mult2(x,y),y) | (19) |
rec3(f,x,0) | → | x | (20) |
rec3(f,x,s1(y)) | → | app(app(f,s1(y)),rec3(f,x,y)) | (21) |
fact | → | rec2(mult,s1(0)) | (22) |
app(add,y1) | → | add1(y1) | (8) |
app(add1(x0),y1) | → | add2(x0,y1) | (9) |
app(s,y1) | → | s1(y1) | (10) |
app(mult,y1) | → | mult1(y1) | (11) |
app(mult1(x0),y1) | → | mult2(x0,y1) | (12) |
app(rec,y1) | → | rec1(y1) | (13) |
app(rec1(x0),y1) | → | rec2(x0,y1) | (14) |
app(rec2(x0,x1),y1) | → | rec3(x0,x1,y1) | (15) |
The TRS is overlay and locally confluent:
10Hence, it suffices to show innermost termination in the following.
add2#(s1(x),y) | → | add2#(x,y) | (23) |
mult2#(s1(x),y) | → | add2#(mult2(x,y),y) | (24) |
mult2#(s1(x),y) | → | mult2#(x,y) | (25) |
rec3#(f,x,s1(y)) | → | app#(app(f,s1(y)),rec3(f,x,y)) | (26) |
rec3#(f,x,s1(y)) | → | app#(f,s1(y)) | (27) |
rec3#(f,x,s1(y)) | → | rec3#(f,x,y) | (28) |
app#(add1(x0),y1) | → | add2#(x0,y1) | (29) |
app#(mult1(x0),y1) | → | mult2#(x0,y1) | (30) |
app#(rec2(x0,x1),y1) | → | rec3#(x0,x1,y1) | (31) |
The dependency pairs are split into 3 components.
app#(rec2(x0,x1),y1) | → | rec3#(x0,x1,y1) | (31) |
rec3#(f,x,s1(y)) | → | app#(app(f,s1(y)),rec3(f,x,y)) | (26) |
rec3#(f,x,s1(y)) | → | app#(f,s1(y)) | (27) |
rec3#(f,x,s1(y)) | → | rec3#(f,x,y) | (28) |
We restrict the rewrite rules to the following usable rules of the DP problem.
app(add,y1) | → | add1(y1) | (8) |
app(add1(x0),y1) | → | add2(x0,y1) | (9) |
app(s,y1) | → | s1(y1) | (10) |
app(mult,y1) | → | mult1(y1) | (11) |
app(mult1(x0),y1) | → | mult2(x0,y1) | (12) |
app(rec,y1) | → | rec1(y1) | (13) |
app(rec1(x0),y1) | → | rec2(x0,y1) | (14) |
app(rec2(x0,x1),y1) | → | rec3(x0,x1,y1) | (15) |
rec3(f,x,s1(y)) | → | app(app(f,s1(y)),rec3(f,x,y)) | (21) |
rec3(f,x,0) | → | x | (20) |
mult2(0,y) | → | 0 | (18) |
mult2(s1(x),y) | → | add2(mult2(x,y),y) | (19) |
add2(0,y) | → | y | (16) |
add2(s1(x),y) | → | s1(add2(x,y)) | (17) |
We restrict the innermost strategy to the following left hand sides.
add2(0,x0) |
add2(s1(x0),x1) |
mult2(0,x0) |
mult2(s1(x0),x1) |
rec3(x0,x1,0) |
rec3(x0,x1,s1(x2)) |
app(add,x0) |
app(add1(x0),x1) |
app(s,x0) |
app(mult,x0) |
app(mult1(x0),x1) |
app(rec,x0) |
app(rec1(x0),x1) |
app(rec2(x0,x1),x2) |
[app#(x1, x2)] | = |
|
||||||||||||||||
[rec2(x1, x2)] | = |
|
||||||||||||||||
[rec3#(x1, x2, x3)] | = |
|
||||||||||||||||
[s1(x1)] | = |
|
||||||||||||||||
[app(x1, x2)] | = |
|
||||||||||||||||
[rec3(x1, x2, x3)] | = |
|
||||||||||||||||
[add] | = |
|
||||||||||||||||
[add1(x1)] | = |
|
||||||||||||||||
[add2(x1, x2)] | = |
|
||||||||||||||||
[s] | = |
|
||||||||||||||||
[mult] | = |
|
||||||||||||||||
[mult1(x1)] | = |
|
||||||||||||||||
[mult2(x1, x2)] | = |
|
||||||||||||||||
[rec] | = |
|
||||||||||||||||
[rec1(x1)] | = |
|
||||||||||||||||
[0] | = |
|
rec3#(f,x,s1(y)) | → | app#(f,s1(y)) | (27) |
rec3#(add,y1,s1(y2)) | → | app#(add1(s1(y2)),rec3(add,y1,y2)) | (32) |
rec3#(add1(x0),y1,s1(y2)) | → | app#(add2(x0,s1(y2)),rec3(add1(x0),y1,y2)) | (33) |
rec3#(s,y1,s1(y2)) | → | app#(s1(s1(y2)),rec3(s,y1,y2)) | (34) |
rec3#(mult,y1,s1(y2)) | → | app#(mult1(s1(y2)),rec3(mult,y1,y2)) | (35) |
rec3#(mult1(x0),y1,s1(y2)) | → | app#(mult2(x0,s1(y2)),rec3(mult1(x0),y1,y2)) | (36) |
rec3#(rec,y1,s1(y2)) | → | app#(rec1(s1(y2)),rec3(rec,y1,y2)) | (37) |
rec3#(rec1(x0),y1,s1(y2)) | → | app#(rec2(x0,s1(y2)),rec3(rec1(x0),y1,y2)) | (38) |
rec3#(rec2(x0,x1),y1,s1(y2)) | → | app#(rec3(x0,x1,s1(y2)),rec3(rec2(x0,x1),y1,y2)) | (39) |
The dependency pairs are split into 1 component.
rec3#(f,x,s1(y)) | → | rec3#(f,x,y) | (28) |
rec3#(add1(x0),y1,s1(y2)) | → | app#(add2(x0,s1(y2)),rec3(add1(x0),y1,y2)) | (33) |
app#(rec2(x0,x1),y1) | → | rec3#(x0,x1,y1) | (31) |
rec3#(mult1(x0),y1,s1(y2)) | → | app#(mult2(x0,s1(y2)),rec3(mult1(x0),y1,y2)) | (36) |
rec3#(rec1(x0),y1,s1(y2)) | → | app#(rec2(x0,s1(y2)),rec3(rec1(x0),y1,y2)) | (38) |
rec3#(rec2(x0,x1),y1,s1(y2)) | → | app#(rec3(x0,x1,s1(y2)),rec3(rec2(x0,x1),y1,y2)) | (39) |
→ |
rec3#(x0,x1,s1(s1(y_2))) | → | rec3#(x0,x1,s1(y_2)) | (41) |
rec3#(add1(y_0),x1,s1(s1(y_2))) | → | rec3#(add1(y_0),x1,s1(y_2)) | (42) |
rec3#(mult1(y_0),x1,s1(s1(y_2))) | → | rec3#(mult1(y_0),x1,s1(y_2)) | (43) |
rec3#(rec1(y_0),x1,s1(s1(y_2))) | → | rec3#(rec1(y_0),x1,s1(y_2)) | (44) |
rec3#(rec2(y_0,y_1),x1,s1(s1(y_3))) | → | rec3#(rec2(y_0,y_1),x1,s1(y_3)) | (45) |
app#(rec2(add1(y_0),x1),s1(y_2)) | → | rec3#(add1(y_0),x1,s1(y_2)) | (46) |
app#(rec2(mult1(y_0),x1),s1(y_2)) | → | rec3#(mult1(y_0),x1,s1(y_2)) | (47) |
app#(rec2(rec1(y_0),x1),s1(y_2)) | → | rec3#(rec1(y_0),x1,s1(y_2)) | (48) |
app#(rec2(rec2(y_0,y_1),x1),s1(y_3)) | → | rec3#(rec2(y_0,y_1),x1,s1(y_3)) | (49) |
app#(rec2(x0,x1),s1(s1(y_2))) | → | rec3#(x0,x1,s1(s1(y_2))) | (50) |
app#(rec2(add1(y_0),x1),s1(s1(y_2))) | → | rec3#(add1(y_0),x1,s1(s1(y_2))) | (51) |
app#(rec2(mult1(y_0),x1),s1(s1(y_2))) | → | rec3#(mult1(y_0),x1,s1(s1(y_2))) | (52) |
app#(rec2(rec1(y_0),x1),s1(s1(y_2))) | → | rec3#(rec1(y_0),x1,s1(s1(y_2))) | (53) |
app#(rec2(rec2(y_0,y_1),x1),s1(s1(y_3))) | → | rec3#(rec2(y_0,y_1),x1,s1(s1(y_3))) | (54) |
rec3#(add1(y0),x1,s1(s1(x2))) | → | app#(add2(y0,s1(s1(x2))),app(app(add1(y0),s1(x2)),rec3(add1(y0),x1,x2))) | (55) |
rec3#(add1(y0),x1,s1(0)) | → | app#(add2(y0,s1(0)),x1) | (56) |
→ |
rec3#(mult1(y0),x1,s1(s1(x2))) | → | app#(mult2(y0,s1(s1(x2))),app(app(mult1(y0),s1(x2)),rec3(mult1(y0),x1,x2))) | (58) |
rec3#(mult1(y0),x1,s1(0)) | → | app#(mult2(y0,s1(0)),x1) | (59) |
→ |
rec3#(rec1(y0),x1,s1(s1(x2))) | → | app#(rec2(y0,s1(s1(x2))),app(app(rec1(y0),s1(x2)),rec3(rec1(y0),x1,x2))) | (61) |
rec3#(rec1(y0),x1,s1(0)) | → | app#(rec2(y0,s1(0)),x1) | (62) |
→ |
→ |
rec3#(rec2(y0,y1),x1,s1(s1(x2))) | → | app#(app(app(y0,s1(s1(x2))),rec3(y0,y1,s1(x2))),app(app(rec2(y0,y1),s1(x2)),rec3(rec2(y0,y1),x1,x2))) | (65) |
rec3#(rec2(y0,y1),x1,s1(0)) | → | app#(app(app(y0,s1(0)),rec3(y0,y1,0)),x1) | (66) |
→ |
→ |
→ |
→ |
rec3#(rec1(add1(y_0)),s1(y_2),s1(0)) | → | app#(rec2(add1(y_0),s1(0)),s1(y_2)) | (71) |
rec3#(rec1(mult1(y_0)),s1(y_2),s1(0)) | → | app#(rec2(mult1(y_0),s1(0)),s1(y_2)) | (72) |
rec3#(rec1(rec1(y_0)),s1(y_2),s1(0)) | → | app#(rec2(rec1(y_0),s1(0)),s1(y_2)) | (73) |
rec3#(rec1(rec2(y_0,y_1)),s1(y_3),s1(0)) | → | app#(rec2(rec2(y_0,y_1),s1(0)),s1(y_3)) | (74) |
rec3#(rec1(x0),s1(s1(y_2)),s1(0)) | → | app#(rec2(x0,s1(0)),s1(s1(y_2))) | (75) |
rec3#(rec1(add1(y_0)),s1(s1(y_2)),s1(0)) | → | app#(rec2(add1(y_0),s1(0)),s1(s1(y_2))) | (76) |
rec3#(rec1(mult1(y_0)),s1(s1(y_2)),s1(0)) | → | app#(rec2(mult1(y_0),s1(0)),s1(s1(y_2))) | (77) |
rec3#(rec1(rec1(y_0)),s1(s1(y_2)),s1(0)) | → | app#(rec2(rec1(y_0),s1(0)),s1(s1(y_2))) | (78) |
rec3#(rec1(rec2(y_0,y_1)),s1(s1(y_3)),s1(0)) | → | app#(rec2(rec2(y_0,y_1),s1(0)),s1(s1(y_3))) | (79) |
[rec3#(x1, x2, x3)] | = |
|
||||||||||||||||
[s1(x1)] | = |
|
||||||||||||||||
[add1(x1)] | = |
|
||||||||||||||||
[mult1(x1)] | = |
|
||||||||||||||||
[rec1(x1)] | = |
|
||||||||||||||||
[rec2(x1, x2)] | = |
|
||||||||||||||||
[app#(x1, x2)] | = |
|
||||||||||||||||
[0] | = |
|
||||||||||||||||
[add2(x1, x2)] | = |
|
||||||||||||||||
[app(x1, x2)] | = |
|
||||||||||||||||
[rec3(x1, x2, x3)] | = |
|
||||||||||||||||
[mult2(x1, x2)] | = |
|
||||||||||||||||
[add] | = |
|
||||||||||||||||
[s] | = |
|
||||||||||||||||
[mult] | = |
|
||||||||||||||||
[rec] | = |
|
rec3#(mult1(y0),x1,s1(0)) | → | app#(mult2(y0,s1(0)),x1) | (59) |
rec3#(mult1(y0),x1,s1(s1(x2))) | → | app#(mult2(y0,s1(s1(x2))),app(mult2(y0,s1(x2)),rec3(mult1(y0),x1,x2))) | (60) |
[rec3#(x1, x2, x3)] | = |
|
||||||||||||||||
[s1(x1)] | = |
|
||||||||||||||||
[add1(x1)] | = |
|
||||||||||||||||
[mult1(x1)] | = |
|
||||||||||||||||
[rec1(x1)] | = |
|
||||||||||||||||
[rec2(x1, x2)] | = |
|
||||||||||||||||
[app#(x1, x2)] | = |
|
||||||||||||||||
[0] | = |
|
||||||||||||||||
[add2(x1, x2)] | = |
|
||||||||||||||||
[app(x1, x2)] | = |
|
||||||||||||||||
[rec3(x1, x2, x3)] | = |
|
||||||||||||||||
[add] | = |
|
||||||||||||||||
[s] | = |
|
||||||||||||||||
[mult] | = |
|
||||||||||||||||
[mult2(x1, x2)] | = |
|
||||||||||||||||
[rec] | = |
|
rec3#(rec1(mult1(y_0)),s1(y_2),s1(0)) | → | app#(rec2(mult1(y_0),s1(0)),s1(y_2)) | (72) |
rec3#(rec1(mult1(y_0)),s1(s1(y_2)),s1(0)) | → | app#(rec2(mult1(y_0),s1(0)),s1(s1(y_2))) | (77) |
[rec3#(x1, x2, x3)] | = |
|
||||||||||||||||
[s1(x1)] | = |
|
||||||||||||||||
[add1(x1)] | = |
|
||||||||||||||||
[mult1(x1)] | = |
|
||||||||||||||||
[rec1(x1)] | = |
|
||||||||||||||||
[rec2(x1, x2)] | = |
|
||||||||||||||||
[app#(x1, x2)] | = |
|
||||||||||||||||
[0] | = |
|
||||||||||||||||
[add2(x1, x2)] | = |
|
||||||||||||||||
[app(x1, x2)] | = |
|
||||||||||||||||
[rec3(x1, x2, x3)] | = |
|
||||||||||||||||
[add] | = |
|
||||||||||||||||
[s] | = |
|
||||||||||||||||
[mult] | = |
|
||||||||||||||||
[mult2(x1, x2)] | = |
|
||||||||||||||||
[rec] | = |
|
rec3#(rec1(add1(y_0)),s1(y_2),s1(0)) | → | app#(rec2(add1(y_0),s1(0)),s1(y_2)) | (71) |
rec3#(rec1(add1(y_0)),s1(s1(y_2)),s1(0)) | → | app#(rec2(add1(y_0),s1(0)),s1(s1(y_2))) | (76) |
[rec3#(x1, x2, x3)] | = |
|
||||||||||||||||
[s1(x1)] | = |
|
||||||||||||||||
[add1(x1)] | = |
|
||||||||||||||||
[mult1(x1)] | = |
|
||||||||||||||||
[rec1(x1)] | = |
|
||||||||||||||||
[rec2(x1, x2)] | = |
|
||||||||||||||||
[app#(x1, x2)] | = |
|
||||||||||||||||
[0] | = |
|
||||||||||||||||
[add2(x1, x2)] | = |
|
||||||||||||||||
[app(x1, x2)] | = |
|
||||||||||||||||
[rec3(x1, x2, x3)] | = |
|
||||||||||||||||
[add] | = |
|
||||||||||||||||
[s] | = |
|
||||||||||||||||
[mult] | = |
|
||||||||||||||||
[mult2(x1, x2)] | = |
|
||||||||||||||||
[rec] | = |
|
rec3#(add1(y0),x1,s1(0)) | → | app#(add2(y0,s1(0)),x1) | (56) |
rec3#(add1(y0),x1,s1(s1(x2))) | → | app#(add2(y0,s1(s1(x2))),app(add2(y0,s1(x2)),rec3(add1(y0),x1,x2))) | (57) |
[rec3#(x1, x2, x3)] | = |
|
||||||||||||||||
[s1(x1)] | = |
|
||||||||||||||||
[add1(x1)] | = |
|
||||||||||||||||
[mult1(x1)] | = |
|
||||||||||||||||
[rec1(x1)] | = |
|
||||||||||||||||
[rec2(x1, x2)] | = |
|
||||||||||||||||
[app#(x1, x2)] | = |
|
||||||||||||||||
[rec3(x1, x2, x3)] | = |
|
||||||||||||||||
[0] | = |
|
||||||||||||||||
[app(x1, x2)] | = |
|
||||||||||||||||
[add] | = |
|
||||||||||||||||
[add2(x1, x2)] | = |
|
||||||||||||||||
[s] | = |
|
||||||||||||||||
[mult] | = |
|
||||||||||||||||
[mult2(x1, x2)] | = |
|
||||||||||||||||
[rec] | = |
|
app#(rec2(add1(y_0),x1),s1(y_2)) | → | rec3#(add1(y_0),x1,s1(y_2)) | (46) |
app#(rec2(add1(y_0),x1),s1(s1(y_2))) | → | rec3#(add1(y_0),x1,s1(s1(y_2))) | (51) |
[rec3#(x1, x2, x3)] | = |
|
||||||||||||||||
[s1(x1)] | = |
|
||||||||||||||||
[add1(x1)] | = |
|
||||||||||||||||
[mult1(x1)] | = |
|
||||||||||||||||
[rec1(x1)] | = |
|
||||||||||||||||
[rec2(x1, x2)] | = |
|
||||||||||||||||
[app#(x1, x2)] | = |
|
||||||||||||||||
[rec3(x1, x2, x3)] | = |
|
||||||||||||||||
[0] | = |
|
||||||||||||||||
[app(x1, x2)] | = |
|
||||||||||||||||
[add] | = |
|
||||||||||||||||
[add2(x1, x2)] | = |
|
||||||||||||||||
[s] | = |
|
||||||||||||||||
[mult] | = |
|
||||||||||||||||
[mult2(x1, x2)] | = |
|
||||||||||||||||
[rec] | = |
|
app#(rec2(mult1(y_0),x1),s1(y_2)) | → | rec3#(mult1(y_0),x1,s1(y_2)) | (47) |
app#(rec2(mult1(y_0),x1),s1(s1(y_2))) | → | rec3#(mult1(y_0),x1,s1(s1(y_2))) | (52) |
[rec3#(x1, x2, x3)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[s1(x1)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[add1(x1)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[mult1(x1)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[rec1(x1)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[rec2(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[app#(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[rec3(x1, x2, x3)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[0] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[app(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[add] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[add2(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[s] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[mult] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[mult2(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[rec] | = |
|
rec3#(rec1(rec2(y_0,y_1)),s1(y_3),s1(0)) | → | app#(rec2(rec2(y_0,y_1),s1(0)),s1(y_3)) | (74) |
rec3#(rec1(rec2(y_0,y_1)),s1(s1(y_3)),s1(0)) | → | app#(rec2(rec2(y_0,y_1),s1(0)),s1(s1(y_3))) | (79) |
[rec3#(x1, x2, x3)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[s1(x1)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[add1(x1)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[mult1(x1)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[rec1(x1)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[rec2(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[app#(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[rec3(x1, x2, x3)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[0] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[app(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[add] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[add2(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[s] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[mult] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[mult2(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[rec] | = |
|
app#(rec2(rec2(y_0,y_1),x1),s1(y_3)) | → | rec3#(rec2(y_0,y_1),x1,s1(y_3)) | (49) |
app#(rec2(rec2(y_0,y_1),x1),s1(s1(y_3))) | → | rec3#(rec2(y_0,y_1),x1,s1(s1(y_3))) | (54) |
[rec3#(x1, x2, x3)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[s1(x1)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[add1(x1)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[mult1(x1)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[rec1(x1)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[rec2(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[app#(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[rec3(x1, x2, x3)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[0] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[app(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[add] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[add2(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[s] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[mult] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[mult2(x1, x2)] | = |
|
||||||||||||||||||||||||||||||||||||||||||
[rec] | = |
|
rec3#(rec2(y0,y1),x1,s1(0)) | → | app#(app(app(y0,s1(0)),y1),x1) | (68) |
rec3#(rec2(y0,y1),x1,s1(s1(x2))) | → | app#(app(app(y0,s1(s1(x2))),app(app(y0,s1(x2)),rec3(y0,y1,x2))),app(app(app(y0,s1(x2)),rec3(y0,y1,x2)),rec3(rec2(y0,y1),x1,x2))) | (70) |
prec(add1) | = | 2 | weight(add1) | = | 2 | ||||
prec(mult1) | = | 1 | weight(mult1) | = | 1 | ||||
prec(rec1) | = | 0 | weight(rec1) | = | 1 |
π(rec3#) | = | 1 |
π(add1) | = | [] |
π(mult1) | = | [] |
π(rec1) | = | [1] |
π(rec2) | = | 1 |
π(app#) | = | 1 |
rec3#(rec1(y0),x1,s1(s1(x2))) | → | app#(rec2(y0,s1(s1(x2))),rec3(y0,s1(x2),rec3(rec1(y0),x1,x2))) | (64) |
rec3#(rec1(rec1(y_0)),s1(y_2),s1(0)) | → | app#(rec2(rec1(y_0),s1(0)),s1(y_2)) | (73) |
rec3#(rec1(x0),s1(s1(y_2)),s1(0)) | → | app#(rec2(x0,s1(0)),s1(s1(y_2))) | (75) |
rec3#(rec1(rec1(y_0)),s1(s1(y_2)),s1(0)) | → | app#(rec2(rec1(y_0),s1(0)),s1(s1(y_2))) | (78) |
The dependency pairs are split into 1 component.
rec3#(x0,x1,s1(s1(y_2))) | → | rec3#(x0,x1,s1(y_2)) | (41) |
rec3#(add1(y_0),x1,s1(s1(y_2))) | → | rec3#(add1(y_0),x1,s1(y_2)) | (42) |
rec3#(mult1(y_0),x1,s1(s1(y_2))) | → | rec3#(mult1(y_0),x1,s1(y_2)) | (43) |
rec3#(rec1(y_0),x1,s1(s1(y_2))) | → | rec3#(rec1(y_0),x1,s1(y_2)) | (44) |
rec3#(rec2(y_0,y_1),x1,s1(s1(y_3))) | → | rec3#(rec2(y_0,y_1),x1,s1(y_3)) | (45) |
We restrict the rewrite rules to the following usable rules of the DP problem.
There are no rules.
We restrict the innermost strategy to the following left hand sides.
There are no lhss.
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
rec3#(x0,x1,s1(s1(y_2))) | → | rec3#(x0,x1,s1(y_2)) | (41) |
1 | ≥ | 1 | |
2 | ≥ | 2 | |
3 | > | 3 | |
rec3#(add1(y_0),x1,s1(s1(y_2))) | → | rec3#(add1(y_0),x1,s1(y_2)) | (42) |
1 | ≥ | 1 | |
2 | ≥ | 2 | |
3 | > | 3 | |
rec3#(mult1(y_0),x1,s1(s1(y_2))) | → | rec3#(mult1(y_0),x1,s1(y_2)) | (43) |
1 | ≥ | 1 | |
2 | ≥ | 2 | |
3 | > | 3 | |
rec3#(rec1(y_0),x1,s1(s1(y_2))) | → | rec3#(rec1(y_0),x1,s1(y_2)) | (44) |
1 | ≥ | 1 | |
2 | ≥ | 2 | |
3 | > | 3 | |
rec3#(rec2(y_0,y_1),x1,s1(s1(y_3))) | → | rec3#(rec2(y_0,y_1),x1,s1(y_3)) | (45) |
1 | ≥ | 1 | |
2 | ≥ | 2 | |
3 | > | 3 |
As there is no critical graph in the transitive closure, there are no infinite chains.
mult2#(s1(x),y) | → | mult2#(x,y) | (25) |
We restrict the rewrite rules to the following usable rules of the DP problem.
There are no rules.
We restrict the innermost strategy to the following left hand sides.
There are no lhss.
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
mult2#(s1(x),y) | → | mult2#(x,y) | (25) |
1 | > | 1 | |
2 | ≥ | 2 |
As there is no critical graph in the transitive closure, there are no infinite chains.
add2#(s1(x),y) | → | add2#(x,y) | (23) |
We restrict the rewrite rules to the following usable rules of the DP problem.
There are no rules.
We restrict the innermost strategy to the following left hand sides.
There are no lhss.
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
add2#(s1(x),y) | → | add2#(x,y) | (23) |
1 | > | 1 | |
2 | ≥ | 2 |
As there is no critical graph in the transitive closure, there are no infinite chains.