MAYBE 0.09/0.19 MAYBE 0.09/0.19 0.09/0.19 Problem: 0.09/0.19 eq(0(),0()) -> true() 0.09/0.19 eq(0(),s(x)) -> false() 0.09/0.19 eq(s(x),0()) -> false() 0.09/0.19 eq(s(x),s(y)) -> eq(x,y) 0.09/0.19 or(true(),y) -> true() 0.09/0.19 or(false(),y) -> y 0.09/0.19 union(empty(),h) -> h 0.09/0.19 union(edge(x,y,i),h) -> edge(x,y,union(i,h)) 0.09/0.19 isEmpty(empty()) -> true() 0.09/0.19 isEmpty(edge(x,y,i)) -> false() 0.09/0.19 from(edge(x,y,i)) -> x 0.09/0.19 to(edge(x,y,i)) -> y 0.09/0.19 rest(edge(x,y,i)) -> i 0.09/0.19 rest(empty()) -> empty() 0.09/0.19 reach(x,y,i,h) -> if1(eq(x,y),isEmpty(i),eq(x,from(i)),eq(y,to(i)),x,y,i,h) 0.09/0.19 if1(true(),b1,b2,b3,x,y,i,h) -> true() 0.09/0.19 if1(false(),b1,b2,b3,x,y,i,h) -> if2(b1,b2,b3,x,y,i,h) 0.09/0.19 if2(true(),b2,b3,x,y,i,h) -> false() 0.09/0.19 if2(false(),b2,b3,x,y,i,h) -> if3(b2,b3,x,y,i,h) 0.09/0.19 if3(false(),b3,x,y,i,h) -> reach(x,y,rest(i),edge(from(i),to(i),h)) 0.09/0.19 if3(true(),b3,x,y,i,h) -> if4(b3,x,y,i,h) 0.09/0.19 if4(true(),x,y,i,h) -> true() 0.09/0.19 if4(false(),x,y,i,h) -> or(reach(x,y,rest(i),h),reach(to(i),y,union(rest(i),h),empty())) 0.09/0.19 0.09/0.19 Proof: 0.09/0.19 Open 0.09/0.19 EOF