MAYBE Time: 0.022856 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()} DP: DP: { ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), 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), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))} 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()} UR: { 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(), a(z, w) -> z, a(z, w) -> w} EDG: { (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), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (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), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), 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#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), 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), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (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#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) } EDG: {(ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))} EDG: {(ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))} EDG: {(ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs)) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys)))) (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))) (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))} STATUS: arrows: 0.863281 SCCS (3): Scc: {ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), 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))} Scc: {ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))} Scc: {ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))} SCC (4): Strict: {ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), 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))} Weak: { 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()} Open SCC (1): Strict: {ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))} Weak: { 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()} Open SCC (1): Strict: {ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))} Weak: { 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()} Open