The rewrite relation of the following TRS is considered.
eq(0,0) | → | true | (1) |
eq(0,s(x)) | → | false | (2) |
eq(s(x),0) | → | false | (3) |
eq(s(x),s(y)) | → | eq(x,y) | (4) |
or(true,y) | → | true | (5) |
or(false,y) | → | y | (6) |
union(empty,h) | → | h | (7) |
union(edge(x,y,i),h) | → | edge(x,y,union(i,h)) | (8) |
isEmpty(empty) | → | true | (9) |
isEmpty(edge(x,y,i)) | → | false | (10) |
from(edge(x,y,i)) | → | x | (11) |
to(edge(x,y,i)) | → | y | (12) |
rest(edge(x,y,i)) | → | i | (13) |
rest(empty) | → | empty | (14) |
reach(x,y,i,h) | → | if1(eq(x,y),isEmpty(i),eq(x,from(i)),eq(y,to(i)),x,y,i,h) | (15) |
if1(true,b1,b2,b3,x,y,i,h) | → | true | (16) |
if1(false,b1,b2,b3,x,y,i,h) | → | if2(b1,b2,b3,x,y,i,h) | (17) |
if2(true,b2,b3,x,y,i,h) | → | false | (18) |
if2(false,b2,b3,x,y,i,h) | → | if3(b2,b3,x,y,i,h) | (19) |
if3(false,b3,x,y,i,h) | → | reach(x,y,rest(i),edge(from(i),to(i),h)) | (20) |
if3(true,b3,x,y,i,h) | → | if4(b3,x,y,i,h) | (21) |
if4(true,x,y,i,h) | → | true | (22) |
if4(false,x,y,i,h) | → | or(reach(x,y,rest(i),h),reach(to(i),y,union(rest(i),h),empty)) | (23) |
The TRS is overlay and locally confluent:
10Hence, it suffices to show innermost termination in the following.
eq#(s(x),s(y)) | → | eq#(x,y) | (24) |
union#(edge(x,y,i),h) | → | union#(i,h) | (25) |
reach#(x,y,i,h) | → | if1#(eq(x,y),isEmpty(i),eq(x,from(i)),eq(y,to(i)),x,y,i,h) | (26) |
reach#(x,y,i,h) | → | eq#(x,y) | (27) |
reach#(x,y,i,h) | → | isEmpty#(i) | (28) |
reach#(x,y,i,h) | → | eq#(x,from(i)) | (29) |
reach#(x,y,i,h) | → | from#(i) | (30) |
reach#(x,y,i,h) | → | eq#(y,to(i)) | (31) |
reach#(x,y,i,h) | → | to#(i) | (32) |
if1#(false,b1,b2,b3,x,y,i,h) | → | if2#(b1,b2,b3,x,y,i,h) | (33) |
if2#(false,b2,b3,x,y,i,h) | → | if3#(b2,b3,x,y,i,h) | (34) |
if3#(false,b3,x,y,i,h) | → | reach#(x,y,rest(i),edge(from(i),to(i),h)) | (35) |
if3#(false,b3,x,y,i,h) | → | rest#(i) | (36) |
if3#(false,b3,x,y,i,h) | → | from#(i) | (37) |
if3#(false,b3,x,y,i,h) | → | to#(i) | (38) |
if3#(true,b3,x,y,i,h) | → | if4#(b3,x,y,i,h) | (39) |
if4#(false,x,y,i,h) | → | or#(reach(x,y,rest(i),h),reach(to(i),y,union(rest(i),h),empty)) | (40) |
if4#(false,x,y,i,h) | → | reach#(x,y,rest(i),h) | (41) |
if4#(false,x,y,i,h) | → | rest#(i) | (42) |
if4#(false,x,y,i,h) | → | reach#(to(i),y,union(rest(i),h),empty) | (43) |
if4#(false,x,y,i,h) | → | to#(i) | (44) |
if4#(false,x,y,i,h) | → | union#(rest(i),h) | (45) |
The dependency pairs are split into 3 components.
reach#(x,y,i,h) | → | if1#(eq(x,y),isEmpty(i),eq(x,from(i)),eq(y,to(i)),x,y,i,h) | (26) |
if1#(false,b1,b2,b3,x,y,i,h) | → | if2#(b1,b2,b3,x,y,i,h) | (33) |
if2#(false,b2,b3,x,y,i,h) | → | if3#(b2,b3,x,y,i,h) | (34) |
if3#(false,b3,x,y,i,h) | → | reach#(x,y,rest(i),edge(from(i),to(i),h)) | (35) |
if3#(true,b3,x,y,i,h) | → | if4#(b3,x,y,i,h) | (39) |
if4#(false,x,y,i,h) | → | reach#(x,y,rest(i),h) | (41) |
if4#(false,x,y,i,h) | → | reach#(to(i),y,union(rest(i),h),empty) | (43) |
We restrict the rewrite rules to the following usable rules of the DP problem.
to(edge(x,y,i)) | → | y | (12) |
rest(edge(x,y,i)) | → | i | (13) |
rest(empty) | → | empty | (14) |
union(empty,h) | → | h | (7) |
union(edge(x,y,i),h) | → | edge(x,y,union(i,h)) | (8) |
from(edge(x,y,i)) | → | x | (11) |
eq(0,0) | → | true | (1) |
eq(0,s(x)) | → | false | (2) |
eq(s(x),0) | → | false | (3) |
eq(s(x),s(y)) | → | eq(x,y) | (4) |
isEmpty(empty) | → | true | (9) |
isEmpty(edge(x,y,i)) | → | false | (10) |
We restrict the innermost strategy to the following left hand sides.
eq(0,0) |
eq(0,s(x0)) |
eq(s(x0),0) |
eq(s(x0),s(x1)) |
union(empty,x0) |
union(edge(x0,x1,x2),x3) |
isEmpty(empty) |
isEmpty(edge(x0,x1,x2)) |
from(edge(x0,x1,x2)) |
to(edge(x0,x1,x2)) |
rest(edge(x0,x1,x2)) |
rest(empty) |
reach#(0,0,y2,y3) | → | if1#(true,isEmpty(y2),eq(0,from(y2)),eq(0,to(y2)),0,0,y2,y3) | (46) |
reach#(0,s(x0),y2,y3) | → | if1#(false,isEmpty(y2),eq(0,from(y2)),eq(s(x0),to(y2)),0,s(x0),y2,y3) | (47) |
reach#(s(x0),0,y2,y3) | → | if1#(false,isEmpty(y2),eq(s(x0),from(y2)),eq(0,to(y2)),s(x0),0,y2,y3) | (48) |
reach#(s(x0),s(x1),y2,y3) | → | if1#(eq(x0,x1),isEmpty(y2),eq(s(x0),from(y2)),eq(s(x1),to(y2)),s(x0),s(x1),y2,y3) | (49) |
The dependency pairs are split into 1 component.
if2#(false,b2,b3,x,y,i,h) | → | if3#(b2,b3,x,y,i,h) | (34) |
if3#(false,b3,x,y,i,h) | → | reach#(x,y,rest(i),edge(from(i),to(i),h)) | (35) |
reach#(0,s(x0),y2,y3) | → | if1#(false,isEmpty(y2),eq(0,from(y2)),eq(s(x0),to(y2)),0,s(x0),y2,y3) | (47) |
if1#(false,b1,b2,b3,x,y,i,h) | → | if2#(b1,b2,b3,x,y,i,h) | (33) |
reach#(s(x0),0,y2,y3) | → | if1#(false,isEmpty(y2),eq(s(x0),from(y2)),eq(0,to(y2)),s(x0),0,y2,y3) | (48) |
reach#(s(x0),s(x1),y2,y3) | → | if1#(eq(x0,x1),isEmpty(y2),eq(s(x0),from(y2)),eq(s(x1),to(y2)),s(x0),s(x1),y2,y3) | (49) |
if3#(true,b3,x,y,i,h) | → | if4#(b3,x,y,i,h) | (39) |
if4#(false,x,y,i,h) | → | reach#(x,y,rest(i),h) | (41) |
if4#(false,x,y,i,h) | → | reach#(to(i),y,union(rest(i),h),empty) | (43) |
if4#(false,y0,y1,edge(x0,x1,x2),y3) | → | reach#(x1,y1,union(rest(edge(x0,x1,x2)),y3),empty) | (50) |
→ |
if1#(false,y_0,y_2,y_4,0,s(z0),z1,z2) | → | if2#(y_0,y_2,y_4,0,s(z0),z1,z2) | (52) |
if1#(false,y_0,y_2,y_4,s(z0),0,z1,z2) | → | if2#(y_0,y_2,y_4,s(z0),0,z1,z2) | (53) |
if1#(false,y_1,y_3,y_5,s(z0),s(z1),z2,z3) | → | if2#(y_1,y_3,y_5,s(z0),s(z1),z2,z3) | (54) |
if2#(false,z1,z2,0,s(z3),z4,z5) | → | if3#(z1,z2,0,s(z3),z4,z5) | (55) |
if2#(false,z1,z2,s(z3),0,z4,z5) | → | if3#(z1,z2,s(z3),0,z4,z5) | (56) |
if2#(false,z1,z2,s(z3),s(z4),z5,z6) | → | if3#(z1,z2,s(z3),s(z4),z5,z6) | (57) |
if3#(false,z1,0,s(z2),z3,z4) | → | reach#(0,s(z2),rest(z3),edge(from(z3),to(z3),z4)) | (58) |
if3#(false,z1,s(z2),0,z3,z4) | → | reach#(s(z2),0,rest(z3),edge(from(z3),to(z3),z4)) | (59) |
if3#(false,z1,s(z2),s(z3),z4,z5) | → | reach#(s(z2),s(z3),rest(z4),edge(from(z4),to(z4),z5)) | (60) |
if3#(true,z1,0,s(z2),z3,z4) | → | if4#(z1,0,s(z2),z3,z4) | (61) |
if3#(true,z1,s(z2),0,z3,z4) | → | if4#(z1,s(z2),0,z3,z4) | (62) |
if3#(true,z1,s(z2),s(z3),z4,z5) | → | if4#(z1,s(z2),s(z3),z4,z5) | (63) |
if4#(false,0,s(z1),z2,z3) | → | reach#(0,s(z1),rest(z2),z3) | (64) |
if4#(false,s(z1),0,z2,z3) | → | reach#(s(z1),0,rest(z2),z3) | (65) |
if4#(false,s(z1),s(z2),z3,z4) | → | reach#(s(z1),s(z2),rest(z3),z4) | (66) |
if4#(false,0,s(z1),edge(x2,x3,x4),z3) | → | reach#(x3,s(z1),union(x4,z3),empty) | (67) |
if4#(false,s(z1),0,edge(x2,x3,x4),z3) | → | reach#(x3,0,union(x4,z3),empty) | (68) |
if4#(false,s(z1),s(z2),edge(x2,x3,x4),z4) | → | reach#(x3,s(z2),union(x4,z4),empty) | (69) |
The dependency pairs are split into 2 components.
if1#(false,y_0,y_2,y_4,0,s(z0),z1,z2) | → | if2#(y_0,y_2,y_4,0,s(z0),z1,z2) | (52) |
if2#(false,z1,z2,0,s(z3),z4,z5) | → | if3#(z1,z2,0,s(z3),z4,z5) | (55) |
if3#(false,z1,0,s(z2),z3,z4) | → | reach#(0,s(z2),rest(z3),edge(from(z3),to(z3),z4)) | (58) |
reach#(0,s(x0),y2,y3) | → | if1#(false,isEmpty(y2),eq(0,from(y2)),eq(s(x0),to(y2)),0,s(x0),y2,y3) | (47) |
if3#(true,z1,0,s(z2),z3,z4) | → | if4#(z1,0,s(z2),z3,z4) | (61) |
if4#(false,0,s(z1),z2,z3) | → | reach#(0,s(z1),rest(z2),z3) | (64) |
if4#(false,0,s(z1),edge(x2,x3,x4),z3) | → | reach#(x3,s(z1),union(x4,z3),empty) | (67) |
reach#(s(x0),s(x1),y2,y3) | → | if1#(eq(x0,x1),isEmpty(y2),eq(s(x0),from(y2)),eq(s(x1),to(y2)),s(x0),s(x1),y2,y3) | (49) |
if1#(false,y_1,y_3,y_5,s(z0),s(z1),z2,z3) | → | if2#(y_1,y_3,y_5,s(z0),s(z1),z2,z3) | (54) |
if2#(false,z1,z2,s(z3),s(z4),z5,z6) | → | if3#(z1,z2,s(z3),s(z4),z5,z6) | (57) |
if3#(false,z1,s(z2),s(z3),z4,z5) | → | reach#(s(z2),s(z3),rest(z4),edge(from(z4),to(z4),z5)) | (60) |
if3#(true,z1,s(z2),s(z3),z4,z5) | → | if4#(z1,s(z2),s(z3),z4,z5) | (63) |
if4#(false,s(z1),s(z2),z3,z4) | → | reach#(s(z1),s(z2),rest(z3),z4) | (66) |
if4#(false,s(z1),s(z2),edge(x2,x3,x4),z4) | → | reach#(x3,s(z2),union(x4,z4),empty) | (69) |
if1#(false,false,x1,x2,0,s(x3),x4,x5) | → | if2#(false,x1,x2,0,s(x3),x4,x5) | (70) |
reach#(0,s(y0),empty,y2) | → | if1#(false,true,eq(0,from(empty)),eq(s(y0),to(empty)),0,s(y0),empty,y2) | (71) |
reach#(0,s(y0),edge(x0,x1,x2),y2) | → | if1#(false,false,eq(0,from(edge(x0,x1,x2))),eq(s(y0),to(edge(x0,x1,x2))),0,s(y0),edge(x0,x1,x2),y2) | (72) |
The dependency pairs are split into 1 component.
if3#(false,z1,0,s(z2),z3,z4) | → | reach#(0,s(z2),rest(z3),edge(from(z3),to(z3),z4)) | (58) |
reach#(0,s(y0),edge(x0,x1,x2),y2) | → | if1#(false,false,eq(0,from(edge(x0,x1,x2))),eq(s(y0),to(edge(x0,x1,x2))),0,s(y0),edge(x0,x1,x2),y2) | (72) |
if1#(false,false,x1,x2,0,s(x3),x4,x5) | → | if2#(false,x1,x2,0,s(x3),x4,x5) | (70) |
if2#(false,z1,z2,0,s(z3),z4,z5) | → | if3#(z1,z2,0,s(z3),z4,z5) | (55) |
if3#(true,z1,0,s(z2),z3,z4) | → | if4#(z1,0,s(z2),z3,z4) | (61) |
if4#(false,0,s(z1),z2,z3) | → | reach#(0,s(z1),rest(z2),z3) | (64) |
if4#(false,0,s(z1),edge(x2,x3,x4),z3) | → | reach#(x3,s(z1),union(x4,z3),empty) | (67) |
reach#(s(x0),s(x1),y2,y3) | → | if1#(eq(x0,x1),isEmpty(y2),eq(s(x0),from(y2)),eq(s(x1),to(y2)),s(x0),s(x1),y2,y3) | (49) |
if1#(false,y_1,y_3,y_5,s(z0),s(z1),z2,z3) | → | if2#(y_1,y_3,y_5,s(z0),s(z1),z2,z3) | (54) |
if2#(false,z1,z2,s(z3),s(z4),z5,z6) | → | if3#(z1,z2,s(z3),s(z4),z5,z6) | (57) |
if3#(false,z1,s(z2),s(z3),z4,z5) | → | reach#(s(z2),s(z3),rest(z4),edge(from(z4),to(z4),z5)) | (60) |
if3#(true,z1,s(z2),s(z3),z4,z5) | → | if4#(z1,s(z2),s(z3),z4,z5) | (63) |
if4#(false,s(z1),s(z2),z3,z4) | → | reach#(s(z1),s(z2),rest(z3),z4) | (66) |
if4#(false,s(z1),s(z2),edge(x2,x3,x4),z4) | → | reach#(x3,s(z2),union(x4,z4),empty) | (69) |
→ |
→ |
if3#(false,y0,0,s(y1),edge(x0,x1,x2),y3) | → | reach#(0,s(y1),x2,edge(from(edge(x0,x1,x2)),to(edge(x0,x1,x2)),y3)) | (75) |
if3#(false,y0,0,s(y1),empty,y3) | → | reach#(0,s(y1),empty,edge(from(empty),to(empty),y3)) | (76) |
The dependency pairs are split into 1 component.
if2#(false,z1,z2,0,s(z3),z4,z5) | → | if3#(z1,z2,0,s(z3),z4,z5) | (55) |
if3#(true,z1,0,s(z2),z3,z4) | → | if4#(z1,0,s(z2),z3,z4) | (61) |
if4#(false,0,s(z1),z2,z3) | → | reach#(0,s(z1),rest(z2),z3) | (64) |
reach#(0,s(y0),edge(x0,x1,x2),y2) | → | if1#(false,false,eq(0,x0),eq(s(y0),x1),0,s(y0),edge(x0,x1,x2),y2) | (74) |
if1#(false,false,x1,x2,0,s(x3),x4,x5) | → | if2#(false,x1,x2,0,s(x3),x4,x5) | (70) |
if4#(false,0,s(z1),edge(x2,x3,x4),z3) | → | reach#(x3,s(z1),union(x4,z3),empty) | (67) |
reach#(s(x0),s(x1),y2,y3) | → | if1#(eq(x0,x1),isEmpty(y2),eq(s(x0),from(y2)),eq(s(x1),to(y2)),s(x0),s(x1),y2,y3) | (49) |
if1#(false,y_1,y_3,y_5,s(z0),s(z1),z2,z3) | → | if2#(y_1,y_3,y_5,s(z0),s(z1),z2,z3) | (54) |
if2#(false,z1,z2,s(z3),s(z4),z5,z6) | → | if3#(z1,z2,s(z3),s(z4),z5,z6) | (57) |
if3#(false,z1,s(z2),s(z3),z4,z5) | → | reach#(s(z2),s(z3),rest(z4),edge(from(z4),to(z4),z5)) | (60) |
if3#(true,z1,s(z2),s(z3),z4,z5) | → | if4#(z1,s(z2),s(z3),z4,z5) | (63) |
if4#(false,s(z1),s(z2),z3,z4) | → | reach#(s(z1),s(z2),rest(z3),z4) | (66) |
if4#(false,s(z1),s(z2),edge(x2,x3,x4),z4) | → | reach#(x3,s(z2),union(x4,z4),empty) | (69) |
if3#(false,y0,0,s(y1),edge(x0,x1,x2),y3) | → | reach#(0,s(y1),x2,edge(from(edge(x0,x1,x2)),to(edge(x0,x1,x2)),y3)) | (75) |
→ |
→ |
if4#(false,0,s(y0),edge(x0,x1,x2),y2) | → | reach#(0,s(y0),x2,y2) | (79) |
if4#(false,0,s(y0),empty,y2) | → | reach#(0,s(y0),empty,y2) | (80) |
The dependency pairs are split into 1 component.
if3#(true,z1,0,s(z2),z3,z4) | → | if4#(z1,0,s(z2),z3,z4) | (61) |
if4#(false,0,s(z1),edge(x2,x3,x4),z3) | → | reach#(x3,s(z1),union(x4,z3),empty) | (67) |
reach#(s(x0),s(x1),y2,y3) | → | if1#(eq(x0,x1),isEmpty(y2),eq(s(x0),from(y2)),eq(s(x1),to(y2)),s(x0),s(x1),y2,y3) | (49) |
if1#(false,y_1,y_3,y_5,s(z0),s(z1),z2,z3) | → | if2#(y_1,y_3,y_5,s(z0),s(z1),z2,z3) | (54) |
if2#(false,z1,z2,s(z3),s(z4),z5,z6) | → | if3#(z1,z2,s(z3),s(z4),z5,z6) | (57) |
if3#(false,z1,s(z2),s(z3),z4,z5) | → | reach#(s(z2),s(z3),rest(z4),edge(from(z4),to(z4),z5)) | (60) |
if3#(true,z1,s(z2),s(z3),z4,z5) | → | if4#(z1,s(z2),s(z3),z4,z5) | (63) |
if4#(false,s(z1),s(z2),z3,z4) | → | reach#(s(z1),s(z2),rest(z3),z4) | (66) |
if4#(false,s(z1),s(z2),edge(x2,x3,x4),z4) | → | reach#(x3,s(z2),union(x4,z4),empty) | (69) |
reach#(0,s(y0),edge(x0,x1,x2),y2) | → | if1#(false,false,eq(0,x0),eq(s(y0),x1),0,s(y0),edge(x0,x1,x2),y2) | (74) |
if1#(false,false,x1,x2,0,s(x3),x4,x5) | → | if2#(false,x1,x2,0,s(x3),x4,x5) | (70) |
if2#(false,z1,z2,0,s(z3),z4,z5) | → | if3#(z1,z2,0,s(z3),z4,z5) | (55) |
if3#(false,y0,0,s(y1),edge(x0,x1,x2),y3) | → | reach#(0,s(y1),x2,edge(x0,x1,y3)) | (78) |
if4#(false,0,s(y0),edge(x0,x1,x2),y2) | → | reach#(0,s(y0),x2,y2) | (79) |
if1#(false,false,y_0,y_1,0,s(z0),edge(z1,z2,z3),z4) | → | if2#(false,y_0,y_1,0,s(z0),edge(z1,z2,z3),z4) | (81) |
if2#(false,z0,z1,0,s(z2),edge(z3,z4,z5),z6) | → | if3#(z0,z1,0,s(z2),edge(z3,z4,z5),z6) | (82) |
if3#(true,z1,0,s(z2),edge(z3,z4,z5),z6) | → | if4#(z1,0,s(z2),edge(z3,z4,z5),z6) | (83) |
if1#(false,false,x1,x2,s(x3),s(x4),x5,x6) | → | if2#(false,x1,x2,s(x3),s(x4),x5,x6) | (84) |
reach#(s(y0),s(y1),empty,y3) | → | if1#(eq(y0,y1),true,eq(s(y0),from(empty)),eq(s(y1),to(empty)),s(y0),s(y1),empty,y3) | (85) |
reach#(s(y0),s(y1),edge(x0,x1,x2),y3) | → | if1#(eq(y0,y1),false,eq(s(y0),from(edge(x0,x1,x2))),eq(s(y1),to(edge(x0,x1,x2))),s(y0),s(y1),edge(x0,x1,x2),y3) | (86) |
The dependency pairs are split into 1 component.
reach#(0,s(y0),edge(x0,x1,x2),y2) | → | if1#(false,false,eq(0,x0),eq(s(y0),x1),0,s(y0),edge(x0,x1,x2),y2) | (74) |
if1#(false,false,y_0,y_1,0,s(z0),edge(z1,z2,z3),z4) | → | if2#(false,y_0,y_1,0,s(z0),edge(z1,z2,z3),z4) | (81) |
if2#(false,z0,z1,0,s(z2),edge(z3,z4,z5),z6) | → | if3#(z0,z1,0,s(z2),edge(z3,z4,z5),z6) | (82) |
if3#(false,y0,0,s(y1),edge(x0,x1,x2),y3) | → | reach#(0,s(y1),x2,edge(x0,x1,y3)) | (78) |
if3#(true,z1,0,s(z2),edge(z3,z4,z5),z6) | → | if4#(z1,0,s(z2),edge(z3,z4,z5),z6) | (83) |
if4#(false,0,s(z1),edge(x2,x3,x4),z3) | → | reach#(x3,s(z1),union(x4,z3),empty) | (67) |
reach#(s(y0),s(y1),edge(x0,x1,x2),y3) | → | if1#(eq(y0,y1),false,eq(s(y0),from(edge(x0,x1,x2))),eq(s(y1),to(edge(x0,x1,x2))),s(y0),s(y1),edge(x0,x1,x2),y3) | (86) |
if1#(false,false,x1,x2,s(x3),s(x4),x5,x6) | → | if2#(false,x1,x2,s(x3),s(x4),x5,x6) | (84) |
if2#(false,z1,z2,s(z3),s(z4),z5,z6) | → | if3#(z1,z2,s(z3),s(z4),z5,z6) | (57) |
if3#(false,z1,s(z2),s(z3),z4,z5) | → | reach#(s(z2),s(z3),rest(z4),edge(from(z4),to(z4),z5)) | (60) |
if3#(true,z1,s(z2),s(z3),z4,z5) | → | if4#(z1,s(z2),s(z3),z4,z5) | (63) |
if4#(false,s(z1),s(z2),z3,z4) | → | reach#(s(z1),s(z2),rest(z3),z4) | (66) |
if4#(false,s(z1),s(z2),edge(x2,x3,x4),z4) | → | reach#(x3,s(z2),union(x4,z4),empty) | (69) |
if4#(false,0,s(y0),edge(x0,x1,x2),y2) | → | reach#(0,s(y0),x2,y2) | (79) |
We restrict the rewrite rules to the following usable rules of the DP problem.
union(empty,h) | → | h | (7) |
union(edge(x,y,i),h) | → | edge(x,y,union(i,h)) | (8) |
rest(edge(x,y,i)) | → | i | (13) |
rest(empty) | → | empty | (14) |
from(edge(x,y,i)) | → | x | (11) |
to(edge(x,y,i)) | → | y | (12) |
eq(0,0) | → | true | (1) |
eq(0,s(x)) | → | false | (2) |
eq(s(x),0) | → | false | (3) |
eq(s(x),s(y)) | → | eq(x,y) | (4) |
We restrict the innermost strategy to the following left hand sides.
eq(0,0) |
eq(0,s(x0)) |
eq(s(x0),0) |
eq(s(x0),s(x1)) |
union(empty,x0) |
union(edge(x0,x1,x2),x3) |
from(edge(x0,x1,x2)) |
to(edge(x0,x1,x2)) |
rest(edge(x0,x1,x2)) |
rest(empty) |
→ |
→ |
if4#(false,0,s(y0),edge(y1,y2,empty),x0) | → | reach#(y2,s(y0),x0,empty) | (89) |
if4#(false,0,s(y0),edge(y1,y2,edge(x0,x1,x2)),x3) | → | reach#(y2,s(y0),edge(x0,x1,union(x2,x3)),empty) | (90) |
if3#(false,y0,s(y1),s(y2),edge(x0,x1,x2),y4) | → | reach#(s(y1),s(y2),x2,edge(from(edge(x0,x1,x2)),to(edge(x0,x1,x2)),y4)) | (91) |
if3#(false,y0,s(y1),s(y2),empty,y4) | → | reach#(s(y1),s(y2),empty,edge(from(empty),to(empty),y4)) | (92) |
The dependency pairs are split into 1 component.
if1#(false,false,y_0,y_1,0,s(z0),edge(z1,z2,z3),z4) | → | if2#(false,y_0,y_1,0,s(z0),edge(z1,z2,z3),z4) | (81) |
if2#(false,z0,z1,0,s(z2),edge(z3,z4,z5),z6) | → | if3#(z0,z1,0,s(z2),edge(z3,z4,z5),z6) | (82) |
if3#(false,y0,0,s(y1),edge(x0,x1,x2),y3) | → | reach#(0,s(y1),x2,edge(x0,x1,y3)) | (78) |
reach#(0,s(y0),edge(x0,x1,x2),y2) | → | if1#(false,false,eq(0,x0),eq(s(y0),x1),0,s(y0),edge(x0,x1,x2),y2) | (74) |
if3#(true,z1,0,s(z2),edge(z3,z4,z5),z6) | → | if4#(z1,0,s(z2),edge(z3,z4,z5),z6) | (83) |
if4#(false,0,s(y0),edge(x0,x1,x2),y2) | → | reach#(0,s(y0),x2,y2) | (79) |
if4#(false,0,s(y0),edge(y1,y2,empty),x0) | → | reach#(y2,s(y0),x0,empty) | (89) |
reach#(s(y0),s(y1),edge(x0,x1,x2),y3) | → | if1#(eq(y0,y1),false,eq(s(y0),x0),eq(s(y1),x1),s(y0),s(y1),edge(x0,x1,x2),y3) | (88) |
if1#(false,false,x1,x2,s(x3),s(x4),x5,x6) | → | if2#(false,x1,x2,s(x3),s(x4),x5,x6) | (84) |
if2#(false,z1,z2,s(z3),s(z4),z5,z6) | → | if3#(z1,z2,s(z3),s(z4),z5,z6) | (57) |
if3#(true,z1,s(z2),s(z3),z4,z5) | → | if4#(z1,s(z2),s(z3),z4,z5) | (63) |
if4#(false,s(z1),s(z2),z3,z4) | → | reach#(s(z1),s(z2),rest(z3),z4) | (66) |
if4#(false,s(z1),s(z2),edge(x2,x3,x4),z4) | → | reach#(x3,s(z2),union(x4,z4),empty) | (69) |
if3#(false,y0,s(y1),s(y2),edge(x0,x1,x2),y4) | → | reach#(s(y1),s(y2),x2,edge(from(edge(x0,x1,x2)),to(edge(x0,x1,x2)),y4)) | (91) |
if4#(false,0,s(y0),edge(y1,y2,edge(x0,x1,x2)),x3) | → | reach#(y2,s(y0),edge(x0,x1,union(x2,x3)),empty) | (90) |
→ |
We restrict the rewrite rules to the following usable rules of the DP problem.
to(edge(x,y,i)) | → | y | (12) |
union(empty,h) | → | h | (7) |
union(edge(x,y,i),h) | → | edge(x,y,union(i,h)) | (8) |
rest(edge(x,y,i)) | → | i | (13) |
rest(empty) | → | empty | (14) |
eq(0,0) | → | true | (1) |
eq(0,s(x)) | → | false | (2) |
eq(s(x),0) | → | false | (3) |
eq(s(x),s(y)) | → | eq(x,y) | (4) |
We restrict the innermost strategy to the following left hand sides.
eq(0,0) |
eq(0,s(x0)) |
eq(s(x0),0) |
eq(s(x0),s(x1)) |
union(empty,x0) |
union(edge(x0,x1,x2),x3) |
to(edge(x0,x1,x2)) |
rest(edge(x0,x1,x2)) |
rest(empty) |
→ |
We restrict the rewrite rules to the following usable rules of the DP problem.
union(empty,h) | → | h | (7) |
union(edge(x,y,i),h) | → | edge(x,y,union(i,h)) | (8) |
rest(edge(x,y,i)) | → | i | (13) |
rest(empty) | → | empty | (14) |
eq(0,0) | → | true | (1) |
eq(0,s(x)) | → | false | (2) |
eq(s(x),0) | → | false | (3) |
eq(s(x),s(y)) | → | eq(x,y) | (4) |
We restrict the innermost strategy to the following left hand sides.
eq(0,0) |
eq(0,s(x0)) |
eq(s(x0),0) |
eq(s(x0),s(x1)) |
union(empty,x0) |
union(edge(x0,x1,x2),x3) |
rest(edge(x0,x1,x2)) |
rest(empty) |
if4#(false,s(y0),s(y1),edge(x0,x1,x2),y3) | → | reach#(s(y0),s(y1),x2,y3) | (95) |
if4#(false,s(y0),s(y1),empty,y3) | → | reach#(s(y0),s(y1),empty,y3) | (96) |
The dependency pairs are split into 1 component.
if2#(false,z0,z1,0,s(z2),edge(z3,z4,z5),z6) | → | if3#(z0,z1,0,s(z2),edge(z3,z4,z5),z6) | (82) |
if3#(false,y0,0,s(y1),edge(x0,x1,x2),y3) | → | reach#(0,s(y1),x2,edge(x0,x1,y3)) | (78) |
reach#(0,s(y0),edge(x0,x1,x2),y2) | → | if1#(false,false,eq(0,x0),eq(s(y0),x1),0,s(y0),edge(x0,x1,x2),y2) | (74) |
if1#(false,false,y_0,y_1,0,s(z0),edge(z1,z2,z3),z4) | → | if2#(false,y_0,y_1,0,s(z0),edge(z1,z2,z3),z4) | (81) |
if3#(true,z1,0,s(z2),edge(z3,z4,z5),z6) | → | if4#(z1,0,s(z2),edge(z3,z4,z5),z6) | (83) |
if4#(false,0,s(y0),edge(x0,x1,x2),y2) | → | reach#(0,s(y0),x2,y2) | (79) |
if4#(false,0,s(y0),edge(y1,y2,empty),x0) | → | reach#(y2,s(y0),x0,empty) | (89) |
reach#(s(y0),s(y1),edge(x0,x1,x2),y3) | → | if1#(eq(y0,y1),false,eq(s(y0),x0),eq(s(y1),x1),s(y0),s(y1),edge(x0,x1,x2),y3) | (88) |
if1#(false,false,x1,x2,s(x3),s(x4),x5,x6) | → | if2#(false,x1,x2,s(x3),s(x4),x5,x6) | (84) |
if2#(false,z1,z2,s(z3),s(z4),z5,z6) | → | if3#(z1,z2,s(z3),s(z4),z5,z6) | (57) |
if3#(true,z1,s(z2),s(z3),z4,z5) | → | if4#(z1,s(z2),s(z3),z4,z5) | (63) |
if4#(false,s(z1),s(z2),edge(x2,x3,x4),z4) | → | reach#(x3,s(z2),union(x4,z4),empty) | (69) |
if4#(false,s(y0),s(y1),edge(x0,x1,x2),y3) | → | reach#(s(y0),s(y1),x2,y3) | (95) |
if3#(false,y0,s(y1),s(y2),edge(x0,x1,x2),y4) | → | reach#(s(y1),s(y2),x2,edge(x0,x1,y4)) | (94) |
if4#(false,0,s(y0),edge(y1,y2,edge(x0,x1,x2)),x3) | → | reach#(y2,s(y0),edge(x0,x1,union(x2,x3)),empty) | (90) |
We restrict the rewrite rules to the following usable rules of the DP problem.
union(empty,h) | → | h | (7) |
union(edge(x,y,i),h) | → | edge(x,y,union(i,h)) | (8) |
eq(0,0) | → | true | (1) |
eq(0,s(x)) | → | false | (2) |
eq(s(x),0) | → | false | (3) |
eq(s(x),s(y)) | → | eq(x,y) | (4) |
We restrict the innermost strategy to the following left hand sides.
eq(0,0) |
eq(0,s(x0)) |
eq(s(x0),0) |
eq(s(x0),s(x1)) |
union(empty,x0) |
union(edge(x0,x1,x2),x3) |
if4#(false,s(y0),s(y1),edge(y2,y3,empty),x0) | → | reach#(y3,s(y1),x0,empty) | (97) |
if4#(false,s(y0),s(y1),edge(y2,y3,edge(x0,x1,x2)),x3) | → | reach#(y3,s(y1),edge(x0,x1,union(x2,x3)),empty) | (98) |
if1#(false,false,y_1,y_2,s(z0),s(z1),edge(z2,z3,z4),z5) | → | if2#(false,y_1,y_2,s(z0),s(z1),edge(z2,z3,z4),z5) | (99) |
if2#(false,z0,z1,s(z2),s(z3),edge(z4,z5,z6),z7) | → | if3#(z0,z1,s(z2),s(z3),edge(z4,z5,z6),z7) | (100) |
if3#(true,z1,s(z2),s(z3),edge(z4,z5,z6),z7) | → | if4#(z1,s(z2),s(z3),edge(z4,z5,z6),z7) | (101) |
if2#(false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | → | if3#(false,x1,0,s(x2),edge(x3,x4,x5),x6) | (102) |
if2#(false,true,x1,0,s(x2),edge(x3,x4,x5),x6) | → | if3#(true,x1,0,s(x2),edge(x3,x4,x5),x6) | (103) |
if3#(false,x0,0,s(x1),edge(x2,x3,edge(y_1,y_2,y_3)),x5) | → | reach#(0,s(x1),edge(y_1,y_2,y_3),edge(x2,x3,x5)) | (104) |
if1#(false,false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | → | if2#(false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | (105) |
if1#(false,false,true,x1,0,s(x2),edge(x3,x4,x5),x6) | → | if2#(false,true,x1,0,s(x2),edge(x3,x4,x5),x6) | (106) |
reach#(0,s(y0),edge(0,y2,y3),y4) | → | if1#(false,false,true,eq(s(y0),y2),0,s(y0),edge(0,y2,y3),y4) | (107) |
reach#(0,s(y0),edge(s(x0),y2,y3),y4) | → | if1#(false,false,false,eq(s(y0),y2),0,s(y0),edge(s(x0),y2,y3),y4) | (108) |
if1#(false,false,true,y_0,0,s(z0),edge(0,z1,z2),z3) | → | if2#(false,true,y_0,0,s(z0),edge(0,z1,z2),z3) | (109) |
if2#(false,true,z0,0,s(z1),edge(0,z2,z3),z4) | → | if3#(true,z0,0,s(z1),edge(0,z2,z3),z4) | (110) |
if3#(true,z0,0,s(z1),edge(0,z2,z3),z4) | → | if4#(z0,0,s(z1),edge(0,z2,z3),z4) | (111) |
if4#(false,0,s(z1),edge(0,z2,z3),z4) | → | reach#(0,s(z1),z3,z4) | (112) |
if4#(false,0,s(z1),edge(0,z2,empty),z4) | → | reach#(z2,s(z1),z4,empty) | (113) |
if4#(false,0,s(z1),edge(0,z2,edge(x3,x4,x5)),z4) | → | reach#(z2,s(z1),edge(x3,x4,union(x5,z4)),empty) | (114) |
if4#(false,s(x0),s(x1),edge(x2,x3,edge(y_2,y_3,y_4)),x5) | → | reach#(s(x0),s(x1),edge(y_2,y_3,y_4),x5) | (115) |
if3#(false,x0,s(x1),s(x2),edge(x3,x4,edge(y_2,y_3,y_4)),x6) | → | reach#(s(x1),s(x2),edge(y_2,y_3,y_4),edge(x3,x4,x6)) | (116) |
if4#(false,s(x0),s(x1),edge(x2,s(y_0),empty),edge(y_2,y_3,y_4)) | → | reach#(s(y_0),s(x1),edge(y_2,y_3,y_4),empty) | (117) |
if4#(false,s(x0),s(x1),edge(x2,0,empty),edge(0,y_1,y_2)) | → | reach#(0,s(x1),edge(0,y_1,y_2),empty) | (118) |
if4#(false,s(x0),s(x1),edge(x2,0,empty),edge(s(y_1),y_2,y_3)) | → | reach#(0,s(x1),edge(s(y_1),y_2,y_3),empty) | (119) |
if2#(false,true,x1,s(x2),s(x3),edge(x4,x5,x6),x7) | → | if3#(true,x1,s(x2),s(x3),edge(x4,x5,x6),x7) | (120) |
if2#(false,false,x1,s(x2),s(x3),edge(x4,x5,edge(y_5,y_6,y_7)),x7) | → | if3#(false,x1,s(x2),s(x3),edge(x4,x5,edge(y_5,y_6,y_7)),x7) | (121) |
if3#(true,false,s(x1),s(x2),edge(x3,x4,edge(y_4,y_5,y_6)),x6) | → | if4#(false,s(x1),s(x2),edge(x3,x4,edge(y_4,y_5,y_6)),x6) | (122) |
if3#(true,false,s(x1),s(x2),edge(x3,s(y_3),empty),edge(y_4,y_5,y_6)) | → | if4#(false,s(x1),s(x2),edge(x3,s(y_3),empty),edge(y_4,y_5,y_6)) | (123) |
if3#(true,false,s(x1),s(x2),edge(x3,0,empty),edge(0,y_3,y_4)) | → | if4#(false,s(x1),s(x2),edge(x3,0,empty),edge(0,y_3,y_4)) | (124) |
if3#(true,false,s(x1),s(x2),edge(x3,0,empty),edge(s(y_3),y_4,y_5)) | → | if4#(false,s(x1),s(x2),edge(x3,0,empty),edge(s(y_3),y_4,y_5)) | (125) |
if3#(true,false,0,s(x1),edge(0,x2,x3),x4) | → | if4#(false,0,s(x1),edge(0,x2,x3),x4) | (126) |
if3#(true,false,0,s(x1),edge(0,x2,empty),x4) | → | if4#(false,0,s(x1),edge(0,x2,empty),x4) | (127) |
if3#(true,false,0,s(x1),edge(0,x2,edge(y_2,y_3,y_4)),x4) | → | if4#(false,0,s(x1),edge(0,x2,edge(y_2,y_3,y_4)),x4) | (128) |
if4#(false,0,s(x0),edge(0,x1,edge(0,y_1,y_2)),x3) | → | reach#(0,s(x0),edge(0,y_1,y_2),x3) | (129) |
if4#(false,0,s(x0),edge(0,x1,edge(s(y_1),y_2,y_3)),x3) | → | reach#(0,s(x0),edge(s(y_1),y_2,y_3),x3) | (130) |
if4#(false,0,s(x0),edge(0,s(y_0),empty),edge(y_2,y_3,y_4)) | → | reach#(s(y_0),s(x0),edge(y_2,y_3,y_4),empty) | (131) |
if4#(false,0,s(x0),edge(0,0,empty),edge(0,y_1,y_2)) | → | reach#(0,s(x0),edge(0,y_1,y_2),empty) | (132) |
if4#(false,0,s(x0),edge(0,0,empty),edge(s(y_1),y_2,y_3)) | → | reach#(0,s(x0),edge(s(y_1),y_2,y_3),empty) | (133) |
[reach#(x1,...,x4)] | = | 1 · x3 + 1 · x4 |
[s(x1)] | = | 1 |
[edge(x1, x2, x3)] | = | 1 · x2 + 1 · x3 |
[if1#(x1,...,x8)] | = | 1 · x7 + 1 · x8 |
[eq(x1, x2)] | = | 0 |
[false] | = | 0 |
[if4#(x1,...,x5)] | = | 1 · x4 + 1 · x5 |
[union(x1, x2)] | = | 1 · x1 + 1 · x2 |
[empty] | = | 0 |
[if2#(x1,...,x7)] | = | 1 · x6 + 1 · x7 |
[0] | = | 0 |
[if3#(x1,...,x6)] | = | 1 · x5 + 1 · x6 |
[true] | = | 0 |
union(empty,h) | → | h | (7) |
union(edge(x,y,i),h) | → | edge(x,y,union(i,h)) | (8) |
if4#(false,s(x0),s(x1),edge(x2,s(y_0),empty),edge(y_2,y_3,y_4)) | → | reach#(s(y_0),s(x1),edge(y_2,y_3,y_4),empty) | (117) |
if4#(false,0,s(x0),edge(0,s(y_0),empty),edge(y_2,y_3,y_4)) | → | reach#(s(y_0),s(x0),edge(y_2,y_3,y_4),empty) | (131) |
The dependency pairs are split into 1 component.
if1#(false,false,y_1,y_2,s(z0),s(z1),edge(z2,z3,z4),z5) | → | if2#(false,y_1,y_2,s(z0),s(z1),edge(z2,z3,z4),z5) | (99) |
if2#(false,true,x1,s(x2),s(x3),edge(x4,x5,x6),x7) | → | if3#(true,x1,s(x2),s(x3),edge(x4,x5,x6),x7) | (120) |
if3#(true,false,s(x1),s(x2),edge(x3,x4,edge(y_4,y_5,y_6)),x6) | → | if4#(false,s(x1),s(x2),edge(x3,x4,edge(y_4,y_5,y_6)),x6) | (122) |
if4#(false,s(y0),s(y1),edge(y2,y3,edge(x0,x1,x2)),x3) | → | reach#(y3,s(y1),edge(x0,x1,union(x2,x3)),empty) | (98) |
reach#(s(y0),s(y1),edge(x0,x1,x2),y3) | → | if1#(eq(y0,y1),false,eq(s(y0),x0),eq(s(y1),x1),s(y0),s(y1),edge(x0,x1,x2),y3) | (88) |
reach#(0,s(y0),edge(0,y2,y3),y4) | → | if1#(false,false,true,eq(s(y0),y2),0,s(y0),edge(0,y2,y3),y4) | (107) |
if1#(false,false,true,y_0,0,s(z0),edge(0,z1,z2),z3) | → | if2#(false,true,y_0,0,s(z0),edge(0,z1,z2),z3) | (109) |
if2#(false,true,z0,0,s(z1),edge(0,z2,z3),z4) | → | if3#(true,z0,0,s(z1),edge(0,z2,z3),z4) | (110) |
if3#(true,false,0,s(x1),edge(0,x2,x3),x4) | → | if4#(false,0,s(x1),edge(0,x2,x3),x4) | (126) |
if4#(false,0,s(z1),edge(0,z2,edge(x3,x4,x5)),z4) | → | reach#(z2,s(z1),edge(x3,x4,union(x5,z4)),empty) | (114) |
reach#(0,s(y0),edge(s(x0),y2,y3),y4) | → | if1#(false,false,false,eq(s(y0),y2),0,s(y0),edge(s(x0),y2,y3),y4) | (108) |
if1#(false,false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | → | if2#(false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | (105) |
if2#(false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | → | if3#(false,x1,0,s(x2),edge(x3,x4,x5),x6) | (102) |
if3#(false,x0,0,s(x1),edge(x2,x3,edge(y_1,y_2,y_3)),x5) | → | reach#(0,s(x1),edge(y_1,y_2,y_3),edge(x2,x3,x5)) | (104) |
if4#(false,0,s(x0),edge(0,x1,edge(0,y_1,y_2)),x3) | → | reach#(0,s(x0),edge(0,y_1,y_2),x3) | (129) |
if4#(false,0,s(x0),edge(0,x1,edge(s(y_1),y_2,y_3)),x3) | → | reach#(0,s(x0),edge(s(y_1),y_2,y_3),x3) | (130) |
if4#(false,0,s(x0),edge(0,0,empty),edge(0,y_1,y_2)) | → | reach#(0,s(x0),edge(0,y_1,y_2),empty) | (132) |
if4#(false,0,s(x0),edge(0,0,empty),edge(s(y_1),y_2,y_3)) | → | reach#(0,s(x0),edge(s(y_1),y_2,y_3),empty) | (133) |
if3#(true,false,0,s(x1),edge(0,x2,empty),x4) | → | if4#(false,0,s(x1),edge(0,x2,empty),x4) | (127) |
if3#(true,false,0,s(x1),edge(0,x2,edge(y_2,y_3,y_4)),x4) | → | if4#(false,0,s(x1),edge(0,x2,edge(y_2,y_3,y_4)),x4) | (128) |
if4#(false,s(x0),s(x1),edge(x2,x3,edge(y_2,y_3,y_4)),x5) | → | reach#(s(x0),s(x1),edge(y_2,y_3,y_4),x5) | (115) |
if3#(true,false,s(x1),s(x2),edge(x3,0,empty),edge(0,y_3,y_4)) | → | if4#(false,s(x1),s(x2),edge(x3,0,empty),edge(0,y_3,y_4)) | (124) |
if4#(false,s(x0),s(x1),edge(x2,0,empty),edge(0,y_1,y_2)) | → | reach#(0,s(x1),edge(0,y_1,y_2),empty) | (118) |
if3#(true,false,s(x1),s(x2),edge(x3,0,empty),edge(s(y_3),y_4,y_5)) | → | if4#(false,s(x1),s(x2),edge(x3,0,empty),edge(s(y_3),y_4,y_5)) | (125) |
if4#(false,s(x0),s(x1),edge(x2,0,empty),edge(s(y_1),y_2,y_3)) | → | reach#(0,s(x1),edge(s(y_1),y_2,y_3),empty) | (119) |
if2#(false,false,x1,s(x2),s(x3),edge(x4,x5,edge(y_5,y_6,y_7)),x7) | → | if3#(false,x1,s(x2),s(x3),edge(x4,x5,edge(y_5,y_6,y_7)),x7) | (121) |
if3#(false,x0,s(x1),s(x2),edge(x3,x4,edge(y_2,y_3,y_4)),x6) | → | reach#(s(x1),s(x2),edge(y_2,y_3,y_4),edge(x3,x4,x6)) | (116) |
[if1#(x1,...,x8)] | = | 1 · x5 + 1 · x7 + 1 · x8 |
[false] | = | 0 |
[s(x1)] | = | 1 |
[edge(x1, x2, x3)] | = | 1 · x2 + 1 · x3 |
[if2#(x1,...,x7)] | = | 1 · x4 + 1 · x6 + 1 · x7 |
[true] | = | 0 |
[if3#(x1,...,x6)] | = | 1 · x3 + 1 · x5 + 1 · x6 |
[if4#(x1,...,x5)] | = | 1 · x2 + 1 · x4 + 1 · x5 |
[reach#(x1,...,x4)] | = | 1 · x1 + 1 · x3 + 1 · x4 |
[union(x1, x2)] | = | 1 · x1 + 1 · x2 |
[empty] | = | 0 |
[eq(x1, x2)] | = | 0 |
[0] | = | 0 |
union(empty,h) | → | h | (7) |
union(edge(x,y,i),h) | → | edge(x,y,union(i,h)) | (8) |
if4#(false,s(y0),s(y1),edge(y2,y3,edge(x0,x1,x2)),x3) | → | reach#(y3,s(y1),edge(x0,x1,union(x2,x3)),empty) | (98) |
if4#(false,s(x0),s(x1),edge(x2,0,empty),edge(0,y_1,y_2)) | → | reach#(0,s(x1),edge(0,y_1,y_2),empty) | (118) |
if4#(false,s(x0),s(x1),edge(x2,0,empty),edge(s(y_1),y_2,y_3)) | → | reach#(0,s(x1),edge(s(y_1),y_2,y_3),empty) | (119) |
The dependency pairs are split into 2 components.
reach#(0,s(y0),edge(0,y2,y3),y4) | → | if1#(false,false,true,eq(s(y0),y2),0,s(y0),edge(0,y2,y3),y4) | (107) |
if1#(false,false,true,y_0,0,s(z0),edge(0,z1,z2),z3) | → | if2#(false,true,y_0,0,s(z0),edge(0,z1,z2),z3) | (109) |
if2#(false,true,z0,0,s(z1),edge(0,z2,z3),z4) | → | if3#(true,z0,0,s(z1),edge(0,z2,z3),z4) | (110) |
if3#(true,false,0,s(x1),edge(0,x2,x3),x4) | → | if4#(false,0,s(x1),edge(0,x2,x3),x4) | (126) |
if4#(false,0,s(z1),edge(0,z2,edge(x3,x4,x5)),z4) | → | reach#(z2,s(z1),edge(x3,x4,union(x5,z4)),empty) | (114) |
reach#(0,s(y0),edge(s(x0),y2,y3),y4) | → | if1#(false,false,false,eq(s(y0),y2),0,s(y0),edge(s(x0),y2,y3),y4) | (108) |
if1#(false,false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | → | if2#(false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | (105) |
if2#(false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | → | if3#(false,x1,0,s(x2),edge(x3,x4,x5),x6) | (102) |
if3#(false,x0,0,s(x1),edge(x2,x3,edge(y_1,y_2,y_3)),x5) | → | reach#(0,s(x1),edge(y_1,y_2,y_3),edge(x2,x3,x5)) | (104) |
if4#(false,0,s(x0),edge(0,x1,edge(0,y_1,y_2)),x3) | → | reach#(0,s(x0),edge(0,y_1,y_2),x3) | (129) |
if4#(false,0,s(x0),edge(0,x1,edge(s(y_1),y_2,y_3)),x3) | → | reach#(0,s(x0),edge(s(y_1),y_2,y_3),x3) | (130) |
if4#(false,0,s(x0),edge(0,0,empty),edge(0,y_1,y_2)) | → | reach#(0,s(x0),edge(0,y_1,y_2),empty) | (132) |
if4#(false,0,s(x0),edge(0,0,empty),edge(s(y_1),y_2,y_3)) | → | reach#(0,s(x0),edge(s(y_1),y_2,y_3),empty) | (133) |
if3#(true,false,0,s(x1),edge(0,x2,empty),x4) | → | if4#(false,0,s(x1),edge(0,x2,empty),x4) | (127) |
if3#(true,false,0,s(x1),edge(0,x2,edge(y_2,y_3,y_4)),x4) | → | if4#(false,0,s(x1),edge(0,x2,edge(y_2,y_3,y_4)),x4) | (128) |
[if1#(x1,...,x8)] | = | -2 + x3 + 2 · x7 + x8 |
[eq(x1, x2)] | = | -2 |
[s(x1)] | = | 0 |
[0] | = | 1 |
[false] | = | 2 |
[reach#(x1,...,x4)] | = | x4 |
[edge(x1, x2, x3)] | = | x1 |
[union(x1, x2)] | = | 1 |
[empty] | = | 0 |
[true] | = | 0 |
[if2#(x1,...,x7)] | = | -2 + x2 + 2 · x6 + x7 |
[if3#(x1,...,x6)] | = | -2 + x1 + 2 · x5 + x6 |
[if4#(x1,...,x5)] | = | x5 |
if4#(false,0,s(x0),edge(0,0,empty),edge(0,y_1,y_2)) | → | reach#(0,s(x0),edge(0,y_1,y_2),empty) | (132) |
[if1#(x1,...,x8)] | = | -2 + 2 · x3 + 2 · x7 + 2 · x8 |
[eq(x1, x2)] | = | -2 |
[s(x1)] | = | 2 |
[0] | = | 2 |
[false] | = | 2 |
[reach#(x1,...,x4)] | = | -2 + 2 · x2 + 2 · x3 + 2 · x4 |
[edge(x1, x2, x3)] | = | 2 + 2 · x1 + x3 |
[union(x1, x2)] | = | 2 + x1 + x2 |
[empty] | = | 2 |
[true] | = | 2 |
[if2#(x1,...,x7)] | = | x5 + 2 · x6 + 2 · x7 |
[if3#(x1,...,x6)] | = | -2 + 2 · x3 + 2 · x5 + 2 · x6 |
[if4#(x1,...,x5)] | = | -2 + x2 + x3 + 2 · x4 + 2 · x5 |
union(empty,h) | → | h | (7) |
union(edge(x,y,i),h) | → | edge(x,y,union(i,h)) | (8) |
if4#(false,0,s(z1),edge(0,z2,edge(x3,x4,x5)),z4) | → | reach#(z2,s(z1),edge(x3,x4,union(x5,z4)),empty) | (114) |
if4#(false,0,s(x0),edge(0,x1,edge(0,y_1,y_2)),x3) | → | reach#(0,s(x0),edge(0,y_1,y_2),x3) | (129) |
if4#(false,0,s(x0),edge(0,x1,edge(s(y_1),y_2,y_3)),x3) | → | reach#(0,s(x0),edge(s(y_1),y_2,y_3),x3) | (130) |
if4#(false,0,s(x0),edge(0,0,empty),edge(s(y_1),y_2,y_3)) | → | reach#(0,s(x0),edge(s(y_1),y_2,y_3),empty) | (133) |
The dependency pairs are split into 1 component.
reach#(0,s(y0),edge(s(x0),y2,y3),y4) | → | if1#(false,false,false,eq(s(y0),y2),0,s(y0),edge(s(x0),y2,y3),y4) | (108) |
if1#(false,false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | → | if2#(false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | (105) |
if2#(false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | → | if3#(false,x1,0,s(x2),edge(x3,x4,x5),x6) | (102) |
if3#(false,x0,0,s(x1),edge(x2,x3,edge(y_1,y_2,y_3)),x5) | → | reach#(0,s(x1),edge(y_1,y_2,y_3),edge(x2,x3,x5)) | (104) |
We restrict the rewrite rules to the following usable rules of the DP problem.
eq(s(x),0) | → | false | (3) |
eq(s(x),s(y)) | → | eq(x,y) | (4) |
eq(0,0) | → | true | (1) |
eq(0,s(x)) | → | false | (2) |
We restrict the innermost strategy to the following left hand sides.
eq(0,0) |
eq(0,s(x0)) |
eq(s(x0),0) |
eq(s(x0),s(x1)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
if1#(false,false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | → | if2#(false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | (105) |
1 | ≥ | 1 | |
2 | ≥ | 1 | |
3 | ≥ | 1 | |
1 | ≥ | 2 | |
2 | ≥ | 2 | |
3 | ≥ | 2 | |
4 | ≥ | 3 | |
5 | ≥ | 4 | |
6 | ≥ | 5 | |
7 | ≥ | 6 | |
8 | ≥ | 7 | |
if3#(false,x0,0,s(x1),edge(x2,x3,edge(y_1,y_2,y_3)),x5) | → | reach#(0,s(x1),edge(y_1,y_2,y_3),edge(x2,x3,x5)) | (104) |
3 | ≥ | 1 | |
4 | ≥ | 2 | |
5 | > | 3 | |
if2#(false,false,x1,0,s(x2),edge(x3,x4,x5),x6) | → | if3#(false,x1,0,s(x2),edge(x3,x4,x5),x6) | (102) |
1 | ≥ | 1 | |
2 | ≥ | 1 | |
3 | ≥ | 2 | |
4 | ≥ | 3 | |
5 | ≥ | 4 | |
6 | ≥ | 5 | |
7 | ≥ | 6 | |
reach#(0,s(y0),edge(s(x0),y2,y3),y4) | → | if1#(false,false,false,eq(s(y0),y2),0,s(y0),edge(s(x0),y2,y3),y4) | (108) |
1 | ≥ | 5 | |
2 | ≥ | 6 | |
3 | ≥ | 7 | |
4 | ≥ | 8 |
As there is no critical graph in the transitive closure, there are no infinite chains.
if2#(false,true,x1,s(x2),s(x3),edge(x4,x5,x6),x7) | → | if3#(true,x1,s(x2),s(x3),edge(x4,x5,x6),x7) | (120) |
if3#(true,false,s(x1),s(x2),edge(x3,x4,edge(y_4,y_5,y_6)),x6) | → | if4#(false,s(x1),s(x2),edge(x3,x4,edge(y_4,y_5,y_6)),x6) | (122) |
if4#(false,s(x0),s(x1),edge(x2,x3,edge(y_2,y_3,y_4)),x5) | → | reach#(s(x0),s(x1),edge(y_2,y_3,y_4),x5) | (115) |
reach#(s(y0),s(y1),edge(x0,x1,x2),y3) | → | if1#(eq(y0,y1),false,eq(s(y0),x0),eq(s(y1),x1),s(y0),s(y1),edge(x0,x1,x2),y3) | (88) |
if1#(false,false,y_1,y_2,s(z0),s(z1),edge(z2,z3,z4),z5) | → | if2#(false,y_1,y_2,s(z0),s(z1),edge(z2,z3,z4),z5) | (99) |
if2#(false,false,x1,s(x2),s(x3),edge(x4,x5,edge(y_5,y_6,y_7)),x7) | → | if3#(false,x1,s(x2),s(x3),edge(x4,x5,edge(y_5,y_6,y_7)),x7) | (121) |
if3#(false,x0,s(x1),s(x2),edge(x3,x4,edge(y_2,y_3,y_4)),x6) | → | reach#(s(x1),s(x2),edge(y_2,y_3,y_4),edge(x3,x4,x6)) | (116) |
We restrict the rewrite rules to the following usable rules of the DP problem.
eq(0,0) | → | true | (1) |
eq(0,s(x)) | → | false | (2) |
eq(s(x),0) | → | false | (3) |
eq(s(x),s(y)) | → | eq(x,y) | (4) |
We restrict the innermost strategy to the following left hand sides.
eq(0,0) |
eq(0,s(x0)) |
eq(s(x0),0) |
eq(s(x0),s(x1)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
if3#(true,false,s(x1),s(x2),edge(x3,x4,edge(y_4,y_5,y_6)),x6) | → | if4#(false,s(x1),s(x2),edge(x3,x4,edge(y_4,y_5,y_6)),x6) | (122) |
2 | ≥ | 1 | |
3 | ≥ | 2 | |
4 | ≥ | 3 | |
5 | ≥ | 4 | |
6 | ≥ | 5 | |
if1#(false,false,y_1,y_2,s(z0),s(z1),edge(z2,z3,z4),z5) | → | if2#(false,y_1,y_2,s(z0),s(z1),edge(z2,z3,z4),z5) | (99) |
1 | ≥ | 1 | |
2 | ≥ | 1 | |
3 | ≥ | 2 | |
4 | ≥ | 3 | |
5 | ≥ | 4 | |
6 | ≥ | 5 | |
7 | ≥ | 6 | |
8 | ≥ | 7 | |
if4#(false,s(x0),s(x1),edge(x2,x3,edge(y_2,y_3,y_4)),x5) | → | reach#(s(x0),s(x1),edge(y_2,y_3,y_4),x5) | (115) |
2 | ≥ | 1 | |
3 | ≥ | 2 | |
4 | > | 3 | |
5 | ≥ | 4 | |
if2#(false,true,x1,s(x2),s(x3),edge(x4,x5,x6),x7) | → | if3#(true,x1,s(x2),s(x3),edge(x4,x5,x6),x7) | (120) |
2 | ≥ | 1 | |
3 | ≥ | 2 | |
4 | ≥ | 3 | |
5 | ≥ | 4 | |
6 | ≥ | 5 | |
7 | ≥ | 6 | |
reach#(s(y0),s(y1),edge(x0,x1,x2),y3) | → | if1#(eq(y0,y1),false,eq(s(y0),x0),eq(s(y1),x1),s(y0),s(y1),edge(x0,x1,x2),y3) | (88) |
1 | ≥ | 5 | |
2 | ≥ | 6 | |
3 | ≥ | 7 | |
4 | ≥ | 8 | |
if3#(false,x0,s(x1),s(x2),edge(x3,x4,edge(y_2,y_3,y_4)),x6) | → | reach#(s(x1),s(x2),edge(y_2,y_3,y_4),edge(x3,x4,x6)) | (116) |
3 | ≥ | 1 | |
4 | ≥ | 2 | |
5 | > | 3 | |
if2#(false,false,x1,s(x2),s(x3),edge(x4,x5,edge(y_5,y_6,y_7)),x7) | → | if3#(false,x1,s(x2),s(x3),edge(x4,x5,edge(y_5,y_6,y_7)),x7) | (121) |
1 | ≥ | 1 | |
2 | ≥ | 1 | |
3 | ≥ | 2 | |
4 | ≥ | 3 | |
5 | ≥ | 4 | |
6 | ≥ | 5 | |
7 | ≥ | 6 |
As there is no critical graph in the transitive closure, there are no infinite chains.
if1#(false,y_0,y_2,y_4,s(z0),0,z1,z2) | → | if2#(y_0,y_2,y_4,s(z0),0,z1,z2) | (53) |
if2#(false,z1,z2,s(z3),0,z4,z5) | → | if3#(z1,z2,s(z3),0,z4,z5) | (56) |
if3#(false,z1,s(z2),0,z3,z4) | → | reach#(s(z2),0,rest(z3),edge(from(z3),to(z3),z4)) | (59) |
reach#(s(x0),0,y2,y3) | → | if1#(false,isEmpty(y2),eq(s(x0),from(y2)),eq(0,to(y2)),s(x0),0,y2,y3) | (48) |
if3#(true,z1,s(z2),0,z3,z4) | → | if4#(z1,s(z2),0,z3,z4) | (62) |
if4#(false,s(z1),0,z2,z3) | → | reach#(s(z1),0,rest(z2),z3) | (65) |
if4#(false,s(z1),0,edge(x2,x3,x4),z3) | → | reach#(x3,0,union(x4,z3),empty) | (68) |
if1#(false,false,x1,x2,s(x3),0,x4,x5) | → | if2#(false,x1,x2,s(x3),0,x4,x5) | (134) |
reach#(s(y0),0,empty,y2) | → | if1#(false,true,eq(s(y0),from(empty)),eq(0,to(empty)),s(y0),0,empty,y2) | (135) |
reach#(s(y0),0,edge(x0,x1,x2),y2) | → | if1#(false,false,eq(s(y0),from(edge(x0,x1,x2))),eq(0,to(edge(x0,x1,x2))),s(y0),0,edge(x0,x1,x2),y2) | (136) |
The dependency pairs are split into 1 component.
if3#(false,z1,s(z2),0,z3,z4) | → | reach#(s(z2),0,rest(z3),edge(from(z3),to(z3),z4)) | (59) |
reach#(s(y0),0,edge(x0,x1,x2),y2) | → | if1#(false,false,eq(s(y0),from(edge(x0,x1,x2))),eq(0,to(edge(x0,x1,x2))),s(y0),0,edge(x0,x1,x2),y2) | (136) |
if1#(false,false,x1,x2,s(x3),0,x4,x5) | → | if2#(false,x1,x2,s(x3),0,x4,x5) | (134) |
if2#(false,z1,z2,s(z3),0,z4,z5) | → | if3#(z1,z2,s(z3),0,z4,z5) | (56) |
if3#(true,z1,s(z2),0,z3,z4) | → | if4#(z1,s(z2),0,z3,z4) | (62) |
if4#(false,s(z1),0,z2,z3) | → | reach#(s(z1),0,rest(z2),z3) | (65) |
if4#(false,s(z1),0,edge(x2,x3,x4),z3) | → | reach#(x3,0,union(x4,z3),empty) | (68) |
We restrict the rewrite rules to the following usable rules of the DP problem.
union(empty,h) | → | h | (7) |
union(edge(x,y,i),h) | → | edge(x,y,union(i,h)) | (8) |
rest(edge(x,y,i)) | → | i | (13) |
rest(empty) | → | empty | (14) |
from(edge(x,y,i)) | → | x | (11) |
eq(s(x),0) | → | false | (3) |
eq(s(x),s(y)) | → | eq(x,y) | (4) |
to(edge(x,y,i)) | → | y | (12) |
eq(0,0) | → | true | (1) |
eq(0,s(x)) | → | false | (2) |
We restrict the innermost strategy to the following left hand sides.
eq(0,0) |
eq(0,s(x0)) |
eq(s(x0),0) |
eq(s(x0),s(x1)) |
union(empty,x0) |
union(edge(x0,x1,x2),x3) |
from(edge(x0,x1,x2)) |
to(edge(x0,x1,x2)) |
rest(edge(x0,x1,x2)) |
rest(empty) |
→ |
→ |
if3#(false,y0,s(y1),0,edge(x0,x1,x2),y3) | → | reach#(s(y1),0,x2,edge(from(edge(x0,x1,x2)),to(edge(x0,x1,x2)),y3)) | (139) |
if3#(false,y0,s(y1),0,empty,y3) | → | reach#(s(y1),0,empty,edge(from(empty),to(empty),y3)) | (140) |
The dependency pairs are split into 1 component.
if2#(false,z1,z2,s(z3),0,z4,z5) | → | if3#(z1,z2,s(z3),0,z4,z5) | (56) |
if3#(true,z1,s(z2),0,z3,z4) | → | if4#(z1,s(z2),0,z3,z4) | (62) |
if4#(false,s(z1),0,z2,z3) | → | reach#(s(z1),0,rest(z2),z3) | (65) |
reach#(s(y0),0,edge(x0,x1,x2),y2) | → | if1#(false,false,eq(s(y0),x0),eq(0,x1),s(y0),0,edge(x0,x1,x2),y2) | (138) |
if1#(false,false,x1,x2,s(x3),0,x4,x5) | → | if2#(false,x1,x2,s(x3),0,x4,x5) | (134) |
if4#(false,s(z1),0,edge(x2,x3,x4),z3) | → | reach#(x3,0,union(x4,z3),empty) | (68) |
if3#(false,y0,s(y1),0,edge(x0,x1,x2),y3) | → | reach#(s(y1),0,x2,edge(from(edge(x0,x1,x2)),to(edge(x0,x1,x2)),y3)) | (139) |
→ |
We restrict the rewrite rules to the following usable rules of the DP problem.
to(edge(x,y,i)) | → | y | (12) |
union(empty,h) | → | h | (7) |
union(edge(x,y,i),h) | → | edge(x,y,union(i,h)) | (8) |
eq(s(x),0) | → | false | (3) |
eq(s(x),s(y)) | → | eq(x,y) | (4) |
eq(0,0) | → | true | (1) |
eq(0,s(x)) | → | false | (2) |
rest(edge(x,y,i)) | → | i | (13) |
rest(empty) | → | empty | (14) |
We restrict the innermost strategy to the following left hand sides.
eq(0,0) |
eq(0,s(x0)) |
eq(s(x0),0) |
eq(s(x0),s(x1)) |
union(empty,x0) |
union(edge(x0,x1,x2),x3) |
to(edge(x0,x1,x2)) |
rest(edge(x0,x1,x2)) |
rest(empty) |
→ |
We restrict the rewrite rules to the following usable rules of the DP problem.
union(empty,h) | → | h | (7) |
union(edge(x,y,i),h) | → | edge(x,y,union(i,h)) | (8) |
eq(s(x),0) | → | false | (3) |
eq(s(x),s(y)) | → | eq(x,y) | (4) |
eq(0,0) | → | true | (1) |
eq(0,s(x)) | → | false | (2) |
rest(edge(x,y,i)) | → | i | (13) |
rest(empty) | → | empty | (14) |
We restrict the innermost strategy to the following left hand sides.
eq(0,0) |
eq(0,s(x0)) |
eq(s(x0),0) |
eq(s(x0),s(x1)) |
union(empty,x0) |
union(edge(x0,x1,x2),x3) |
rest(edge(x0,x1,x2)) |
rest(empty) |
if4#(false,s(y0),0,edge(x0,x1,x2),y2) | → | reach#(s(y0),0,x2,y2) | (143) |
if4#(false,s(y0),0,empty,y2) | → | reach#(s(y0),0,empty,y2) | (144) |
The dependency pairs are split into 1 component.
if3#(true,z1,s(z2),0,z3,z4) | → | if4#(z1,s(z2),0,z3,z4) | (62) |
if4#(false,s(z1),0,edge(x2,x3,x4),z3) | → | reach#(x3,0,union(x4,z3),empty) | (68) |
reach#(s(y0),0,edge(x0,x1,x2),y2) | → | if1#(false,false,eq(s(y0),x0),eq(0,x1),s(y0),0,edge(x0,x1,x2),y2) | (138) |
if1#(false,false,x1,x2,s(x3),0,x4,x5) | → | if2#(false,x1,x2,s(x3),0,x4,x5) | (134) |
if2#(false,z1,z2,s(z3),0,z4,z5) | → | if3#(z1,z2,s(z3),0,z4,z5) | (56) |
if3#(false,y0,s(y1),0,edge(x0,x1,x2),y3) | → | reach#(s(y1),0,x2,edge(x0,x1,y3)) | (142) |
if4#(false,s(y0),0,edge(x0,x1,x2),y2) | → | reach#(s(y0),0,x2,y2) | (143) |
We restrict the rewrite rules to the following usable rules of the DP problem.
eq(s(x),0) | → | false | (3) |
eq(s(x),s(y)) | → | eq(x,y) | (4) |
eq(0,0) | → | true | (1) |
eq(0,s(x)) | → | false | (2) |
union(empty,h) | → | h | (7) |
union(edge(x,y,i),h) | → | edge(x,y,union(i,h)) | (8) |
We restrict the innermost strategy to the following left hand sides.
eq(0,0) |
eq(0,s(x0)) |
eq(s(x0),0) |
eq(s(x0),s(x1)) |
union(empty,x0) |
union(edge(x0,x1,x2),x3) |
if4#(false,s(y0),0,edge(y1,y2,empty),x0) | → | reach#(y2,0,x0,empty) | (145) |
if4#(false,s(y0),0,edge(y1,y2,edge(x0,x1,x2)),x3) | → | reach#(y2,0,edge(x0,x1,union(x2,x3)),empty) | (146) |
if1#(false,false,y_0,y_1,s(z0),0,edge(z1,z2,z3),z4) | → | if2#(false,y_0,y_1,s(z0),0,edge(z1,z2,z3),z4) | (147) |
if2#(false,z0,z1,s(z2),0,edge(z3,z4,z5),z6) | → | if3#(z0,z1,s(z2),0,edge(z3,z4,z5),z6) | (148) |
if3#(true,z1,s(z2),0,edge(z3,z4,z5),z6) | → | if4#(z1,s(z2),0,edge(z3,z4,z5),z6) | (149) |
if3#(false,x0,s(x1),0,edge(x2,x3,edge(y_1,y_2,y_3)),x5) | → | reach#(s(x1),0,edge(y_1,y_2,y_3),edge(x2,x3,x5)) | (150) |
if4#(false,s(x0),0,edge(x1,x2,edge(y_1,y_2,y_3)),x4) | → | reach#(s(x0),0,edge(y_1,y_2,y_3),x4) | (151) |
if4#(false,s(x0),0,edge(x1,s(y_0),empty),edge(y_1,y_2,y_3)) | → | reach#(s(y_0),0,edge(y_1,y_2,y_3),empty) | (152) |
if2#(false,true,x1,s(x2),0,edge(x3,x4,x5),x6) | → | if3#(true,x1,s(x2),0,edge(x3,x4,x5),x6) | (153) |
if2#(false,false,x1,s(x2),0,edge(x3,x4,edge(y_4,y_5,y_6)),x6) | → | if3#(false,x1,s(x2),0,edge(x3,x4,edge(y_4,y_5,y_6)),x6) | (154) |
if3#(true,false,s(x1),0,edge(x2,x3,edge(y_3,y_4,y_5)),x5) | → | if4#(false,s(x1),0,edge(x2,x3,edge(y_3,y_4,y_5)),x5) | (155) |
if3#(true,false,s(x1),0,edge(x2,s(y_2),empty),edge(y_3,y_4,y_5)) | → | if4#(false,s(x1),0,edge(x2,s(y_2),empty),edge(y_3,y_4,y_5)) | (156) |
[if1#(x1,...,x8)] | = | 2 + 2 · x5 + 2 · x6 + x7 + x8 |
[eq(x1, x2)] | = | -2 |
[s(x1)] | = | 2 |
[0] | = | 2 |
[false] | = | 2 |
[true] | = | 2 |
[reach#(x1,...,x4)] | = | 2 + 2 · x1 + 2 · x2 + x3 + x4 |
[edge(x1, x2, x3)] | = | 1 + 2 · x1 + 2 · x2 + x3 |
[union(x1, x2)] | = | x1 + x2 |
[empty] | = | 0 |
[if4#(x1,...,x5)] | = | 2 + 2 · x1 + x2 + x3 + x4 + x5 |
[if2#(x1,...,x7)] | = | -2 + 2 · x1 + 2 · x4 + 2 · x5 + x6 + x7 |
[if3#(x1,...,x6)] | = | x1 + 2 · x3 + 2 · x4 + x5 + x6 |
union(empty,h) | → | h | (7) |
union(edge(x,y,i),h) | → | edge(x,y,union(i,h)) | (8) |
if4#(false,s(y0),0,edge(y1,y2,edge(x0,x1,x2)),x3) | → | reach#(y2,0,edge(x0,x1,union(x2,x3)),empty) | (146) |
if4#(false,s(x0),0,edge(x1,x2,edge(y_1,y_2,y_3)),x4) | → | reach#(s(x0),0,edge(y_1,y_2,y_3),x4) | (151) |
if4#(false,s(x0),0,edge(x1,s(y_0),empty),edge(y_1,y_2,y_3)) | → | reach#(s(y_0),0,edge(y_1,y_2,y_3),empty) | (152) |
The dependency pairs are split into 1 component.
if1#(false,false,y_0,y_1,s(z0),0,edge(z1,z2,z3),z4) | → | if2#(false,y_0,y_1,s(z0),0,edge(z1,z2,z3),z4) | (147) |
if2#(false,false,x1,s(x2),0,edge(x3,x4,edge(y_4,y_5,y_6)),x6) | → | if3#(false,x1,s(x2),0,edge(x3,x4,edge(y_4,y_5,y_6)),x6) | (154) |
if3#(false,x0,s(x1),0,edge(x2,x3,edge(y_1,y_2,y_3)),x5) | → | reach#(s(x1),0,edge(y_1,y_2,y_3),edge(x2,x3,x5)) | (150) |
reach#(s(y0),0,edge(x0,x1,x2),y2) | → | if1#(false,false,eq(s(y0),x0),eq(0,x1),s(y0),0,edge(x0,x1,x2),y2) | (138) |
We restrict the rewrite rules to the following usable rules of the DP problem.
eq(s(x),0) | → | false | (3) |
eq(s(x),s(y)) | → | eq(x,y) | (4) |
eq(0,0) | → | true | (1) |
eq(0,s(x)) | → | false | (2) |
We restrict the innermost strategy to the following left hand sides.
eq(0,0) |
eq(0,s(x0)) |
eq(s(x0),0) |
eq(s(x0),s(x1)) |
Using size-change termination in combination with the subterm criterion one obtains the following initial size-change graphs.
if2#(false,false,x1,s(x2),0,edge(x3,x4,edge(y_4,y_5,y_6)),x6) | → | if3#(false,x1,s(x2),0,edge(x3,x4,edge(y_4,y_5,y_6)),x6) | (154) |
1 | ≥ | 1 | |
2 | ≥ | 1 | |
3 | ≥ | 2 | |
4 | ≥ | 3 | |
5 | ≥ | 4 | |
6 | ≥ | 5 | |
7 | ≥ | 6 | |
reach#(s(y0),0,edge(x0,x1,x2),y2) | → | if1#(false,false,eq(s(y0),x0),eq(0,x1),s(y0),0,edge(x0,x1,x2),y2) | (138) |
1 | ≥ | 5 | |
2 | ≥ | 6 | |
3 | ≥ | 7 | |
4 | ≥ | 8 | |
if3#(false,x0,s(x1),0,edge(x2,x3,edge(y_1,y_2,y_3)),x5) | → | reach#(s(x1),0,edge(y_1,y_2,y_3),edge(x2,x3,x5)) | (150) |
3 | ≥ | 1 | |
4 | ≥ | 2 | |
5 | > | 3 | |
if1#(false,false,y_0,y_1,s(z0),0,edge(z1,z2,z3),z4) | → | if2#(false,y_0,y_1,s(z0),0,edge(z1,z2,z3),z4) | (147) |
1 | ≥ | 1 | |
2 | ≥ | 1 | |
3 | ≥ | 2 | |
4 | ≥ | 3 | |
5 | ≥ | 4 | |
6 | ≥ | 5 | |
7 | ≥ | 6 | |
8 | ≥ | 7 |
As there is no critical graph in the transitive closure, there are no infinite chains.
eq#(s(x),s(y)) | → | eq#(x,y) | (24) |
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.
eq#(s(x),s(y)) | → | eq#(x,y) | (24) |
1 | > | 1 | |
2 | > | 2 |
As there is no critical graph in the transitive closure, there are no infinite chains.
union#(edge(x,y,i),h) | → | union#(i,h) | (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.
union#(edge(x,y,i),h) | → | union#(i,h) | (25) |
1 | > | 1 | |
2 | ≥ | 2 |
As there is no critical graph in the transitive closure, there are no infinite chains.