MAYBE MAYBE TRS: { length(nil()) -> 0(), length(cons(x, l)) -> s(length(l)), lt(x, 0()) -> false(), lt(0(), s(y)) -> true(), lt(s(x), s(y)) -> lt(x, y), head(nil()) -> undefined(), head(cons(x, l)) -> x, tail(nil()) -> nil(), tail(cons(x, l)) -> l, rev(x, l, accu, orig) -> if(lt(x, length(orig)), x, l, accu, orig), reverse(l) -> rev(0(), l, nil(), l), if(false(), x, l, accu, orig) -> accu, if(true(), x, l, accu, orig) -> rev(s(x), tail(l), cons(head(l), accu), orig) } DUP: We consider a duplicating system. Trs: { length(nil()) -> 0(), length(cons(x, l)) -> s(length(l)), lt(x, 0()) -> false(), lt(0(), s(y)) -> true(), lt(s(x), s(y)) -> lt(x, y), head(nil()) -> undefined(), head(cons(x, l)) -> x, tail(nil()) -> nil(), tail(cons(x, l)) -> l, rev(x, l, accu, orig) -> if(lt(x, length(orig)), x, l, accu, orig), reverse(l) -> rev(0(), l, nil(), l), if(false(), x, l, accu, orig) -> accu, if(true(), x, l, accu, orig) -> rev(s(x), tail(l), cons(head(l), accu), orig) } Fail