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: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: app#_A(x1,x2) = x1 + 10 app_A(x1,x2) = x2 + 35 filter_A = 8 cons_A = 21 filtersub_A = 1 false_A = 10 true_A = 40 neq_A = 11 |0|_A = 6 s_A = 0 nil_A = 9 precedence: app = filtersub = false = true = s > app# > filter > cons > nil > neq = |0| partial status: pi(app#) = [] pi(app) = [] pi(filter) = [] pi(cons) = [] pi(filtersub) = [] pi(false) = [] pi(true) = [] pi(neq) = [] pi(|0|) = [] pi(s) = [] pi(nil) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: app#_A(x1,x2) = 0 app_A(x1,x2) = 48 filter_A = 72 cons_A = 69 filtersub_A = 66 false_A = 68 true_A = 68 neq_A = 67 |0|_A = 0 s_A = 66 nil_A = 73 precedence: nil > filter = cons > filtersub = false = true > neq > app > app# > |0| = s 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: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: app#_A(x1,x2) = max{x1 - 21, x2 + 48} app_A(x1,x2) = x2 + 37 filtersub_A = 35 false_A = 5 cons_A = 21 filter_A = 33 true_A = 45 neq_A = 37 |0|_A = 46 s_A = 46 nil_A = 28 precedence: neq > filtersub = |0| = s > cons = nil > app# = app = false = filter = true partial status: pi(app#) = [2] pi(app) = [] pi(filtersub) = [] pi(false) = [] pi(cons) = [] pi(filter) = [] pi(true) = [] pi(neq) = [] pi(|0|) = [] pi(s) = [] pi(nil) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: app#_A(x1,x2) = 17 app_A(x1,x2) = 17 filtersub_A = 1 false_A = 12 cons_A = 12 filter_A = 16 true_A = 8 neq_A = 18 |0|_A = 0 s_A = 4 nil_A = 18 precedence: filtersub > app# = cons = |0| > app > false > nil > filter = true = neq = s 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: 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)) p2: 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} -- Reduction pair. 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)) p2: 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: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: app#_A(x1,x2) = x2 + 4 app_A(x1,x2) = x2 + 60 filter_A = 31 cons_A = 53 filtersub_A = 35 true_A = 0 neq_A = 47 |0|_A = 33 false_A = 32 s_A = 43 nil_A = 30 precedence: app = neq > cons > filtersub > app# > true > |0| = false > s = nil > filter partial status: pi(app#) = [2] pi(app) = [] pi(filter) = [] pi(cons) = [] pi(filtersub) = [] pi(true) = [] pi(neq) = [] pi(|0|) = [] pi(false) = [] pi(s) = [] pi(nil) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: app#_A(x1,x2) = max{0, x2 - 28} app_A(x1,x2) = 29 filter_A = 50 cons_A = 47 filtersub_A = 44 true_A = 28 neq_A = 30 |0|_A = 0 false_A = 47 s_A = 27 nil_A = 51 precedence: app# = app = filter = cons = filtersub = true = neq = |0| = false = s = nil partial status: pi(app#) = [] pi(app) = [] pi(filter) = [] pi(cons) = [] pi(filtersub) = [] pi(true) = [] pi(neq) = [] pi(|0|) = [] pi(false) = [] pi(s) = [] pi(nil) = [] The next rules are strictly ordered: p2 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: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: app#_A(x1,x2) = max{x1 + 2, x2 + 4} app_A(x1,x2) = max{x1, x2 + 3} neq_A = 2 s_A = 3 precedence: app# = app = neq = s partial status: pi(app#) = [1, 2] pi(app) = [1] pi(neq) = [] pi(s) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: app#_A(x1,x2) = max{x1 + 2, x2 + 4} app_A(x1,x2) = max{4, x1} neq_A = 5 s_A = 6 precedence: app# = app = neq = s partial status: pi(app#) = [] pi(app) = [1] pi(neq) = [] pi(s) = [] The next rules are strictly ordered: p1 We remove them from the problem. Then no dependency pair remains.