MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , or(true(), y) -> true() , or(false(), y) -> y , union(empty(), h) -> h , union(edge(x, y, i), h) -> edge(x, y, union(i, h)) , reach(x, y, empty(), h) -> false() , reach(x, y, edge(u, v, i), h) -> if_reach_1(eq(x, u), x, y, edge(u, v, i), h) , if_reach_1(true(), x, y, edge(u, v, i), h) -> if_reach_2(eq(y, v), x, y, edge(u, v, i), h) , if_reach_1(false(), x, y, edge(u, v, i), h) -> reach(x, y, i, edge(u, v, h)) , if_reach_2(true(), x, y, edge(u, v, i), h) -> true() , if_reach_2(false(), x, y, edge(u, v, i), h) -> or(reach(x, y, i, h), reach(v, y, union(i, h), empty())) } Obligation: innermost runtime complexity Answer: MAYBE We add following dependency tuples: Strict DPs: { eq^#(0(), 0()) -> c_1() , eq^#(0(), s(x)) -> c_2() , eq^#(s(x), 0()) -> c_3() , eq^#(s(x), s(y)) -> c_4(eq^#(x, y)) , or^#(true(), y) -> c_5() , or^#(false(), y) -> c_6() , union^#(empty(), h) -> c_7() , union^#(edge(x, y, i), h) -> c_8(union^#(i, h)) , reach^#(x, y, empty(), h) -> c_9() , reach^#(x, y, edge(u, v, i), h) -> c_10(if_reach_1^#(eq(x, u), x, y, edge(u, v, i), h), eq^#(x, u)) , if_reach_1^#(true(), x, y, edge(u, v, i), h) -> c_11(if_reach_2^#(eq(y, v), x, y, edge(u, v, i), h), eq^#(y, v)) , if_reach_1^#(false(), x, y, edge(u, v, i), h) -> c_12(reach^#(x, y, i, edge(u, v, h))) , if_reach_2^#(true(), x, y, edge(u, v, i), h) -> c_13() , if_reach_2^#(false(), x, y, edge(u, v, i), h) -> c_14(or^#(reach(x, y, i, h), reach(v, y, union(i, h), empty())), reach^#(x, y, i, h), reach^#(v, y, union(i, h), empty()), union^#(i, h)) } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(0(), 0()) -> c_1() , eq^#(0(), s(x)) -> c_2() , eq^#(s(x), 0()) -> c_3() , eq^#(s(x), s(y)) -> c_4(eq^#(x, y)) , or^#(true(), y) -> c_5() , or^#(false(), y) -> c_6() , union^#(empty(), h) -> c_7() , union^#(edge(x, y, i), h) -> c_8(union^#(i, h)) , reach^#(x, y, empty(), h) -> c_9() , reach^#(x, y, edge(u, v, i), h) -> c_10(if_reach_1^#(eq(x, u), x, y, edge(u, v, i), h), eq^#(x, u)) , if_reach_1^#(true(), x, y, edge(u, v, i), h) -> c_11(if_reach_2^#(eq(y, v), x, y, edge(u, v, i), h), eq^#(y, v)) , if_reach_1^#(false(), x, y, edge(u, v, i), h) -> c_12(reach^#(x, y, i, edge(u, v, h))) , if_reach_2^#(true(), x, y, edge(u, v, i), h) -> c_13() , if_reach_2^#(false(), x, y, edge(u, v, i), h) -> c_14(or^#(reach(x, y, i, h), reach(v, y, union(i, h), empty())), reach^#(x, y, i, h), reach^#(v, y, union(i, h), empty()), union^#(i, h)) } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , or(true(), y) -> true() , or(false(), y) -> y , union(empty(), h) -> h , union(edge(x, y, i), h) -> edge(x, y, union(i, h)) , reach(x, y, empty(), h) -> false() , reach(x, y, edge(u, v, i), h) -> if_reach_1(eq(x, u), x, y, edge(u, v, i), h) , if_reach_1(true(), x, y, edge(u, v, i), h) -> if_reach_2(eq(y, v), x, y, edge(u, v, i), h) , if_reach_1(false(), x, y, edge(u, v, i), h) -> reach(x, y, i, edge(u, v, h)) , if_reach_2(true(), x, y, edge(u, v, i), h) -> true() , if_reach_2(false(), x, y, edge(u, v, i), h) -> or(reach(x, y, i, h), reach(v, y, union(i, h), empty())) } Obligation: innermost runtime complexity Answer: MAYBE We estimate the number of application of {1,2,3,5,6,7,9,13} by applications of Pre({1,2,3,5,6,7,9,13}) = {4,8,10,11,12,14}. Here rules are labeled as follows: DPs: { 1: eq^#(0(), 0()) -> c_1() , 2: eq^#(0(), s(x)) -> c_2() , 3: eq^#(s(x), 0()) -> c_3() , 4: eq^#(s(x), s(y)) -> c_4(eq^#(x, y)) , 5: or^#(true(), y) -> c_5() , 6: or^#(false(), y) -> c_6() , 7: union^#(empty(), h) -> c_7() , 8: union^#(edge(x, y, i), h) -> c_8(union^#(i, h)) , 9: reach^#(x, y, empty(), h) -> c_9() , 10: reach^#(x, y, edge(u, v, i), h) -> c_10(if_reach_1^#(eq(x, u), x, y, edge(u, v, i), h), eq^#(x, u)) , 11: if_reach_1^#(true(), x, y, edge(u, v, i), h) -> c_11(if_reach_2^#(eq(y, v), x, y, edge(u, v, i), h), eq^#(y, v)) , 12: if_reach_1^#(false(), x, y, edge(u, v, i), h) -> c_12(reach^#(x, y, i, edge(u, v, h))) , 13: if_reach_2^#(true(), x, y, edge(u, v, i), h) -> c_13() , 14: if_reach_2^#(false(), x, y, edge(u, v, i), h) -> c_14(or^#(reach(x, y, i, h), reach(v, y, union(i, h), empty())), reach^#(x, y, i, h), reach^#(v, y, union(i, h), empty()), union^#(i, h)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(s(x), s(y)) -> c_4(eq^#(x, y)) , union^#(edge(x, y, i), h) -> c_8(union^#(i, h)) , reach^#(x, y, edge(u, v, i), h) -> c_10(if_reach_1^#(eq(x, u), x, y, edge(u, v, i), h), eq^#(x, u)) , if_reach_1^#(true(), x, y, edge(u, v, i), h) -> c_11(if_reach_2^#(eq(y, v), x, y, edge(u, v, i), h), eq^#(y, v)) , if_reach_1^#(false(), x, y, edge(u, v, i), h) -> c_12(reach^#(x, y, i, edge(u, v, h))) , if_reach_2^#(false(), x, y, edge(u, v, i), h) -> c_14(or^#(reach(x, y, i, h), reach(v, y, union(i, h), empty())), reach^#(x, y, i, h), reach^#(v, y, union(i, h), empty()), union^#(i, h)) } Weak DPs: { eq^#(0(), 0()) -> c_1() , eq^#(0(), s(x)) -> c_2() , eq^#(s(x), 0()) -> c_3() , or^#(true(), y) -> c_5() , or^#(false(), y) -> c_6() , union^#(empty(), h) -> c_7() , reach^#(x, y, empty(), h) -> c_9() , if_reach_2^#(true(), x, y, edge(u, v, i), h) -> c_13() } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , or(true(), y) -> true() , or(false(), y) -> y , union(empty(), h) -> h , union(edge(x, y, i), h) -> edge(x, y, union(i, h)) , reach(x, y, empty(), h) -> false() , reach(x, y, edge(u, v, i), h) -> if_reach_1(eq(x, u), x, y, edge(u, v, i), h) , if_reach_1(true(), x, y, edge(u, v, i), h) -> if_reach_2(eq(y, v), x, y, edge(u, v, i), h) , if_reach_1(false(), x, y, edge(u, v, i), h) -> reach(x, y, i, edge(u, v, h)) , if_reach_2(true(), x, y, edge(u, v, i), h) -> true() , if_reach_2(false(), x, y, edge(u, v, i), h) -> or(reach(x, y, i, h), reach(v, y, union(i, h), empty())) } Obligation: innermost runtime complexity Answer: MAYBE The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { eq^#(0(), 0()) -> c_1() , eq^#(0(), s(x)) -> c_2() , eq^#(s(x), 0()) -> c_3() , or^#(true(), y) -> c_5() , or^#(false(), y) -> c_6() , union^#(empty(), h) -> c_7() , reach^#(x, y, empty(), h) -> c_9() , if_reach_2^#(true(), x, y, edge(u, v, i), h) -> c_13() } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(s(x), s(y)) -> c_4(eq^#(x, y)) , union^#(edge(x, y, i), h) -> c_8(union^#(i, h)) , reach^#(x, y, edge(u, v, i), h) -> c_10(if_reach_1^#(eq(x, u), x, y, edge(u, v, i), h), eq^#(x, u)) , if_reach_1^#(true(), x, y, edge(u, v, i), h) -> c_11(if_reach_2^#(eq(y, v), x, y, edge(u, v, i), h), eq^#(y, v)) , if_reach_1^#(false(), x, y, edge(u, v, i), h) -> c_12(reach^#(x, y, i, edge(u, v, h))) , if_reach_2^#(false(), x, y, edge(u, v, i), h) -> c_14(or^#(reach(x, y, i, h), reach(v, y, union(i, h), empty())), reach^#(x, y, i, h), reach^#(v, y, union(i, h), empty()), union^#(i, h)) } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , or(true(), y) -> true() , or(false(), y) -> y , union(empty(), h) -> h , union(edge(x, y, i), h) -> edge(x, y, union(i, h)) , reach(x, y, empty(), h) -> false() , reach(x, y, edge(u, v, i), h) -> if_reach_1(eq(x, u), x, y, edge(u, v, i), h) , if_reach_1(true(), x, y, edge(u, v, i), h) -> if_reach_2(eq(y, v), x, y, edge(u, v, i), h) , if_reach_1(false(), x, y, edge(u, v, i), h) -> reach(x, y, i, edge(u, v, h)) , if_reach_2(true(), x, y, edge(u, v, i), h) -> true() , if_reach_2(false(), x, y, edge(u, v, i), h) -> or(reach(x, y, i, h), reach(v, y, union(i, h), empty())) } Obligation: innermost runtime complexity Answer: MAYBE Due to missing edges in the dependency-graph, the right-hand sides of following rules could be simplified: { if_reach_2^#(false(), x, y, edge(u, v, i), h) -> c_14(or^#(reach(x, y, i, h), reach(v, y, union(i, h), empty())), reach^#(x, y, i, h), reach^#(v, y, union(i, h), empty()), union^#(i, h)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(s(x), s(y)) -> c_1(eq^#(x, y)) , union^#(edge(x, y, i), h) -> c_2(union^#(i, h)) , reach^#(x, y, edge(u, v, i), h) -> c_3(if_reach_1^#(eq(x, u), x, y, edge(u, v, i), h), eq^#(x, u)) , if_reach_1^#(true(), x, y, edge(u, v, i), h) -> c_4(if_reach_2^#(eq(y, v), x, y, edge(u, v, i), h), eq^#(y, v)) , if_reach_1^#(false(), x, y, edge(u, v, i), h) -> c_5(reach^#(x, y, i, edge(u, v, h))) , if_reach_2^#(false(), x, y, edge(u, v, i), h) -> c_6(reach^#(x, y, i, h), reach^#(v, y, union(i, h), empty()), union^#(i, h)) } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , or(true(), y) -> true() , or(false(), y) -> y , union(empty(), h) -> h , union(edge(x, y, i), h) -> edge(x, y, union(i, h)) , reach(x, y, empty(), h) -> false() , reach(x, y, edge(u, v, i), h) -> if_reach_1(eq(x, u), x, y, edge(u, v, i), h) , if_reach_1(true(), x, y, edge(u, v, i), h) -> if_reach_2(eq(y, v), x, y, edge(u, v, i), h) , if_reach_1(false(), x, y, edge(u, v, i), h) -> reach(x, y, i, edge(u, v, h)) , if_reach_2(true(), x, y, edge(u, v, i), h) -> true() , if_reach_2(false(), x, y, edge(u, v, i), h) -> or(reach(x, y, i, h), reach(v, y, union(i, h), empty())) } Obligation: innermost runtime complexity Answer: MAYBE We replace rewrite rules by usable rules: Weak Usable Rules: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , union(empty(), h) -> h , union(edge(x, y, i), h) -> edge(x, y, union(i, h)) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { eq^#(s(x), s(y)) -> c_1(eq^#(x, y)) , union^#(edge(x, y, i), h) -> c_2(union^#(i, h)) , reach^#(x, y, edge(u, v, i), h) -> c_3(if_reach_1^#(eq(x, u), x, y, edge(u, v, i), h), eq^#(x, u)) , if_reach_1^#(true(), x, y, edge(u, v, i), h) -> c_4(if_reach_2^#(eq(y, v), x, y, edge(u, v, i), h), eq^#(y, v)) , if_reach_1^#(false(), x, y, edge(u, v, i), h) -> c_5(reach^#(x, y, i, edge(u, v, h))) , if_reach_2^#(false(), x, y, edge(u, v, i), h) -> c_6(reach^#(x, y, i, h), reach^#(v, y, union(i, h), empty()), union^#(i, h)) } Weak Trs: { eq(0(), 0()) -> true() , eq(0(), s(x)) -> false() , eq(s(x), 0()) -> false() , eq(s(x), s(y)) -> eq(x, y) , union(empty(), h) -> h , union(edge(x, y, i), h) -> edge(x, y, union(i, h)) } Obligation: innermost runtime complexity Answer: MAYBE The input cannot be shown compatible Arrrr..