MAYBE MAYBE TRS: { ap(ap(ap(if(), null()), f), xs) -> ap(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap(ap(ap(if(), true()), f), xs) -> null(), ap(ap(map(), f), xs) -> ap(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap(ap(if2(), f), xs) -> ap(ap(map(), f), ap(dropLast(), xs)), ap(isEmpty(), ap(ap(cons(), x), xs)) -> null(), ap(isEmpty(), null()) -> true(), ap(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(last(), ap(ap(cons(), y), ys)), ap(last(), ap(ap(cons(), x), null())) -> x, ap(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap(dropLast(), ap(ap(cons(), x), null())) -> null() } DUP: We consider a duplicating system. Trs: { ap(ap(ap(if(), null()), f), xs) -> ap(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap(ap(ap(if(), true()), f), xs) -> null(), ap(ap(map(), f), xs) -> ap(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap(ap(if2(), f), xs) -> ap(ap(map(), f), ap(dropLast(), xs)), ap(isEmpty(), ap(ap(cons(), x), xs)) -> null(), ap(isEmpty(), null()) -> true(), ap(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(last(), ap(ap(cons(), y), ys)), ap(last(), ap(ap(cons(), x), null())) -> x, ap(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap(dropLast(), ap(ap(cons(), x), null())) -> null() } Fail