YES TRS: { app(app(app(if(), true()), x), y) -> x, app(app(app(if(), true()), x), y) -> y, app(app(takeWhile(), p), app(app(cons(), x), xs)) -> app(app(app(if(), app(p, x)), app(app(cons(), x), app(app(takeWhile(), p), xs))), nil()), app(app(takeWhile(), p), nil()) -> nil(), app(app(dropWhile(), p), app(app(cons(), x), xs)) -> app(app(app(if(), app(p, x)), app(app(dropWhile(), p), xs)), app(app(cons(), x), xs)), app(app(dropWhile(), p), nil()) -> nil()} DP: Strict: {app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(app(if(), app(p, x)), app(app(cons(), x), app(app(takeWhile(), p), xs))), nil()), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(if(), app(p, x)), app(app(cons(), x), app(app(takeWhile(), p), xs))), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(cons(), x), app(app(takeWhile(), p), xs)), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(if(), app(p, x)), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(app(if(), app(p, x)), app(app(dropWhile(), p), xs)), app(app(cons(), x), xs)), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(if(), app(p, x)), app(app(dropWhile(), p), xs)), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(if(), app(p, x))} Weak: { app(app(app(if(), true()), x), y) -> x, app(app(app(if(), true()), x), y) -> y, app(app(takeWhile(), p), app(app(cons(), x), xs)) -> app(app(app(if(), app(p, x)), app(app(cons(), x), app(app(takeWhile(), p), xs))), nil()), app(app(takeWhile(), p), nil()) -> nil(), app(app(dropWhile(), p), app(app(cons(), x), xs)) -> app(app(app(if(), app(p, x)), app(app(dropWhile(), p), xs)), app(app(cons(), x), xs)), app(app(dropWhile(), p), nil()) -> nil()} EDG: {(app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(if(), app(p, x))) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs)) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(if(), app(p, x)), app(app(dropWhile(), p), xs))) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(app(if(), app(p, x)), app(app(dropWhile(), p), xs)), app(app(cons(), x), xs))) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x)) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(if(), app(p, x))) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(cons(), x), app(app(takeWhile(), p), xs))) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs)) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(if(), app(p, x)), app(app(cons(), x), app(app(takeWhile(), p), xs)))) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(app(if(), app(p, x)), app(app(cons(), x), app(app(takeWhile(), p), xs))), nil())) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x)) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(if(), app(p, x))) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(cons(), x), app(app(takeWhile(), p), xs))) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs)) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(if(), app(p, x)), app(app(cons(), x), app(app(takeWhile(), p), xs)))) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(app(if(), app(p, x)), app(app(cons(), x), app(app(takeWhile(), p), xs))), nil())) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x)) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x)) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(app(if(), app(p, x)), app(app(dropWhile(), p), xs)), app(app(cons(), x), xs))) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(if(), app(p, x)), app(app(dropWhile(), p), xs))) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs)) (app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(if(), app(p, x))) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x)) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(app(if(), app(p, x)), app(app(cons(), x), app(app(takeWhile(), p), xs))), nil())) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(if(), app(p, x)), app(app(cons(), x), app(app(takeWhile(), p), xs)))) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs)) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(cons(), x), app(app(takeWhile(), p), xs))) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(if(), app(p, x))) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x)) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(app(if(), app(p, x)), app(app(dropWhile(), p), xs)), app(app(cons(), x), xs))) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(if(), app(p, x)), app(app(dropWhile(), p), xs))) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs)) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(if(), app(p, x)))} SCCS: Scc: {app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs)} SCC: Strict: {app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs)} Weak: { app(app(app(if(), true()), x), y) -> x, app(app(app(if(), true()), x), y) -> y, app(app(takeWhile(), p), app(app(cons(), x), xs)) -> app(app(app(if(), app(p, x)), app(app(cons(), x), app(app(takeWhile(), p), xs))), nil()), app(app(takeWhile(), p), nil()) -> nil(), app(app(dropWhile(), p), app(app(cons(), x), xs)) -> app(app(app(if(), app(p, x)), app(app(dropWhile(), p), xs)), app(app(cons(), x), xs)), app(app(dropWhile(), p), nil()) -> nil()} SPSC: Simple Projection: pi(app#) = 0 Strict: {app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs)} EDG: {(app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs)) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x)) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs)) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs)) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x)) (app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs))} SCCS: Scc: {app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs)} Scc: {app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs)} SCC: Strict: {app#(app(dropWhile(), p), app(app(cons(), x), xs)) -> app#(app(dropWhile(), p), xs)} Weak: { app(app(app(if(), true()), x), y) -> x, app(app(app(if(), true()), x), y) -> y, app(app(takeWhile(), p), app(app(cons(), x), xs)) -> app(app(app(if(), app(p, x)), app(app(cons(), x), app(app(takeWhile(), p), xs))), nil()), app(app(takeWhile(), p), nil()) -> nil(), app(app(dropWhile(), p), app(app(cons(), x), xs)) -> app(app(app(if(), app(p, x)), app(app(dropWhile(), p), xs)), app(app(cons(), x), xs)), app(app(dropWhile(), p), nil()) -> nil()} SPSC: Simple Projection: pi(app#) = 1 Strict: {} Qed SCC: Strict: {app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(p, x), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs)} Weak: { app(app(app(if(), true()), x), y) -> x, app(app(app(if(), true()), x), y) -> y, app(app(takeWhile(), p), app(app(cons(), x), xs)) -> app(app(app(if(), app(p, x)), app(app(cons(), x), app(app(takeWhile(), p), xs))), nil()), app(app(takeWhile(), p), nil()) -> nil(), app(app(dropWhile(), p), app(app(cons(), x), xs)) -> app(app(app(if(), app(p, x)), app(app(dropWhile(), p), xs)), app(app(cons(), x), xs)), app(app(dropWhile(), p), nil()) -> nil()} SPSC: Simple Projection: pi(app#) = 0 Strict: {app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs)} EDG: {(app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs), app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs))} SCCS: Scc: {app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs)} SCC: Strict: {app#(app(takeWhile(), p), app(app(cons(), x), xs)) -> app#(app(takeWhile(), p), xs)} Weak: { app(app(app(if(), true()), x), y) -> x, app(app(app(if(), true()), x), y) -> y, app(app(takeWhile(), p), app(app(cons(), x), xs)) -> app(app(app(if(), app(p, x)), app(app(cons(), x), app(app(takeWhile(), p), xs))), nil()), app(app(takeWhile(), p), nil()) -> nil(), app(app(dropWhile(), p), app(app(cons(), x), xs)) -> app(app(app(if(), app(p, x)), app(app(dropWhile(), p), xs)), app(app(cons(), x), xs)), app(app(dropWhile(), p), nil()) -> nil()} SPSC: Simple Projection: pi(app#) = 1 Strict: {} Qed