YES TRS: { app(app(app(comp(), f), g), x) -> app(f, app(g, x)), app(app(map(), f), nil()) -> nil(), app(app(map(), f), app(app(cons(), x), xs)) -> app(app(cons(), app(f, x)), app(app(map(), f), xs)), app(twice(), f) -> app(app(comp(), f), f)} DP: Strict: { app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(app(comp(), f), g), x) -> app#(g, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(cons(), app(f, x)), app(app(map(), f), xs)), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(cons(), app(f, x)), app#(twice(), f) -> app#(app(comp(), f), f), app#(twice(), f) -> app#(comp(), f)} Weak: { app(app(app(comp(), f), g), x) -> app(f, app(g, x)), app(app(map(), f), nil()) -> nil(), app(app(map(), f), app(app(cons(), x), xs)) -> app(app(cons(), app(f, x)), app(app(map(), f), xs)), app(twice(), f) -> app(app(comp(), f), f)} EDG: {(app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(twice(), f) -> app#(comp(), f)) (app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(twice(), f) -> app#(app(comp(), f), f)) (app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(cons(), app(f, x))) (app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(cons(), app(f, x)), app(app(map(), f), xs))) (app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs)) (app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x)) (app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(app(comp(), f), g), x) -> app#(g, x)) (app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(app(comp(), f), g), x) -> app#(f, app(g, x))) (app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x), app#(twice(), f) -> app#(comp(), f)) (app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x), app#(twice(), f) -> app#(app(comp(), f), f)) (app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(cons(), app(f, x))) (app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(cons(), app(f, x)), app(app(map(), f), xs))) (app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs)) (app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x)) (app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x), app#(app(app(comp(), f), g), x) -> app#(g, x)) (app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x), app#(app(app(comp(), f), g), x) -> app#(f, app(g, x))) (app#(app(app(comp(), f), g), x) -> app#(g, x), app#(app(app(comp(), f), g), x) -> app#(f, app(g, x))) (app#(app(app(comp(), f), g), x) -> app#(g, x), app#(app(app(comp(), f), g), x) -> app#(g, x)) (app#(app(app(comp(), f), g), x) -> app#(g, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x)) (app#(app(app(comp(), f), g), x) -> app#(g, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs)) (app#(app(app(comp(), f), g), x) -> app#(g, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(cons(), app(f, x)), app(app(map(), f), xs))) (app#(app(app(comp(), f), g), x) -> app#(g, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(cons(), app(f, x))) (app#(app(app(comp(), f), g), x) -> app#(g, x), app#(twice(), f) -> app#(app(comp(), f), f)) (app#(app(app(comp(), f), g), x) -> app#(g, x), app#(twice(), f) -> app#(comp(), f)) (app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x)) (app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs)) (app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(cons(), app(f, x)), app(app(map(), f), xs))) (app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(cons(), app(f, x)))} SCCS: Scc: { app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(app(comp(), f), g), x) -> app#(g, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs)} SCC: Strict: { app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(app(comp(), f), g), x) -> app#(g, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(f, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs)} Weak: { app(app(app(comp(), f), g), x) -> app(f, app(g, x)), app(app(map(), f), nil()) -> nil(), app(app(map(), f), app(app(cons(), x), xs)) -> app(app(cons(), app(f, x)), app(app(map(), f), xs)), app(twice(), f) -> app(app(comp(), f), f)} SPSC: Simple Projection: pi(app#) = 0 Strict: { app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(app(comp(), f), g), x) -> app#(g, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs)} EDG: {(app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs)) (app#(app(app(comp(), f), g), x) -> app#(g, x), app#(app(app(comp(), f), g), x) -> app#(f, app(g, x))) (app#(app(app(comp(), f), g), x) -> app#(g, x), app#(app(app(comp(), f), g), x) -> app#(g, x)) (app#(app(app(comp(), f), g), x) -> app#(g, x), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs)) (app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(app(comp(), f), g), x) -> app#(f, app(g, x))) (app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(app(comp(), f), g), x) -> app#(g, x)) (app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs))} SCCS: Scc: {app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs)} Scc: {app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(app(comp(), f), g), x) -> app#(g, x)} SCC: Strict: {app#(app(map(), f), app(app(cons(), x), xs)) -> app#(app(map(), f), xs)} Weak: { app(app(app(comp(), f), g), x) -> app(f, app(g, x)), app(app(map(), f), nil()) -> nil(), app(app(map(), f), app(app(cons(), x), xs)) -> app(app(cons(), app(f, x)), app(app(map(), f), xs)), app(twice(), f) -> app(app(comp(), f), f)} SPSC: Simple Projection: pi(app#) = 1 Strict: {} Qed SCC: Strict: {app#(app(app(comp(), f), g), x) -> app#(f, app(g, x)), app#(app(app(comp(), f), g), x) -> app#(g, x)} Weak: { app(app(app(comp(), f), g), x) -> app(f, app(g, x)), app(app(map(), f), nil()) -> nil(), app(app(map(), f), app(app(cons(), x), xs)) -> app(app(cons(), app(f, x)), app(app(map(), f), xs)), app(twice(), f) -> app(app(comp(), f), f)} SPSC: Simple Projection: pi(app#) = 0 Strict: {app#(app(app(comp(), f), g), x) -> app#(g, x)} EDG: {(app#(app(app(comp(), f), g), x) -> app#(g, x), app#(app(app(comp(), f), g), x) -> app#(g, x))} SCCS: Scc: {app#(app(app(comp(), f), g), x) -> app#(g, x)} SCC: Strict: {app#(app(app(comp(), f), g), x) -> app#(g, x)} Weak: { app(app(app(comp(), f), g), x) -> app(f, app(g, x)), app(app(map(), f), nil()) -> nil(), app(app(map(), f), app(app(cons(), x), xs)) -> app(app(cons(), app(f, x)), app(app(map(), f), xs)), app(twice(), f) -> app(app(comp(), f), f)} SPSC: Simple Projection: pi(app#) = 0 Strict: {} Qed