YES We show the termination of the TRS R: app(app(append(),nil()),l) -> l app(app(append(),app(app(cons(),h),t)),l) -> app(app(cons(),h),app(app(append(),t),l)) app(app(map(),f),nil()) -> nil() app(app(map(),f),app(app(cons(),h),t)) -> app(app(cons(),app(f,h)),app(app(map(),f),t)) app(app(append(),app(app(append(),l1),l2)),l3) -> app(app(append(),l1),app(app(append(),l2),l3)) app(app(map(),f),app(app(append(),l1),l2)) -> app(app(append(),app(app(map(),f),l1)),app(app(map(),f),l2)) -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: app#(app(append(),app(app(cons(),h),t)),l) -> app#(app(cons(),h),app(app(append(),t),l)) p2: app#(app(append(),app(app(cons(),h),t)),l) -> app#(app(append(),t),l) p3: app#(app(append(),app(app(cons(),h),t)),l) -> app#(append(),t) p4: app#(app(map(),f),app(app(cons(),h),t)) -> app#(app(cons(),app(f,h)),app(app(map(),f),t)) p5: app#(app(map(),f),app(app(cons(),h),t)) -> app#(cons(),app(f,h)) p6: app#(app(map(),f),app(app(cons(),h),t)) -> app#(f,h) p7: app#(app(map(),f),app(app(cons(),h),t)) -> app#(app(map(),f),t) p8: app#(app(append(),app(app(append(),l1),l2)),l3) -> app#(app(append(),l1),app(app(append(),l2),l3)) p9: app#(app(append(),app(app(append(),l1),l2)),l3) -> app#(app(append(),l2),l3) p10: app#(app(append(),app(app(append(),l1),l2)),l3) -> app#(append(),l2) p11: app#(app(map(),f),app(app(append(),l1),l2)) -> app#(app(append(),app(app(map(),f),l1)),app(app(map(),f),l2)) p12: app#(app(map(),f),app(app(append(),l1),l2)) -> app#(append(),app(app(map(),f),l1)) p13: app#(app(map(),f),app(app(append(),l1),l2)) -> app#(app(map(),f),l1) p14: app#(app(map(),f),app(app(append(),l1),l2)) -> app#(app(map(),f),l2) and R consists of: r1: app(app(append(),nil()),l) -> l r2: app(app(append(),app(app(cons(),h),t)),l) -> app(app(cons(),h),app(app(append(),t),l)) r3: app(app(map(),f),nil()) -> nil() r4: app(app(map(),f),app(app(cons(),h),t)) -> app(app(cons(),app(f,h)),app(app(map(),f),t)) r5: app(app(append(),app(app(append(),l1),l2)),l3) -> app(app(append(),l1),app(app(append(),l2),l3)) r6: app(app(map(),f),app(app(append(),l1),l2)) -> app(app(append(),app(app(map(),f),l1)),app(app(map(),f),l2)) The estimated dependency graph contains the following SCCs: {p6, p7, p13, p14} {p2, p8, p9} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: app#(app(map(),f),app(app(append(),l1),l2)) -> app#(app(map(),f),l2) p2: app#(app(map(),f),app(app(append(),l1),l2)) -> app#(app(map(),f),l1) p3: app#(app(map(),f),app(app(cons(),h),t)) -> app#(app(map(),f),t) p4: app#(app(map(),f),app(app(cons(),h),t)) -> app#(f,h) and R consists of: r1: app(app(append(),nil()),l) -> l r2: app(app(append(),app(app(cons(),h),t)),l) -> app(app(cons(),h),app(app(append(),t),l)) r3: app(app(map(),f),nil()) -> nil() r4: app(app(map(),f),app(app(cons(),h),t)) -> app(app(cons(),app(f,h)),app(app(map(),f),t)) r5: app(app(append(),app(app(append(),l1),l2)),l3) -> app(app(append(),l1),app(app(append(),l2),l3)) r6: app(app(map(),f),app(app(append(),l1),l2)) -> app(app(append(),app(app(map(),f),l1)),app(app(map(),f),l2)) The set of usable rules consists of (no rules) Take the monotone reduction pair: lexicographic path order with precedence: precedence: app > app# > map > cons > append argument filter: pi(app#) = [1, 2] pi(app) = [1, 2] pi(map) = [] pi(append) = [] pi(cons) = [] The next rules are strictly ordered: p1, p2, p3, p4 r1, r2, r3, r4, r5, r6 We remove them from the problem. Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: app#(app(append(),app(app(cons(),h),t)),l) -> app#(app(append(),t),l) p2: app#(app(append(),app(app(append(),l1),l2)),l3) -> app#(app(append(),l2),l3) p3: app#(app(append(),app(app(append(),l1),l2)),l3) -> app#(app(append(),l1),app(app(append(),l2),l3)) and R consists of: r1: app(app(append(),nil()),l) -> l r2: app(app(append(),app(app(cons(),h),t)),l) -> app(app(cons(),h),app(app(append(),t),l)) r3: app(app(map(),f),nil()) -> nil() r4: app(app(map(),f),app(app(cons(),h),t)) -> app(app(cons(),app(f,h)),app(app(map(),f),t)) r5: app(app(append(),app(app(append(),l1),l2)),l3) -> app(app(append(),l1),app(app(append(),l2),l3)) r6: app(app(map(),f),app(app(append(),l1),l2)) -> app(app(append(),app(app(map(),f),l1)),app(app(map(),f),l2)) The set of usable rules consists of r1, r2, r5 Take the reduction pair: lexicographic path order with precedence: precedence: nil > app > append > app# > cons argument filter: pi(app#) = 1 pi(app) = [1, 2] pi(append) = [] pi(cons) = [] pi(nil) = [] The next rules are strictly ordered: p1, p2, p3 We remove them from the problem. Then no dependency pair remains.