YES We show the termination of the TRS R: app(app(neq(),|0|()),|0|()) -> false() app(app(neq(),|0|()),app(s(),y)) -> true() app(app(neq(),app(s(),x)),|0|()) -> true() app(app(neq(),app(s(),x)),app(s(),y)) -> app(app(neq(),x),y) app(app(filter(),f),nil()) -> nil() app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) nonzero() -> app(filter(),app(neq(),|0|())) -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: app#(app(neq(),app(s(),x)),app(s(),y)) -> app#(app(neq(),x),y) p2: app#(app(neq(),app(s(),x)),app(s(),y)) -> app#(neq(),x) p3: app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) p4: app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(filtersub(),app(f,y)),f) p5: app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(filtersub(),app(f,y)) p6: app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) p7: app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(cons(),y),app(app(filter(),f),ys)) p8: app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) p9: app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(filter(),f) p10: app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) p11: app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(filter(),f) p12: nonzero#() -> app#(filter(),app(neq(),|0|())) p13: nonzero#() -> app#(neq(),|0|()) and R consists of: r1: app(app(neq(),|0|()),|0|()) -> false() r2: app(app(neq(),|0|()),app(s(),y)) -> true() r3: app(app(neq(),app(s(),x)),|0|()) -> true() r4: app(app(neq(),app(s(),x)),app(s(),y)) -> app(app(neq(),x),y) r5: app(app(filter(),f),nil()) -> nil() r6: app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) r7: app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) r8: app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) r9: nonzero() -> app(filter(),app(neq(),|0|())) The estimated dependency graph contains the following SCCs: {p3, p6, p8, p10} {p1} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(f,y) p2: app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) p3: app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) p4: app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) and R consists of: r1: app(app(neq(),|0|()),|0|()) -> false() r2: app(app(neq(),|0|()),app(s(),y)) -> true() r3: app(app(neq(),app(s(),x)),|0|()) -> true() r4: app(app(neq(),app(s(),x)),app(s(),y)) -> app(app(neq(),x),y) r5: app(app(filter(),f),nil()) -> nil() r6: app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) r7: app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) r8: app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) r9: nonzero() -> app(filter(),app(neq(),|0|())) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: standard order interpretations: app#_A(x1,x2) = ((0,1),(0,0)) x1 + (5,9) app_A(x1,x2) = ((0,0),(0,1)) x2 + (3,3) filter_A() = (4,10) cons_A() = (1,8) filtersub_A() = (2,2) false_A() = (2,2) true_A() = (2,4) neq_A() = (4,7) |0|_A() = (1,1) s_A() = (1,0) nil_A() = (1,11) precedence: app# = cons = filtersub = false > app = filter = true = neq = |0| = s = nil partial status: pi(app#) = [] pi(app) = [] pi(filter) = [] pi(cons) = [] pi(filtersub) = [] pi(false) = [] pi(true) = [] pi(neq) = [] pi(|0|) = [] pi(s) = [] pi(nil) = [] The next rules are strictly ordered: p1 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) p2: app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) p3: app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) and R consists of: r1: app(app(neq(),|0|()),|0|()) -> false() r2: app(app(neq(),|0|()),app(s(),y)) -> true() r3: app(app(neq(),app(s(),x)),|0|()) -> true() r4: app(app(neq(),app(s(),x)),app(s(),y)) -> app(app(neq(),x),y) r5: app(app(filter(),f),nil()) -> nil() r6: app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) r7: app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) r8: app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) r9: nonzero() -> app(filter(),app(neq(),|0|())) The estimated dependency graph contains the following SCCs: {p1, p2, p3} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) p2: app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) p3: app#(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) and R consists of: r1: app(app(neq(),|0|()),|0|()) -> false() r2: app(app(neq(),|0|()),app(s(),y)) -> true() r3: app(app(neq(),app(s(),x)),|0|()) -> true() r4: app(app(neq(),app(s(),x)),app(s(),y)) -> app(app(neq(),x),y) r5: app(app(filter(),f),nil()) -> nil() r6: app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) r7: app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) r8: app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) r9: nonzero() -> app(filter(),app(neq(),|0|())) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: standard order interpretations: app#_A(x1,x2) = ((0,1),(0,0)) x2 + (4,31) app_A(x1,x2) = ((0,0),(1,1)) x2 + (10,3) filtersub_A() = (11,30) false_A() = (9,18) cons_A() = (9,17) filter_A() = (8,18) true_A() = (3,2) neq_A() = (2,16) |0|_A() = (2,13) s_A() = (1,1) nil_A() = (9,19) precedence: app# = app = filtersub = false = filter = true = neq > cons = |0| = s = nil partial status: pi(app#) = [] pi(app) = [] pi(filtersub) = [] pi(false) = [] pi(cons) = [] pi(filter) = [] pi(true) = [] pi(neq) = [] pi(|0|) = [] pi(s) = [] pi(nil) = [] The next rules are strictly ordered: p3 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) p2: app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) and R consists of: r1: app(app(neq(),|0|()),|0|()) -> false() r2: app(app(neq(),|0|()),app(s(),y)) -> true() r3: app(app(neq(),app(s(),x)),|0|()) -> true() r4: app(app(neq(),app(s(),x)),app(s(),y)) -> app(app(neq(),x),y) r5: app(app(filter(),f),nil()) -> nil() r6: app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) r7: app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) r8: app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) r9: nonzero() -> app(filter(),app(neq(),|0|())) The estimated dependency graph contains the following SCCs: {p1, p2} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: app#(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app#(app(filter(),f),ys) p2: app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) and R consists of: r1: app(app(neq(),|0|()),|0|()) -> false() r2: app(app(neq(),|0|()),app(s(),y)) -> true() r3: app(app(neq(),app(s(),x)),|0|()) -> true() r4: app(app(neq(),app(s(),x)),app(s(),y)) -> app(app(neq(),x),y) r5: app(app(filter(),f),nil()) -> nil() r6: app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) r7: app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) r8: app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) r9: nonzero() -> app(filter(),app(neq(),|0|())) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8 Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: standard order interpretations: app#_A(x1,x2) = ((0,0),(1,1)) x1 + ((1,0),(1,0)) x2 + (2,0) app_A(x1,x2) = ((1,0),(0,0)) x2 + (3,1) filtersub_A() = (7,8) false_A() = (0,1) cons_A() = (1,3) filter_A() = (2,6) neq_A() = (7,2) |0|_A() = (1,1) s_A() = (1,1) true_A() = (0,0) nil_A() = (1,1) precedence: app# = filtersub = false > filter = neq = |0| = s = true = nil > app = cons partial status: pi(app#) = [] pi(app) = [] pi(filtersub) = [] pi(false) = [] pi(cons) = [] pi(filter) = [] pi(neq) = [] pi(|0|) = [] pi(s) = [] pi(true) = [] pi(nil) = [] The next rules are strictly ordered: p1 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: app#(app(filter(),f),app(app(cons(),y),ys)) -> app#(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) and R consists of: r1: app(app(neq(),|0|()),|0|()) -> false() r2: app(app(neq(),|0|()),app(s(),y)) -> true() r3: app(app(neq(),app(s(),x)),|0|()) -> true() r4: app(app(neq(),app(s(),x)),app(s(),y)) -> app(app(neq(),x),y) r5: app(app(filter(),f),nil()) -> nil() r6: app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) r7: app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) r8: app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) r9: nonzero() -> app(filter(),app(neq(),|0|())) The estimated dependency graph contains the following SCCs: (no SCCs) -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: app#(app(neq(),app(s(),x)),app(s(),y)) -> app#(app(neq(),x),y) and R consists of: r1: app(app(neq(),|0|()),|0|()) -> false() r2: app(app(neq(),|0|()),app(s(),y)) -> true() r3: app(app(neq(),app(s(),x)),|0|()) -> true() r4: app(app(neq(),app(s(),x)),app(s(),y)) -> app(app(neq(),x),y) r5: app(app(filter(),f),nil()) -> nil() r6: app(app(filter(),f),app(app(cons(),y),ys)) -> app(app(app(filtersub(),app(f,y)),f),app(app(cons(),y),ys)) r7: app(app(app(filtersub(),true()),f),app(app(cons(),y),ys)) -> app(app(cons(),y),app(app(filter(),f),ys)) r8: app(app(app(filtersub(),false()),f),app(app(cons(),y),ys)) -> app(app(filter(),f),ys) r9: nonzero() -> app(filter(),app(neq(),|0|())) The set of usable rules consists of (no rules) Take the reduction pair: weighted path order base order: matrix interpretations: carrier: N^2 order: standard order interpretations: app#_A(x1,x2) = ((1,1),(1,1)) x2 + (7,5) app_A(x1,x2) = x2 + (3,2) neq_A() = (1,1) s_A() = (2,1) precedence: app# = app = s > neq partial status: pi(app#) = [] pi(app) = [] pi(neq) = [] pi(s) = [] The next rules are strictly ordered: p1 We remove them from the problem. Then no dependency pair remains.