YES We show the termination of the TRS R: app(app(lt(),app(s(),x)),app(s(),y)) -> app(app(lt(),x),y) app(app(lt(),|0|()),app(s(),y)) -> true() app(app(lt(),y),|0|()) -> false() app(app(eq(),x),x) -> true() app(app(eq(),app(s(),x)),|0|()) -> false() app(app(eq(),|0|()),app(s(),x)) -> false() app(app(member(),w),null()) -> false() app(app(member(),w),app(app(app(fork(),x),y),z)) -> app(app(app(if(),app(app(lt(),w),y)),app(app(member(),w),x)),app(app(app(if(),app(app(eq(),w),y)),true()),app(app(member(),w),z))) Instead we prove termination of the uncurried system: app(eq_0(),y) -> eq_1(y) app(eq_1(x1),y) -> eq_2(x1,y) app(fork_0(),y) -> fork_1(y) app(fork_1(x1),y) -> fork_2(x1,y) app(fork_2(x1,x2),y) -> fork_3(x1,x2,y) app(if_0(),y) -> if_1(y) app(if_1(x1),y) -> if_2(x1,y) app(if_2(x1,x2),y) -> if_3(x1,x2,y) app(lt_0(),y) -> lt_1(y) app(lt_1(x1),y) -> lt_2(x1,y) app(member_0(),y) -> member_1(y) app(member_1(x1),y) -> member_2(x1,y) app(s_0(),y) -> s_1(y) lt_2(s_1(x),s_1(y)) -> lt_2(x,y) lt_2(|0|_0(),s_1(y)) -> true_0() lt_2(y,|0|_0()) -> false_0() eq_2(x,x) -> true_0() eq_2(s_1(x),|0|_0()) -> false_0() eq_2(|0|_0(),s_1(x)) -> false_0() member_2(w,null_0()) -> false_0() member_2(w,fork_3(x,y,z)) -> if_3(lt_2(w,y),member_2(w,x),if_3(eq_2(w,y),true_0(),member_2(w,z))) -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: app#(eq_1(x1),y) -> eq_2#(x1,y) p2: app#(lt_1(x1),y) -> lt_2#(x1,y) p3: app#(member_1(x1),y) -> member_2#(x1,y) p4: lt_2#(s_1(x),s_1(y)) -> lt_2#(x,y) p5: member_2#(w,fork_3(x,y,z)) -> lt_2#(w,y) p6: member_2#(w,fork_3(x,y,z)) -> member_2#(w,x) p7: member_2#(w,fork_3(x,y,z)) -> eq_2#(w,y) p8: member_2#(w,fork_3(x,y,z)) -> member_2#(w,z) and R consists of: r1: app(eq_0(),y) -> eq_1(y) r2: app(eq_1(x1),y) -> eq_2(x1,y) r3: app(fork_0(),y) -> fork_1(y) r4: app(fork_1(x1),y) -> fork_2(x1,y) r5: app(fork_2(x1,x2),y) -> fork_3(x1,x2,y) r6: app(if_0(),y) -> if_1(y) r7: app(if_1(x1),y) -> if_2(x1,y) r8: app(if_2(x1,x2),y) -> if_3(x1,x2,y) r9: app(lt_0(),y) -> lt_1(y) r10: app(lt_1(x1),y) -> lt_2(x1,y) r11: app(member_0(),y) -> member_1(y) r12: app(member_1(x1),y) -> member_2(x1,y) r13: app(s_0(),y) -> s_1(y) r14: lt_2(s_1(x),s_1(y)) -> lt_2(x,y) r15: lt_2(|0|_0(),s_1(y)) -> true_0() r16: lt_2(y,|0|_0()) -> false_0() r17: eq_2(x,x) -> true_0() r18: eq_2(s_1(x),|0|_0()) -> false_0() r19: eq_2(|0|_0(),s_1(x)) -> false_0() r20: member_2(w,null_0()) -> false_0() r21: member_2(w,fork_3(x,y,z)) -> if_3(lt_2(w,y),member_2(w,x),if_3(eq_2(w,y),true_0(),member_2(w,z))) The estimated dependency graph contains the following SCCs: {p6, p8} {p4} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: member_2#(w,fork_3(x,y,z)) -> member_2#(w,z) p2: member_2#(w,fork_3(x,y,z)) -> member_2#(w,x) and R consists of: r1: app(eq_0(),y) -> eq_1(y) r2: app(eq_1(x1),y) -> eq_2(x1,y) r3: app(fork_0(),y) -> fork_1(y) r4: app(fork_1(x1),y) -> fork_2(x1,y) r5: app(fork_2(x1,x2),y) -> fork_3(x1,x2,y) r6: app(if_0(),y) -> if_1(y) r7: app(if_1(x1),y) -> if_2(x1,y) r8: app(if_2(x1,x2),y) -> if_3(x1,x2,y) r9: app(lt_0(),y) -> lt_1(y) r10: app(lt_1(x1),y) -> lt_2(x1,y) r11: app(member_0(),y) -> member_1(y) r12: app(member_1(x1),y) -> member_2(x1,y) r13: app(s_0(),y) -> s_1(y) r14: lt_2(s_1(x),s_1(y)) -> lt_2(x,y) r15: lt_2(|0|_0(),s_1(y)) -> true_0() r16: lt_2(y,|0|_0()) -> false_0() r17: eq_2(x,x) -> true_0() r18: eq_2(s_1(x),|0|_0()) -> false_0() r19: eq_2(|0|_0(),s_1(x)) -> false_0() r20: member_2(w,null_0()) -> false_0() r21: member_2(w,fork_3(x,y,z)) -> if_3(lt_2(w,y),member_2(w,x),if_3(eq_2(w,y),true_0(),member_2(w,z))) The set of usable rules consists of r1, r3, r4, r6, r7, r8, r11, r13, r15, r16, r18, r19 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: max/plus interpretation on natural numbers: member_2#_A(x1,x2) = x2 fork_3_A(x1,x2,x3) = max{x1, x2 - 26, x3} app_A(x1,x2) = max{8, x1 - 10, x2 - 1} eq_0_A = 9 eq_1_A(x1) = max{8, x1 - 16} fork_0_A = 9 fork_1_A(x1) = max{8, x1 - 1} fork_2_A(x1,x2) = max{8, x1 - 11, x2 - 27} if_0_A = 1 if_1_A(x1) = max{2, x1 - 2} if_2_A(x1,x2) = max{3, x1 - 13, x2 - 2} if_3_A(x1,x2,x3) = max{4, x1 - 24, x2 - 13, x3 - 6} member_0_A = 3 member_1_A(x1) = max{4, x1 - 2} s_0_A = 6 s_1_A(x1) = max{7, x1 - 53} lt_2_A(x1,x2) = max{8, x1 - 8, x2 - 52} |0|_0_A = 7 true_0_A = 6 false_0_A = 0 eq_2_A(x1,x2) = max{5, x1 - 26, x2 - 52} base order 2: precedence: app > s_1 = |0|_0 > true_0 > eq_0 = if_0 = s_0 > member_1 = lt_2 = eq_2 > fork_3 = eq_1 = if_3 = member_0 = false_0 > member_2# = fork_2 = if_2 > fork_1 = if_1 > fork_0 partial status: pi(member_2#) = [2] pi(fork_3) = [1, 3] pi(app) = [] pi(eq_0) = [] pi(eq_1) = [] pi(fork_0) = [] pi(fork_1) = [] pi(fork_2) = [] pi(if_0) = [] pi(if_1) = [] pi(if_2) = [] pi(if_3) = [] pi(member_0) = [] pi(member_1) = [] pi(s_0) = [] pi(s_1) = [] pi(lt_2) = [] pi(|0|_0) = [] pi(true_0) = [] pi(false_0) = [] pi(eq_2) = [] The following rules are removed: p1 -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: member_2#(w,fork_3(x,y,z)) -> member_2#(w,x) and R consists of: r1: app(eq_0(),y) -> eq_1(y) r2: app(eq_1(x1),y) -> eq_2(x1,y) r3: app(fork_0(),y) -> fork_1(y) r4: app(fork_1(x1),y) -> fork_2(x1,y) r5: app(fork_2(x1,x2),y) -> fork_3(x1,x2,y) r6: app(if_0(),y) -> if_1(y) r7: app(if_1(x1),y) -> if_2(x1,y) r8: app(if_2(x1,x2),y) -> if_3(x1,x2,y) r9: app(lt_0(),y) -> lt_1(y) r10: app(lt_1(x1),y) -> lt_2(x1,y) r11: app(member_0(),y) -> member_1(y) r12: app(member_1(x1),y) -> member_2(x1,y) r13: app(s_0(),y) -> s_1(y) r14: lt_2(s_1(x),s_1(y)) -> lt_2(x,y) r15: lt_2(|0|_0(),s_1(y)) -> true_0() r16: lt_2(y,|0|_0()) -> false_0() r17: eq_2(x,x) -> true_0() r18: eq_2(s_1(x),|0|_0()) -> false_0() r19: eq_2(|0|_0(),s_1(x)) -> false_0() r20: member_2(w,null_0()) -> false_0() r21: member_2(w,fork_3(x,y,z)) -> if_3(lt_2(w,y),member_2(w,x),if_3(eq_2(w,y),true_0(),member_2(w,z))) The estimated dependency graph contains the following SCCs: {p1} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: member_2#(w,fork_3(x,y,z)) -> member_2#(w,x) and R consists of: r1: app(eq_0(),y) -> eq_1(y) r2: app(eq_1(x1),y) -> eq_2(x1,y) r3: app(fork_0(),y) -> fork_1(y) r4: app(fork_1(x1),y) -> fork_2(x1,y) r5: app(fork_2(x1,x2),y) -> fork_3(x1,x2,y) r6: app(if_0(),y) -> if_1(y) r7: app(if_1(x1),y) -> if_2(x1,y) r8: app(if_2(x1,x2),y) -> if_3(x1,x2,y) r9: app(lt_0(),y) -> lt_1(y) r10: app(lt_1(x1),y) -> lt_2(x1,y) r11: app(member_0(),y) -> member_1(y) r12: app(member_1(x1),y) -> member_2(x1,y) r13: app(s_0(),y) -> s_1(y) r14: lt_2(s_1(x),s_1(y)) -> lt_2(x,y) r15: lt_2(|0|_0(),s_1(y)) -> true_0() r16: lt_2(y,|0|_0()) -> false_0() r17: eq_2(x,x) -> true_0() r18: eq_2(s_1(x),|0|_0()) -> false_0() r19: eq_2(|0|_0(),s_1(x)) -> false_0() r20: member_2(w,null_0()) -> false_0() r21: member_2(w,fork_3(x,y,z)) -> if_3(lt_2(w,y),member_2(w,x),if_3(eq_2(w,y),true_0(),member_2(w,z))) The set of usable rules consists of r1, r3, r4, r6, r7, r8, r9, r11, r13, r15, r16, r18, r19 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: max/plus interpretation on natural numbers: member_2#_A(x1,x2) = max{3, x2 - 1} fork_3_A(x1,x2,x3) = max{5, x1 + 2, x2 - 39, x3 - 16} app_A(x1,x2) = max{9, x1 - 10, x2 - 1} eq_0_A = 9 eq_1_A(x1) = max{6, x1 - 29} fork_0_A = 9 fork_1_A(x1) = max{8, x1 - 2} fork_2_A(x1,x2) = max{9, x1 - 12, x2 - 30} if_0_A = 3 if_1_A(x1) = max{4, x1 - 2} if_2_A(x1,x2) = max{5, x1 - 12, x2 - 1} if_3_A(x1,x2,x3) = max{6, x1 - 22, x2 - 11, x3 - 23} lt_0_A = 5 lt_1_A(x1) = max{6, x1 - 29} member_0_A = 6 member_1_A(x1) = max{7, x1 - 2} s_0_A = 5 s_1_A(x1) = max{6, x1 - 85} lt_2_A(x1,x2) = max{7, x1 - 40, x2 - 84} |0|_0_A = 39 true_0_A = 3 false_0_A = 0 eq_2_A(x1,x2) = max{7, x1 - 40, x2 - 84} base order 2: precedence: app > eq_1 = if_3 = lt_2 = eq_2 > member_2# = fork_3 = eq_0 = if_2 = lt_1 = member_1 = s_1 = |0|_0 > fork_2 = if_1 = lt_0 = member_0 = s_0 = true_0 = false_0 > fork_1 = if_0 > fork_0 partial status: pi(member_2#) = [] pi(fork_3) = [1] pi(app) = [] pi(eq_0) = [] pi(eq_1) = [] pi(fork_0) = [] pi(fork_1) = [] pi(fork_2) = [] pi(if_0) = [] pi(if_1) = [] pi(if_2) = [] pi(if_3) = [] pi(lt_0) = [] pi(lt_1) = [] pi(member_0) = [] pi(member_1) = [] pi(s_0) = [] pi(s_1) = [] pi(lt_2) = [] pi(|0|_0) = [] pi(true_0) = [] pi(false_0) = [] pi(eq_2) = [] The following rules are removed: p1 Then no dependency pair remains. -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: lt_2#(s_1(x),s_1(y)) -> lt_2#(x,y) and R consists of: r1: app(eq_0(),y) -> eq_1(y) r2: app(eq_1(x1),y) -> eq_2(x1,y) r3: app(fork_0(),y) -> fork_1(y) r4: app(fork_1(x1),y) -> fork_2(x1,y) r5: app(fork_2(x1,x2),y) -> fork_3(x1,x2,y) r6: app(if_0(),y) -> if_1(y) r7: app(if_1(x1),y) -> if_2(x1,y) r8: app(if_2(x1,x2),y) -> if_3(x1,x2,y) r9: app(lt_0(),y) -> lt_1(y) r10: app(lt_1(x1),y) -> lt_2(x1,y) r11: app(member_0(),y) -> member_1(y) r12: app(member_1(x1),y) -> member_2(x1,y) r13: app(s_0(),y) -> s_1(y) r14: lt_2(s_1(x),s_1(y)) -> lt_2(x,y) r15: lt_2(|0|_0(),s_1(y)) -> true_0() r16: lt_2(y,|0|_0()) -> false_0() r17: eq_2(x,x) -> true_0() r18: eq_2(s_1(x),|0|_0()) -> false_0() r19: eq_2(|0|_0(),s_1(x)) -> false_0() r20: member_2(w,null_0()) -> false_0() r21: member_2(w,fork_3(x,y,z)) -> if_3(lt_2(w,y),member_2(w,x),if_3(eq_2(w,y),true_0(),member_2(w,z))) The set of usable rules consists of r1, r3, r4, r6, r7, r8, r9, r11, r15, r16, r18, r19 Take the reduction pair: generalized weighted path order (>=MG, >MG) base order 1: max/plus interpretation on natural numbers: lt_2#_A(x1,x2) = max{x1 - 1, x2 + 32} s_1_A(x1) = x1 + 33 app_A(x1,x2) = max{36, x1 - 37, x2 - 35} eq_0_A = 36 eq_1_A(x1) = max{35, x1 - 36} fork_0_A = 36 fork_1_A(x1) = max{31, x1 - 35} fork_2_A(x1,x2) = max{32, x1 - 72, x2 - 35} if_0_A = 1 if_1_A(x1) = max{2, x1 - 36} if_2_A(x1,x2) = max{3, x1 - 73, x2 - 41} if_3_A(x1,x2,x3) = max{4, x1 - 111, x2 - 79, x3 - 54} lt_0_A = 34 lt_1_A(x1) = max{35, x1 - 36} member_0_A = 29 member_1_A(x1) = max{30, x1 - 94} lt_2_A(x1,x2) = max{37, x1 - 34, x2 - 34} |0|_0_A = 33 true_0_A = 32 false_0_A = 30 eq_2_A(x1,x2) = max{34, x1 - 74, x2 - 35} base order 2: precedence: lt_2# = lt_2 > s_1 > app > eq_0 = eq_2 > eq_1 = lt_1 = |0|_0 > if_3 = lt_0 = member_1 = false_0 > if_2 = member_0 > fork_2 = if_1 = true_0 > fork_1 = if_0 > fork_0 partial status: pi(lt_2#) = [2] pi(s_1) = [1] pi(app) = [] pi(eq_0) = [] pi(eq_1) = [] pi(fork_0) = [] pi(fork_1) = [] pi(fork_2) = [] pi(if_0) = [] pi(if_1) = [] pi(if_2) = [] pi(if_3) = [] pi(lt_0) = [] pi(lt_1) = [] pi(member_0) = [] pi(member_1) = [] pi(lt_2) = [] pi(|0|_0) = [] pi(true_0) = [] pi(false_0) = [] pi(eq_2) = [] The following rules are removed: p1 Then no dependency pair remains.