YES We show the termination of the TRS R: dbl(|0|()) -> |0|() dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) dbls(nil()) -> nil() dbls(cons(X,Y)) -> cons(n__dbl(activate(X)),n__dbls(activate(Y))) sel(|0|(),cons(X,Y)) -> activate(X) sel(s(X),cons(Y,Z)) -> sel(activate(X),activate(Z)) indx(nil(),X) -> nil() indx(cons(X,Y),Z) -> cons(n__sel(activate(X),activate(Z)),n__indx(activate(Y),activate(Z))) from(X) -> cons(activate(X),n__from(n__s(activate(X)))) dbl1(|0|()) -> |01|() dbl1(s(X)) -> s1(s1(dbl1(activate(X)))) sel1(|0|(),cons(X,Y)) -> activate(X) sel1(s(X),cons(Y,Z)) -> sel1(activate(X),activate(Z)) quote(|0|()) -> |01|() quote(s(X)) -> s1(quote(activate(X))) quote(dbl(X)) -> dbl1(X) quote(sel(X,Y)) -> sel1(X,Y) s(X) -> n__s(X) dbl(X) -> n__dbl(X) dbls(X) -> n__dbls(X) sel(X1,X2) -> n__sel(X1,X2) indx(X1,X2) -> n__indx(X1,X2) from(X) -> n__from(X) activate(n__s(X)) -> s(X) activate(n__dbl(X)) -> dbl(X) activate(n__dbls(X)) -> dbls(X) activate(n__sel(X1,X2)) -> sel(X1,X2) activate(n__indx(X1,X2)) -> indx(X1,X2) activate(n__from(X)) -> from(X) activate(X) -> X -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: dbl#(s(X)) -> s#(n__s(n__dbl(activate(X)))) p2: dbl#(s(X)) -> activate#(X) p3: dbls#(cons(X,Y)) -> activate#(X) p4: dbls#(cons(X,Y)) -> activate#(Y) p5: sel#(|0|(),cons(X,Y)) -> activate#(X) p6: sel#(s(X),cons(Y,Z)) -> sel#(activate(X),activate(Z)) p7: sel#(s(X),cons(Y,Z)) -> activate#(X) p8: sel#(s(X),cons(Y,Z)) -> activate#(Z) p9: indx#(cons(X,Y),Z) -> activate#(X) p10: indx#(cons(X,Y),Z) -> activate#(Z) p11: indx#(cons(X,Y),Z) -> activate#(Y) p12: from#(X) -> activate#(X) p13: dbl1#(s(X)) -> dbl1#(activate(X)) p14: dbl1#(s(X)) -> activate#(X) p15: sel1#(|0|(),cons(X,Y)) -> activate#(X) p16: sel1#(s(X),cons(Y,Z)) -> sel1#(activate(X),activate(Z)) p17: sel1#(s(X),cons(Y,Z)) -> activate#(X) p18: sel1#(s(X),cons(Y,Z)) -> activate#(Z) p19: quote#(s(X)) -> quote#(activate(X)) p20: quote#(s(X)) -> activate#(X) p21: quote#(dbl(X)) -> dbl1#(X) p22: quote#(sel(X,Y)) -> sel1#(X,Y) p23: activate#(n__s(X)) -> s#(X) p24: activate#(n__dbl(X)) -> dbl#(X) p25: activate#(n__dbls(X)) -> dbls#(X) p26: activate#(n__sel(X1,X2)) -> sel#(X1,X2) p27: activate#(n__indx(X1,X2)) -> indx#(X1,X2) p28: activate#(n__from(X)) -> from#(X) and R consists of: r1: dbl(|0|()) -> |0|() r2: dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) r3: dbls(nil()) -> nil() r4: dbls(cons(X,Y)) -> cons(n__dbl(activate(X)),n__dbls(activate(Y))) r5: sel(|0|(),cons(X,Y)) -> activate(X) r6: sel(s(X),cons(Y,Z)) -> sel(activate(X),activate(Z)) r7: indx(nil(),X) -> nil() r8: indx(cons(X,Y),Z) -> cons(n__sel(activate(X),activate(Z)),n__indx(activate(Y),activate(Z))) r9: from(X) -> cons(activate(X),n__from(n__s(activate(X)))) r10: dbl1(|0|()) -> |01|() r11: dbl1(s(X)) -> s1(s1(dbl1(activate(X)))) r12: sel1(|0|(),cons(X,Y)) -> activate(X) r13: sel1(s(X),cons(Y,Z)) -> sel1(activate(X),activate(Z)) r14: quote(|0|()) -> |01|() r15: quote(s(X)) -> s1(quote(activate(X))) r16: quote(dbl(X)) -> dbl1(X) r17: quote(sel(X,Y)) -> sel1(X,Y) r18: s(X) -> n__s(X) r19: dbl(X) -> n__dbl(X) r20: dbls(X) -> n__dbls(X) r21: sel(X1,X2) -> n__sel(X1,X2) r22: indx(X1,X2) -> n__indx(X1,X2) r23: from(X) -> n__from(X) r24: activate(n__s(X)) -> s(X) r25: activate(n__dbl(X)) -> dbl(X) r26: activate(n__dbls(X)) -> dbls(X) r27: activate(n__sel(X1,X2)) -> sel(X1,X2) r28: activate(n__indx(X1,X2)) -> indx(X1,X2) r29: activate(n__from(X)) -> from(X) r30: activate(X) -> X The estimated dependency graph contains the following SCCs: {p19} {p16} {p13} {p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p24, p25, p26, p27, p28} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: quote#(s(X)) -> quote#(activate(X)) and R consists of: r1: dbl(|0|()) -> |0|() r2: dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) r3: dbls(nil()) -> nil() r4: dbls(cons(X,Y)) -> cons(n__dbl(activate(X)),n__dbls(activate(Y))) r5: sel(|0|(),cons(X,Y)) -> activate(X) r6: sel(s(X),cons(Y,Z)) -> sel(activate(X),activate(Z)) r7: indx(nil(),X) -> nil() r8: indx(cons(X,Y),Z) -> cons(n__sel(activate(X),activate(Z)),n__indx(activate(Y),activate(Z))) r9: from(X) -> cons(activate(X),n__from(n__s(activate(X)))) r10: dbl1(|0|()) -> |01|() r11: dbl1(s(X)) -> s1(s1(dbl1(activate(X)))) r12: sel1(|0|(),cons(X,Y)) -> activate(X) r13: sel1(s(X),cons(Y,Z)) -> sel1(activate(X),activate(Z)) r14: quote(|0|()) -> |01|() r15: quote(s(X)) -> s1(quote(activate(X))) r16: quote(dbl(X)) -> dbl1(X) r17: quote(sel(X,Y)) -> sel1(X,Y) r18: s(X) -> n__s(X) r19: dbl(X) -> n__dbl(X) r20: dbls(X) -> n__dbls(X) r21: sel(X1,X2) -> n__sel(X1,X2) r22: indx(X1,X2) -> n__indx(X1,X2) r23: from(X) -> n__from(X) r24: activate(n__s(X)) -> s(X) r25: activate(n__dbl(X)) -> dbl(X) r26: activate(n__dbls(X)) -> dbls(X) r27: activate(n__sel(X1,X2)) -> sel(X1,X2) r28: activate(n__indx(X1,X2)) -> indx(X1,X2) r29: activate(n__from(X)) -> from(X) r30: activate(X) -> X The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30 Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: quote#_A(x1) = x1 s_A(x1) = max{3, x1} activate_A(x1) = max{2, x1} dbl_A(x1) = x1 + 5 |0|_A = 0 n__s_A(x1) = max{3, x1} n__dbl_A(x1) = x1 + 5 dbls_A(x1) = x1 + 11 nil_A = 2 cons_A(x1,x2) = max{x1 + 3, x2} n__dbls_A(x1) = x1 + 11 sel_A(x1,x2) = max{7, x1 + 6, x2 + 3} indx_A(x1,x2) = max{x1 + 8, x2 + 6} n__sel_A(x1,x2) = max{7, x1 + 6, x2 + 3} n__indx_A(x1,x2) = max{x1 + 8, x2 + 6} from_A(x1) = max{9, x1 + 6} n__from_A(x1) = max{9, x1 + 6} precedence: |0| > dbl = n__dbl > from = n__from > indx = n__indx > dbls = cons = n__dbls > s = n__s > activate = sel > n__sel > quote# > nil partial status: pi(quote#) = [1] pi(s) = [1] pi(activate) = [1] pi(dbl) = [1] pi(|0|) = [] pi(n__s) = [1] pi(n__dbl) = [1] pi(dbls) = [1] pi(nil) = [] pi(cons) = [] pi(n__dbls) = [1] pi(sel) = [1] pi(indx) = [1, 2] pi(n__sel) = [1] pi(n__indx) = [1, 2] pi(from) = [1] pi(n__from) = [1] 2. weighted path order base order: max/plus interpretations on natural numbers: quote#_A(x1) = x1 s_A(x1) = x1 activate_A(x1) = x1 dbl_A(x1) = x1 + 11 |0|_A = 10 n__s_A(x1) = x1 n__dbl_A(x1) = 10 dbls_A(x1) = x1 nil_A = 8 cons_A(x1,x2) = 6 n__dbls_A(x1) = x1 sel_A(x1,x2) = 10 indx_A(x1,x2) = max{7, x1 - 10, x2 - 4} n__sel_A(x1,x2) = 13 n__indx_A(x1,x2) = 5 from_A(x1) = x1 + 6 n__from_A(x1) = 3 precedence: indx = from > s = n__s > quote# > dbl > activate > n__dbl = cons > |0| = dbls = nil = n__dbls = sel = n__indx = n__from > n__sel partial status: pi(quote#) = [1] pi(s) = [1] pi(activate) = [1] pi(dbl) = [1] pi(|0|) = [] pi(n__s) = [1] pi(n__dbl) = [] pi(dbls) = [1] pi(nil) = [] pi(cons) = [] pi(n__dbls) = [1] pi(sel) = [] pi(indx) = [] pi(n__sel) = [] pi(n__indx) = [] pi(from) = [] pi(n__from) = [] The next rules are strictly ordered: p1 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: sel1#(s(X),cons(Y,Z)) -> sel1#(activate(X),activate(Z)) and R consists of: r1: dbl(|0|()) -> |0|() r2: dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) r3: dbls(nil()) -> nil() r4: dbls(cons(X,Y)) -> cons(n__dbl(activate(X)),n__dbls(activate(Y))) r5: sel(|0|(),cons(X,Y)) -> activate(X) r6: sel(s(X),cons(Y,Z)) -> sel(activate(X),activate(Z)) r7: indx(nil(),X) -> nil() r8: indx(cons(X,Y),Z) -> cons(n__sel(activate(X),activate(Z)),n__indx(activate(Y),activate(Z))) r9: from(X) -> cons(activate(X),n__from(n__s(activate(X)))) r10: dbl1(|0|()) -> |01|() r11: dbl1(s(X)) -> s1(s1(dbl1(activate(X)))) r12: sel1(|0|(),cons(X,Y)) -> activate(X) r13: sel1(s(X),cons(Y,Z)) -> sel1(activate(X),activate(Z)) r14: quote(|0|()) -> |01|() r15: quote(s(X)) -> s1(quote(activate(X))) r16: quote(dbl(X)) -> dbl1(X) r17: quote(sel(X,Y)) -> sel1(X,Y) r18: s(X) -> n__s(X) r19: dbl(X) -> n__dbl(X) r20: dbls(X) -> n__dbls(X) r21: sel(X1,X2) -> n__sel(X1,X2) r22: indx(X1,X2) -> n__indx(X1,X2) r23: from(X) -> n__from(X) r24: activate(n__s(X)) -> s(X) r25: activate(n__dbl(X)) -> dbl(X) r26: activate(n__dbls(X)) -> dbls(X) r27: activate(n__sel(X1,X2)) -> sel(X1,X2) r28: activate(n__indx(X1,X2)) -> indx(X1,X2) r29: activate(n__from(X)) -> from(X) r30: activate(X) -> X The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30 Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: sel1#_A(x1,x2) = max{x1 + 4, x2 + 7} s_A(x1) = max{6, x1} cons_A(x1,x2) = max{x1 + 2, x2} activate_A(x1) = max{2, x1} dbl_A(x1) = x1 + 9 |0|_A = 8 n__s_A(x1) = max{6, x1} n__dbl_A(x1) = x1 + 9 dbls_A(x1) = x1 + 13 nil_A = 1 n__dbls_A(x1) = x1 + 13 sel_A(x1,x2) = max{8, x1 + 3, x2 - 1} indx_A(x1,x2) = max{10, x1 + 6, x2 + 1} n__sel_A(x1,x2) = max{8, x1 + 3, x2 - 1} n__indx_A(x1,x2) = max{10, x1 + 6, x2 + 1} from_A(x1) = max{14, x1 + 7} n__from_A(x1) = max{14, x1 + 7} precedence: |0| = nil = from = n__from > dbl = n__dbl > s = n__s = indx = n__indx > sel1# = activate = sel > dbls > cons > n__dbls > n__sel partial status: pi(sel1#) = [1] pi(s) = [1] pi(cons) = [] pi(activate) = [1] pi(dbl) = [1] pi(|0|) = [] pi(n__s) = [1] pi(n__dbl) = [1] pi(dbls) = [1] pi(nil) = [] pi(n__dbls) = [1] pi(sel) = [] pi(indx) = [1] pi(n__sel) = [] pi(n__indx) = [1] pi(from) = [] pi(n__from) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: sel1#_A(x1,x2) = max{10, x1} s_A(x1) = max{52, x1 + 18} cons_A(x1,x2) = 36 activate_A(x1) = max{42, x1 + 18} dbl_A(x1) = 42 |0|_A = 43 n__s_A(x1) = max{52, x1 + 18} n__dbl_A(x1) = 16 dbls_A(x1) = 65 nil_A = 45 n__dbls_A(x1) = x1 + 66 sel_A(x1,x2) = 24 indx_A(x1,x2) = 44 n__sel_A(x1,x2) = 7 n__indx_A(x1,x2) = 25 from_A(x1) = 42 n__from_A(x1) = 18 precedence: n__dbls = sel = indx = n__sel > n__indx > s = n__s = nil > activate = dbl = |0| = from = n__from > n__dbl > sel1# = cons = dbls partial status: pi(sel1#) = [1] pi(s) = [1] pi(cons) = [] pi(activate) = [1] pi(dbl) = [] pi(|0|) = [] pi(n__s) = [1] pi(n__dbl) = [] pi(dbls) = [] pi(nil) = [] pi(n__dbls) = [1] pi(sel) = [] pi(indx) = [] pi(n__sel) = [] pi(n__indx) = [] pi(from) = [] pi(n__from) = [] The next rules are strictly ordered: p1 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: dbl1#(s(X)) -> dbl1#(activate(X)) and R consists of: r1: dbl(|0|()) -> |0|() r2: dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) r3: dbls(nil()) -> nil() r4: dbls(cons(X,Y)) -> cons(n__dbl(activate(X)),n__dbls(activate(Y))) r5: sel(|0|(),cons(X,Y)) -> activate(X) r6: sel(s(X),cons(Y,Z)) -> sel(activate(X),activate(Z)) r7: indx(nil(),X) -> nil() r8: indx(cons(X,Y),Z) -> cons(n__sel(activate(X),activate(Z)),n__indx(activate(Y),activate(Z))) r9: from(X) -> cons(activate(X),n__from(n__s(activate(X)))) r10: dbl1(|0|()) -> |01|() r11: dbl1(s(X)) -> s1(s1(dbl1(activate(X)))) r12: sel1(|0|(),cons(X,Y)) -> activate(X) r13: sel1(s(X),cons(Y,Z)) -> sel1(activate(X),activate(Z)) r14: quote(|0|()) -> |01|() r15: quote(s(X)) -> s1(quote(activate(X))) r16: quote(dbl(X)) -> dbl1(X) r17: quote(sel(X,Y)) -> sel1(X,Y) r18: s(X) -> n__s(X) r19: dbl(X) -> n__dbl(X) r20: dbls(X) -> n__dbls(X) r21: sel(X1,X2) -> n__sel(X1,X2) r22: indx(X1,X2) -> n__indx(X1,X2) r23: from(X) -> n__from(X) r24: activate(n__s(X)) -> s(X) r25: activate(n__dbl(X)) -> dbl(X) r26: activate(n__dbls(X)) -> dbls(X) r27: activate(n__sel(X1,X2)) -> sel(X1,X2) r28: activate(n__indx(X1,X2)) -> indx(X1,X2) r29: activate(n__from(X)) -> from(X) r30: activate(X) -> X The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30 Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: dbl1#_A(x1) = x1 s_A(x1) = x1 activate_A(x1) = x1 dbl_A(x1) = x1 + 2 |0|_A = 0 n__s_A(x1) = x1 n__dbl_A(x1) = x1 + 2 dbls_A(x1) = max{9, x1 + 6} nil_A = 10 cons_A(x1,x2) = max{x1 + 3, x2} n__dbls_A(x1) = max{9, x1 + 6} sel_A(x1,x2) = max{1, x2 - 1} indx_A(x1,x2) = max{12, x1 - 3, x2 + 11} n__sel_A(x1,x2) = max{1, x2 - 1} n__indx_A(x1,x2) = max{12, x1 - 3, x2 + 11} from_A(x1) = x1 + 3 n__from_A(x1) = x1 + 3 precedence: indx = n__indx > dbls = cons = n__dbls = from = n__from > sel = n__sel > dbl = n__dbl > s = n__s > dbl1# = activate = nil > |0| partial status: pi(dbl1#) = [1] pi(s) = [1] pi(activate) = [1] pi(dbl) = [1] pi(|0|) = [] pi(n__s) = [1] pi(n__dbl) = [1] pi(dbls) = [1] pi(nil) = [] pi(cons) = [] pi(n__dbls) = [1] pi(sel) = [] pi(indx) = [] pi(n__sel) = [] pi(n__indx) = [] pi(from) = [1] pi(n__from) = [1] 2. weighted path order base order: max/plus interpretations on natural numbers: dbl1#_A(x1) = max{144, x1 + 13} s_A(x1) = x1 + 143 activate_A(x1) = max{133, x1 + 76} dbl_A(x1) = 65 |0|_A = 278 n__s_A(x1) = x1 + 67 n__dbl_A(x1) = 64 dbls_A(x1) = 114 nil_A = 115 cons_A(x1,x2) = 110 n__dbls_A(x1) = 113 sel_A(x1,x2) = 133 indx_A(x1,x2) = 110 n__sel_A(x1,x2) = 56 n__indx_A(x1,x2) = 109 from_A(x1) = 110 n__from_A(x1) = 110 precedence: n__sel > dbl1# = s = activate = sel > from > indx > dbl > |0| = n__s = n__dbl = dbls = nil = cons = n__dbls = n__indx = n__from partial status: pi(dbl1#) = [] pi(s) = [] pi(activate) = [] pi(dbl) = [] pi(|0|) = [] pi(n__s) = [1] pi(n__dbl) = [] pi(dbls) = [] pi(nil) = [] pi(cons) = [] pi(n__dbls) = [] pi(sel) = [] pi(indx) = [] pi(n__sel) = [] pi(n__indx) = [] pi(from) = [] pi(n__from) = [] The next rules are strictly ordered: p1 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: dbl#(s(X)) -> activate#(X) p2: activate#(n__from(X)) -> from#(X) p3: from#(X) -> activate#(X) p4: activate#(n__indx(X1,X2)) -> indx#(X1,X2) p5: indx#(cons(X,Y),Z) -> activate#(Y) p6: activate#(n__sel(X1,X2)) -> sel#(X1,X2) p7: sel#(s(X),cons(Y,Z)) -> activate#(Z) p8: activate#(n__dbls(X)) -> dbls#(X) p9: dbls#(cons(X,Y)) -> activate#(Y) p10: activate#(n__dbl(X)) -> dbl#(X) p11: dbls#(cons(X,Y)) -> activate#(X) p12: sel#(s(X),cons(Y,Z)) -> activate#(X) p13: sel#(s(X),cons(Y,Z)) -> sel#(activate(X),activate(Z)) p14: sel#(|0|(),cons(X,Y)) -> activate#(X) p15: indx#(cons(X,Y),Z) -> activate#(Z) p16: indx#(cons(X,Y),Z) -> activate#(X) and R consists of: r1: dbl(|0|()) -> |0|() r2: dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) r3: dbls(nil()) -> nil() r4: dbls(cons(X,Y)) -> cons(n__dbl(activate(X)),n__dbls(activate(Y))) r5: sel(|0|(),cons(X,Y)) -> activate(X) r6: sel(s(X),cons(Y,Z)) -> sel(activate(X),activate(Z)) r7: indx(nil(),X) -> nil() r8: indx(cons(X,Y),Z) -> cons(n__sel(activate(X),activate(Z)),n__indx(activate(Y),activate(Z))) r9: from(X) -> cons(activate(X),n__from(n__s(activate(X)))) r10: dbl1(|0|()) -> |01|() r11: dbl1(s(X)) -> s1(s1(dbl1(activate(X)))) r12: sel1(|0|(),cons(X,Y)) -> activate(X) r13: sel1(s(X),cons(Y,Z)) -> sel1(activate(X),activate(Z)) r14: quote(|0|()) -> |01|() r15: quote(s(X)) -> s1(quote(activate(X))) r16: quote(dbl(X)) -> dbl1(X) r17: quote(sel(X,Y)) -> sel1(X,Y) r18: s(X) -> n__s(X) r19: dbl(X) -> n__dbl(X) r20: dbls(X) -> n__dbls(X) r21: sel(X1,X2) -> n__sel(X1,X2) r22: indx(X1,X2) -> n__indx(X1,X2) r23: from(X) -> n__from(X) r24: activate(n__s(X)) -> s(X) r25: activate(n__dbl(X)) -> dbl(X) r26: activate(n__dbls(X)) -> dbls(X) r27: activate(n__sel(X1,X2)) -> sel(X1,X2) r28: activate(n__indx(X1,X2)) -> indx(X1,X2) r29: activate(n__from(X)) -> from(X) r30: activate(X) -> X The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30 Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: dbl#_A(x1) = x1 + 16 s_A(x1) = max{17, x1} activate#_A(x1) = max{15, x1 + 11} n__from_A(x1) = max{36, x1 + 18} from#_A(x1) = max{15, x1 + 11} n__indx_A(x1,x2) = max{19, x1 + 17, x2 + 15} indx#_A(x1,x2) = max{15, x1 + 11, x2 + 11} cons_A(x1,x2) = max{3, x1, x2} n__sel_A(x1,x2) = max{x1 + 10, x2 + 5} sel#_A(x1,x2) = max{15, x1 + 11, x2 + 11} n__dbls_A(x1) = max{26, x1 + 22} dbls#_A(x1) = max{15, x1 + 11} n__dbl_A(x1) = x1 + 18 activate_A(x1) = max{3, x1} |0|_A = 5 dbl_A(x1) = x1 + 18 n__s_A(x1) = max{17, x1} dbls_A(x1) = max{26, x1 + 22} nil_A = 0 sel_A(x1,x2) = max{x1 + 10, x2 + 5} indx_A(x1,x2) = max{19, x1 + 17, x2 + 15} from_A(x1) = max{36, x1 + 18} precedence: nil > sel# = |0| > n__from = dbls# = from > activate# = from# = n__indx = indx# = indx > dbl# = s = n__dbl = dbl = n__s > n__dbls = dbls > cons > activate = sel > n__sel partial status: pi(dbl#) = [1] pi(s) = [] pi(activate#) = [] pi(n__from) = [] pi(from#) = [] pi(n__indx) = [1, 2] pi(indx#) = [2] pi(cons) = [] pi(n__sel) = [1, 2] pi(sel#) = [] pi(n__dbls) = [1] pi(dbls#) = [] pi(n__dbl) = [] pi(activate) = [1] pi(|0|) = [] pi(dbl) = [] pi(n__s) = [] pi(dbls) = [1] pi(nil) = [] pi(sel) = [] pi(indx) = [1, 2] pi(from) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: dbl#_A(x1) = max{5, x1 + 3} s_A(x1) = 17 activate#_A(x1) = 5 n__from_A(x1) = 7 from#_A(x1) = 5 n__indx_A(x1,x2) = max{x1 + 40, x2 + 22} indx#_A(x1,x2) = 5 cons_A(x1,x2) = 7 n__sel_A(x1,x2) = max{41, x1 + 4, x2 + 2} sel#_A(x1,x2) = 5 n__dbls_A(x1) = 6 dbls#_A(x1) = 5 n__dbl_A(x1) = 16 activate_A(x1) = max{17, x1} |0|_A = 18 dbl_A(x1) = 17 n__s_A(x1) = 8 dbls_A(x1) = 17 nil_A = 18 sel_A(x1,x2) = 18 indx_A(x1,x2) = max{x1 + 40, x2 + 22} from_A(x1) = 7 precedence: from# = n__s = from > n__indx = indx > cons > n__from = activate = |0| = dbl = dbls = nil = sel > s > sel# > dbl# = activate# = indx# = dbls# = n__dbl > n__sel = n__dbls partial status: pi(dbl#) = [1] pi(s) = [] pi(activate#) = [] pi(n__from) = [] pi(from#) = [] pi(n__indx) = [] pi(indx#) = [] pi(cons) = [] pi(n__sel) = [2] pi(sel#) = [] pi(n__dbls) = [] pi(dbls#) = [] pi(n__dbl) = [] pi(activate) = [1] pi(|0|) = [] pi(dbl) = [] pi(n__s) = [] pi(dbls) = [] pi(nil) = [] pi(sel) = [] pi(indx) = [] pi(from) = [] The next rules are strictly ordered: p2, p6, p10, p11 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: dbl#(s(X)) -> activate#(X) p2: from#(X) -> activate#(X) p3: activate#(n__indx(X1,X2)) -> indx#(X1,X2) p4: indx#(cons(X,Y),Z) -> activate#(Y) p5: sel#(s(X),cons(Y,Z)) -> activate#(Z) p6: activate#(n__dbls(X)) -> dbls#(X) p7: dbls#(cons(X,Y)) -> activate#(Y) p8: sel#(s(X),cons(Y,Z)) -> activate#(X) p9: sel#(s(X),cons(Y,Z)) -> sel#(activate(X),activate(Z)) p10: sel#(|0|(),cons(X,Y)) -> activate#(X) p11: indx#(cons(X,Y),Z) -> activate#(Z) p12: indx#(cons(X,Y),Z) -> activate#(X) and R consists of: r1: dbl(|0|()) -> |0|() r2: dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) r3: dbls(nil()) -> nil() r4: dbls(cons(X,Y)) -> cons(n__dbl(activate(X)),n__dbls(activate(Y))) r5: sel(|0|(),cons(X,Y)) -> activate(X) r6: sel(s(X),cons(Y,Z)) -> sel(activate(X),activate(Z)) r7: indx(nil(),X) -> nil() r8: indx(cons(X,Y),Z) -> cons(n__sel(activate(X),activate(Z)),n__indx(activate(Y),activate(Z))) r9: from(X) -> cons(activate(X),n__from(n__s(activate(X)))) r10: dbl1(|0|()) -> |01|() r11: dbl1(s(X)) -> s1(s1(dbl1(activate(X)))) r12: sel1(|0|(),cons(X,Y)) -> activate(X) r13: sel1(s(X),cons(Y,Z)) -> sel1(activate(X),activate(Z)) r14: quote(|0|()) -> |01|() r15: quote(s(X)) -> s1(quote(activate(X))) r16: quote(dbl(X)) -> dbl1(X) r17: quote(sel(X,Y)) -> sel1(X,Y) r18: s(X) -> n__s(X) r19: dbl(X) -> n__dbl(X) r20: dbls(X) -> n__dbls(X) r21: sel(X1,X2) -> n__sel(X1,X2) r22: indx(X1,X2) -> n__indx(X1,X2) r23: from(X) -> n__from(X) r24: activate(n__s(X)) -> s(X) r25: activate(n__dbl(X)) -> dbl(X) r26: activate(n__dbls(X)) -> dbls(X) r27: activate(n__sel(X1,X2)) -> sel(X1,X2) r28: activate(n__indx(X1,X2)) -> indx(X1,X2) r29: activate(n__from(X)) -> from(X) r30: activate(X) -> X The estimated dependency graph contains the following SCCs: {p9} {p3, p4, p6, p7, p11, p12} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: sel#(s(X),cons(Y,Z)) -> sel#(activate(X),activate(Z)) and R consists of: r1: dbl(|0|()) -> |0|() r2: dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) r3: dbls(nil()) -> nil() r4: dbls(cons(X,Y)) -> cons(n__dbl(activate(X)),n__dbls(activate(Y))) r5: sel(|0|(),cons(X,Y)) -> activate(X) r6: sel(s(X),cons(Y,Z)) -> sel(activate(X),activate(Z)) r7: indx(nil(),X) -> nil() r8: indx(cons(X,Y),Z) -> cons(n__sel(activate(X),activate(Z)),n__indx(activate(Y),activate(Z))) r9: from(X) -> cons(activate(X),n__from(n__s(activate(X)))) r10: dbl1(|0|()) -> |01|() r11: dbl1(s(X)) -> s1(s1(dbl1(activate(X)))) r12: sel1(|0|(),cons(X,Y)) -> activate(X) r13: sel1(s(X),cons(Y,Z)) -> sel1(activate(X),activate(Z)) r14: quote(|0|()) -> |01|() r15: quote(s(X)) -> s1(quote(activate(X))) r16: quote(dbl(X)) -> dbl1(X) r17: quote(sel(X,Y)) -> sel1(X,Y) r18: s(X) -> n__s(X) r19: dbl(X) -> n__dbl(X) r20: dbls(X) -> n__dbls(X) r21: sel(X1,X2) -> n__sel(X1,X2) r22: indx(X1,X2) -> n__indx(X1,X2) r23: from(X) -> n__from(X) r24: activate(n__s(X)) -> s(X) r25: activate(n__dbl(X)) -> dbl(X) r26: activate(n__dbls(X)) -> dbls(X) r27: activate(n__sel(X1,X2)) -> sel(X1,X2) r28: activate(n__indx(X1,X2)) -> indx(X1,X2) r29: activate(n__from(X)) -> from(X) r30: activate(X) -> X The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30 Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: sel#_A(x1,x2) = max{x1 + 8, x2 + 2} s_A(x1) = x1 cons_A(x1,x2) = max{x1 + 6, x2} activate_A(x1) = x1 dbl_A(x1) = x1 + 5 |0|_A = 5 n__s_A(x1) = x1 n__dbl_A(x1) = x1 + 5 dbls_A(x1) = max{12, x1 + 5} nil_A = 1 n__dbls_A(x1) = max{12, x1 + 5} sel_A(x1,x2) = max{x1, x2 + 2} indx_A(x1,x2) = max{10, x1 + 9, x2 + 8} n__sel_A(x1,x2) = max{x1, x2 + 2} n__indx_A(x1,x2) = max{10, x1 + 9, x2 + 8} from_A(x1) = x1 + 8 n__from_A(x1) = x1 + 8 precedence: dbl = n__dbl > indx = n__indx > dbls = nil = n__dbls > cons = from = n__from > s = n__s > sel# = activate = |0| = sel = n__sel partial status: pi(sel#) = [1] pi(s) = [1] pi(cons) = [] pi(activate) = [1] pi(dbl) = [1] pi(|0|) = [] pi(n__s) = [1] pi(n__dbl) = [1] pi(dbls) = [] pi(nil) = [] pi(n__dbls) = [] pi(sel) = [] pi(indx) = [1] pi(n__sel) = [] pi(n__indx) = [1] pi(from) = [1] pi(n__from) = [1] 2. weighted path order base order: max/plus interpretations on natural numbers: sel#_A(x1,x2) = x1 s_A(x1) = x1 + 34 cons_A(x1,x2) = 19 activate_A(x1) = 34 dbl_A(x1) = max{34, x1} |0|_A = 35 n__s_A(x1) = 0 n__dbl_A(x1) = 18 dbls_A(x1) = 24 nil_A = 25 n__dbls_A(x1) = 20 sel_A(x1,x2) = 34 indx_A(x1,x2) = 19 n__sel_A(x1,x2) = 17 n__indx_A(x1,x2) = 19 from_A(x1) = 5 n__from_A(x1) = 1 precedence: sel# = from > s = n__sel = n__from > activate = sel > indx > n__indx > dbl = |0| > dbls = nil = n__dbls > cons > n__dbl > n__s partial status: pi(sel#) = [1] pi(s) = [1] pi(cons) = [] pi(activate) = [] pi(dbl) = [1] pi(|0|) = [] pi(n__s) = [] pi(n__dbl) = [] pi(dbls) = [] pi(nil) = [] pi(n__dbls) = [] pi(sel) = [] pi(indx) = [] pi(n__sel) = [] pi(n__indx) = [] pi(from) = [] pi(n__from) = [] The next rules are strictly ordered: p1 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: activate#(n__indx(X1,X2)) -> indx#(X1,X2) p2: indx#(cons(X,Y),Z) -> activate#(X) p3: activate#(n__dbls(X)) -> dbls#(X) p4: dbls#(cons(X,Y)) -> activate#(Y) p5: indx#(cons(X,Y),Z) -> activate#(Z) p6: indx#(cons(X,Y),Z) -> activate#(Y) and R consists of: r1: dbl(|0|()) -> |0|() r2: dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) r3: dbls(nil()) -> nil() r4: dbls(cons(X,Y)) -> cons(n__dbl(activate(X)),n__dbls(activate(Y))) r5: sel(|0|(),cons(X,Y)) -> activate(X) r6: sel(s(X),cons(Y,Z)) -> sel(activate(X),activate(Z)) r7: indx(nil(),X) -> nil() r8: indx(cons(X,Y),Z) -> cons(n__sel(activate(X),activate(Z)),n__indx(activate(Y),activate(Z))) r9: from(X) -> cons(activate(X),n__from(n__s(activate(X)))) r10: dbl1(|0|()) -> |01|() r11: dbl1(s(X)) -> s1(s1(dbl1(activate(X)))) r12: sel1(|0|(),cons(X,Y)) -> activate(X) r13: sel1(s(X),cons(Y,Z)) -> sel1(activate(X),activate(Z)) r14: quote(|0|()) -> |01|() r15: quote(s(X)) -> s1(quote(activate(X))) r16: quote(dbl(X)) -> dbl1(X) r17: quote(sel(X,Y)) -> sel1(X,Y) r18: s(X) -> n__s(X) r19: dbl(X) -> n__dbl(X) r20: dbls(X) -> n__dbls(X) r21: sel(X1,X2) -> n__sel(X1,X2) r22: indx(X1,X2) -> n__indx(X1,X2) r23: from(X) -> n__from(X) r24: activate(n__s(X)) -> s(X) r25: activate(n__dbl(X)) -> dbl(X) r26: activate(n__dbls(X)) -> dbls(X) r27: activate(n__sel(X1,X2)) -> sel(X1,X2) r28: activate(n__indx(X1,X2)) -> indx(X1,X2) r29: activate(n__from(X)) -> from(X) r30: activate(X) -> X 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: activate#_A(x1) = max{4, x1} n__indx_A(x1,x2) = max{7, x1, x2 + 5} indx#_A(x1,x2) = max{6, x1, x2 + 5} cons_A(x1,x2) = max{x1 + 5, x2} n__dbls_A(x1) = max{3, x1 + 2} dbls#_A(x1) = max{4, x1 + 1} precedence: activate# = n__indx = indx# = cons = n__dbls > dbls# partial status: pi(activate#) = [1] pi(n__indx) = [1, 2] pi(indx#) = [1, 2] pi(cons) = [1, 2] pi(n__dbls) = [1] pi(dbls#) = [1] 2. weighted path order base order: max/plus interpretations on natural numbers: activate#_A(x1) = max{8, x1 - 3} n__indx_A(x1,x2) = max{x1 + 6, x2 + 12} indx#_A(x1,x2) = max{x1 - 8, x2 + 8} cons_A(x1,x2) = max{x1 + 5, x2 + 7} n__dbls_A(x1) = x1 + 6 dbls#_A(x1) = max{7, x1 + 2} precedence: activate# = n__indx = indx# = cons = n__dbls = dbls# partial status: pi(activate#) = [] pi(n__indx) = [2] pi(indx#) = [2] pi(cons) = [2] pi(n__dbls) = [1] pi(dbls#) = [1] The next rules are strictly ordered: p1, p2, p3, p4, p5, p6 We remove them from the problem. Then no dependency pair remains.