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_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())), if_reach_1(false(), x, y, edge(u, v, i), h) -> reach(x, y, i, edge(u, v, h))} Fail