MAYBE Trs: { times(x, y) -> sum(generate(x, y)), generate(x, y) -> gen(x, y, 0()), if(true(), x, y, z) -> nil(), if(false(), x, y, z) -> cons(y, gen(x, y, s(z))), gen(x, y, z) -> if(ge(z, x), x, y, z), sum(xs) -> sum2(xs, 0()), ifsum(true(), b, xs, y) -> y, ifsum(false(), b, xs, y) -> ifsum2(b, xs, y), ifsum2(true(), xs, y) -> sum2(tail(xs), y), ifsum2(false(), xs, y) -> sum2(cons(p(head(xs)), tail(xs)), s(y)), sum2(xs, y) -> ifsum(isNil(xs), isZero(head(xs)), xs, y), isNil(cons(x, xs)) -> false(), isNil(nil()) -> true(), tail(cons(x, xs)) -> xs, tail(nil()) -> nil(), head(cons(x, xs)) -> x, head(nil()) -> error(), isZero(0()) -> true(), isZero(s(0())) -> false(), isZero(s(s(x))) -> isZero(s(x)), p(0()) -> s(s(0())), p(s(0())) -> 0(), p(s(s(x))) -> s(p(s(x))), ge(0(), s(y)) -> false(), ge(s(x), s(y)) -> ge(x, y), ge(x, 0()) -> true(), a() -> c(), a() -> d()} Comment: We consider a duplicating trs. FAIL: Open