YES We show the termination of the TRS R: active(incr(nil())) -> mark(nil()) active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) active(adx(nil())) -> mark(nil()) active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) active(nats()) -> mark(adx(zeros())) active(zeros()) -> mark(cons(|0|(),zeros())) active(head(cons(X,L))) -> mark(X) active(tail(cons(X,L))) -> mark(L) mark(incr(X)) -> active(incr(mark(X))) mark(nil()) -> active(nil()) mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) mark(s(X)) -> active(s(mark(X))) mark(adx(X)) -> active(adx(mark(X))) mark(nats()) -> active(nats()) mark(zeros()) -> active(zeros()) mark(|0|()) -> active(|0|()) mark(head(X)) -> active(head(mark(X))) mark(tail(X)) -> active(tail(mark(X))) incr(mark(X)) -> incr(X) incr(active(X)) -> incr(X) cons(mark(X1),X2) -> cons(X1,X2) cons(X1,mark(X2)) -> cons(X1,X2) cons(active(X1),X2) -> cons(X1,X2) cons(X1,active(X2)) -> cons(X1,X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) adx(mark(X)) -> adx(X) adx(active(X)) -> adx(X) head(mark(X)) -> head(X) head(active(X)) -> head(X) tail(mark(X)) -> tail(X) tail(active(X)) -> tail(X) -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: active#(incr(nil())) -> mark#(nil()) p2: active#(incr(cons(X,L))) -> mark#(cons(s(X),incr(L))) p3: active#(incr(cons(X,L))) -> cons#(s(X),incr(L)) p4: active#(incr(cons(X,L))) -> s#(X) p5: active#(incr(cons(X,L))) -> incr#(L) p6: active#(adx(nil())) -> mark#(nil()) p7: active#(adx(cons(X,L))) -> mark#(incr(cons(X,adx(L)))) p8: active#(adx(cons(X,L))) -> incr#(cons(X,adx(L))) p9: active#(adx(cons(X,L))) -> cons#(X,adx(L)) p10: active#(adx(cons(X,L))) -> adx#(L) p11: active#(nats()) -> mark#(adx(zeros())) p12: active#(nats()) -> adx#(zeros()) p13: active#(zeros()) -> mark#(cons(|0|(),zeros())) p14: active#(zeros()) -> cons#(|0|(),zeros()) p15: active#(head(cons(X,L))) -> mark#(X) p16: active#(tail(cons(X,L))) -> mark#(L) p17: mark#(incr(X)) -> active#(incr(mark(X))) p18: mark#(incr(X)) -> incr#(mark(X)) p19: mark#(incr(X)) -> mark#(X) p20: mark#(nil()) -> active#(nil()) p21: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p22: mark#(cons(X1,X2)) -> cons#(mark(X1),X2) p23: mark#(cons(X1,X2)) -> mark#(X1) p24: mark#(s(X)) -> active#(s(mark(X))) p25: mark#(s(X)) -> s#(mark(X)) p26: mark#(s(X)) -> mark#(X) p27: mark#(adx(X)) -> active#(adx(mark(X))) p28: mark#(adx(X)) -> adx#(mark(X)) p29: mark#(adx(X)) -> mark#(X) p30: mark#(nats()) -> active#(nats()) p31: mark#(zeros()) -> active#(zeros()) p32: mark#(|0|()) -> active#(|0|()) p33: mark#(head(X)) -> active#(head(mark(X))) p34: mark#(head(X)) -> head#(mark(X)) p35: mark#(head(X)) -> mark#(X) p36: mark#(tail(X)) -> active#(tail(mark(X))) p37: mark#(tail(X)) -> tail#(mark(X)) p38: mark#(tail(X)) -> mark#(X) p39: incr#(mark(X)) -> incr#(X) p40: incr#(active(X)) -> incr#(X) p41: cons#(mark(X1),X2) -> cons#(X1,X2) p42: cons#(X1,mark(X2)) -> cons#(X1,X2) p43: cons#(active(X1),X2) -> cons#(X1,X2) p44: cons#(X1,active(X2)) -> cons#(X1,X2) p45: s#(mark(X)) -> s#(X) p46: s#(active(X)) -> s#(X) p47: adx#(mark(X)) -> adx#(X) p48: adx#(active(X)) -> adx#(X) p49: head#(mark(X)) -> head#(X) p50: head#(active(X)) -> head#(X) p51: tail#(mark(X)) -> tail#(X) p52: tail#(active(X)) -> tail#(X) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The estimated dependency graph contains the following SCCs: {p2, p7, p11, p13, p15, p16, p17, p19, p21, p23, p24, p26, p27, p29, p30, p31, p33, p35, p36, p38} {p41, p42, p43, p44} {p45, p46} {p39, p40} {p47, p48} {p49, p50} {p51, p52} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(tail(X)) -> active#(tail(mark(X))) p2: active#(tail(cons(X,L))) -> mark#(L) p3: mark#(tail(X)) -> mark#(X) p4: mark#(head(X)) -> mark#(X) p5: mark#(head(X)) -> active#(head(mark(X))) p6: active#(head(cons(X,L))) -> mark#(X) p7: mark#(zeros()) -> active#(zeros()) p8: active#(zeros()) -> mark#(cons(|0|(),zeros())) p9: mark#(cons(X1,X2)) -> mark#(X1) p10: mark#(nats()) -> active#(nats()) p11: active#(nats()) -> mark#(adx(zeros())) p12: mark#(adx(X)) -> mark#(X) p13: mark#(adx(X)) -> active#(adx(mark(X))) p14: active#(adx(cons(X,L))) -> mark#(incr(cons(X,adx(L)))) p15: mark#(s(X)) -> mark#(X) p16: mark#(s(X)) -> active#(s(mark(X))) p17: active#(incr(cons(X,L))) -> mark#(cons(s(X),incr(L))) p18: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p19: mark#(incr(X)) -> mark#(X) p20: mark#(incr(X)) -> active#(incr(mark(X))) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = max{7, x1 + 5} tail_A(x1) = max{61, x1 + 37} active#_A(x1) = max{25, x1 + 5} mark_A(x1) = max{23, x1} cons_A(x1,x2) = max{30, x1 + 6, x2 - 13} head_A(x1) = max{23, x1} zeros_A = 35 |0|_A = 22 nats_A = 70 adx_A(x1) = max{70, x1 + 21} incr_A(x1) = max{23, x1} s_A(x1) = max{23, x1} active_A(x1) = max{23, x1} nil_A = 71 precedence: tail = mark = head = zeros = |0| = nats = adx = incr = s = active > mark# = active# > cons = nil partial status: pi(mark#) = [1] pi(tail) = [] pi(active#) = [1] pi(mark) = [] pi(cons) = [] pi(head) = [] pi(zeros) = [] pi(|0|) = [] pi(nats) = [] pi(adx) = [] pi(incr) = [] pi(s) = [] pi(active) = [] pi(nil) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = 265 tail_A(x1) = 278 active#_A(x1) = 265 mark_A(x1) = 266 cons_A(x1,x2) = 258 head_A(x1) = 278 zeros_A = 149 |0|_A = 278 nats_A = 0 adx_A(x1) = 235 incr_A(x1) = 265 s_A(x1) = 267 active_A(x1) = 266 nil_A = 307 precedence: nil > incr > mark# = tail = active# = mark = cons = head = zeros = |0| = nats = s = active > adx partial status: pi(mark#) = [] pi(tail) = [] pi(active#) = [] pi(mark) = [] pi(cons) = [] pi(head) = [] pi(zeros) = [] pi(|0|) = [] pi(nats) = [] pi(adx) = [] pi(incr) = [] pi(s) = [] pi(active) = [] pi(nil) = [] The next rules are strictly ordered: p2, p6 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(tail(X)) -> active#(tail(mark(X))) p2: mark#(tail(X)) -> mark#(X) p3: mark#(head(X)) -> mark#(X) p4: mark#(head(X)) -> active#(head(mark(X))) p5: mark#(zeros()) -> active#(zeros()) p6: active#(zeros()) -> mark#(cons(|0|(),zeros())) p7: mark#(cons(X1,X2)) -> mark#(X1) p8: mark#(nats()) -> active#(nats()) p9: active#(nats()) -> mark#(adx(zeros())) p10: mark#(adx(X)) -> mark#(X) p11: mark#(adx(X)) -> active#(adx(mark(X))) p12: active#(adx(cons(X,L))) -> mark#(incr(cons(X,adx(L)))) p13: mark#(s(X)) -> mark#(X) p14: mark#(s(X)) -> active#(s(mark(X))) p15: active#(incr(cons(X,L))) -> mark#(cons(s(X),incr(L))) p16: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p17: mark#(incr(X)) -> mark#(X) p18: mark#(incr(X)) -> active#(incr(mark(X))) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(tail(X)) -> active#(tail(mark(X))) p2: active#(incr(cons(X,L))) -> mark#(cons(s(X),incr(L))) p3: mark#(incr(X)) -> active#(incr(mark(X))) p4: active#(adx(cons(X,L))) -> mark#(incr(cons(X,adx(L)))) p5: mark#(incr(X)) -> mark#(X) p6: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p7: active#(nats()) -> mark#(adx(zeros())) p8: mark#(adx(X)) -> active#(adx(mark(X))) p9: active#(zeros()) -> mark#(cons(|0|(),zeros())) p10: mark#(cons(X1,X2)) -> mark#(X1) p11: mark#(s(X)) -> active#(s(mark(X))) p12: mark#(s(X)) -> mark#(X) p13: mark#(adx(X)) -> mark#(X) p14: mark#(nats()) -> active#(nats()) p15: mark#(zeros()) -> active#(zeros()) p16: mark#(head(X)) -> active#(head(mark(X))) p17: mark#(head(X)) -> mark#(X) p18: mark#(tail(X)) -> mark#(X) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 4 tail_A(x1) = x1 + 26 active#_A(x1) = x1 + 4 mark_A(x1) = x1 incr_A(x1) = max{49, x1} cons_A(x1,x2) = max{18, x1 + 6, x2 - 25} s_A(x1) = max{7, x1} adx_A(x1) = x1 + 48 nats_A = 76 zeros_A = 23 |0|_A = 2 head_A(x1) = max{31, x1 + 26} active_A(x1) = max{1, x1} nil_A = 2 precedence: incr = s = adx > zeros > cons > mark# = active# = nats > |0| > tail = mark = head = active = nil partial status: pi(mark#) = [1] pi(tail) = [] pi(active#) = [1] pi(mark) = [] pi(incr) = [] pi(cons) = [] pi(s) = [] pi(adx) = [] pi(nats) = [] pi(zeros) = [] pi(|0|) = [] pi(head) = [] pi(active) = [] pi(nil) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = 49 tail_A(x1) = 45 active#_A(x1) = max{49, x1 - 3} mark_A(x1) = 167 incr_A(x1) = 49 cons_A(x1,x2) = 43 s_A(x1) = 45 adx_A(x1) = 51 nats_A = 48 zeros_A = 52 |0|_A = 0 head_A(x1) = 45 active_A(x1) = 167 nil_A = 0 precedence: tail = mark = cons = s = nats = zeros = head = active = nil > mark# = active# = incr = |0| > adx partial status: pi(mark#) = [] pi(tail) = [] pi(active#) = [] pi(mark) = [] pi(incr) = [] pi(cons) = [] pi(s) = [] pi(adx) = [] pi(nats) = [] pi(zeros) = [] pi(|0|) = [] pi(head) = [] pi(active) = [] pi(nil) = [] The next rules are strictly ordered: p2, p7 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(tail(X)) -> active#(tail(mark(X))) p2: mark#(incr(X)) -> active#(incr(mark(X))) p3: active#(adx(cons(X,L))) -> mark#(incr(cons(X,adx(L)))) p4: mark#(incr(X)) -> mark#(X) p5: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p6: mark#(adx(X)) -> active#(adx(mark(X))) p7: active#(zeros()) -> mark#(cons(|0|(),zeros())) p8: mark#(cons(X1,X2)) -> mark#(X1) p9: mark#(s(X)) -> active#(s(mark(X))) p10: mark#(s(X)) -> mark#(X) p11: mark#(adx(X)) -> mark#(X) p12: mark#(nats()) -> active#(nats()) p13: mark#(zeros()) -> active#(zeros()) p14: mark#(head(X)) -> active#(head(mark(X))) p15: mark#(head(X)) -> mark#(X) p16: mark#(tail(X)) -> mark#(X) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p13, p14, p15, p16} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(tail(X)) -> active#(tail(mark(X))) p2: active#(zeros()) -> mark#(cons(|0|(),zeros())) p3: mark#(cons(X1,X2)) -> mark#(X1) p4: mark#(tail(X)) -> mark#(X) p5: mark#(head(X)) -> mark#(X) p6: mark#(head(X)) -> active#(head(mark(X))) p7: active#(adx(cons(X,L))) -> mark#(incr(cons(X,adx(L)))) p8: mark#(zeros()) -> active#(zeros()) p9: mark#(adx(X)) -> mark#(X) p10: mark#(s(X)) -> mark#(X) p11: mark#(s(X)) -> active#(s(mark(X))) p12: mark#(adx(X)) -> active#(adx(mark(X))) p13: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p14: mark#(incr(X)) -> mark#(X) p15: mark#(incr(X)) -> active#(incr(mark(X))) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = max{1, x1 - 2} tail_A(x1) = x1 + 14 active#_A(x1) = max{1, x1 - 2} mark_A(x1) = x1 zeros_A = 12 cons_A(x1,x2) = max{10, x1 + 4, x2 - 13} |0|_A = 6 head_A(x1) = x1 + 14 adx_A(x1) = x1 + 1 incr_A(x1) = max{1, x1} s_A(x1) = max{5, x1} active_A(x1) = x1 nil_A = 2 nats_A = 14 precedence: tail = head > s > zeros = |0| > mark# = active# = mark = cons = adx = incr = active = nil = nats partial status: pi(mark#) = [] pi(tail) = [] pi(active#) = [] pi(mark) = [] pi(zeros) = [] pi(cons) = [] pi(|0|) = [] pi(head) = [] pi(adx) = [] pi(incr) = [] pi(s) = [] pi(active) = [] pi(nil) = [] pi(nats) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = 75 tail_A(x1) = 130 active#_A(x1) = 75 mark_A(x1) = 127 zeros_A = 129 cons_A(x1,x2) = 129 |0|_A = 135 head_A(x1) = 133 adx_A(x1) = 127 incr_A(x1) = 74 s_A(x1) = 131 active_A(x1) = 127 nil_A = 138 nats_A = 116 precedence: s > |0| > mark = head = adx = active = nil = nats > mark# = active# = zeros > cons > tail = incr partial status: pi(mark#) = [] pi(tail) = [] pi(active#) = [] pi(mark) = [] pi(zeros) = [] pi(cons) = [] pi(|0|) = [] pi(head) = [] pi(adx) = [] pi(incr) = [] pi(s) = [] pi(active) = [] pi(nil) = [] pi(nats) = [] 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: mark#(tail(X)) -> active#(tail(mark(X))) p2: mark#(cons(X1,X2)) -> mark#(X1) p3: mark#(tail(X)) -> mark#(X) p4: mark#(head(X)) -> mark#(X) p5: mark#(head(X)) -> active#(head(mark(X))) p6: active#(adx(cons(X,L))) -> mark#(incr(cons(X,adx(L)))) p7: mark#(zeros()) -> active#(zeros()) p8: mark#(adx(X)) -> mark#(X) p9: mark#(s(X)) -> mark#(X) p10: mark#(s(X)) -> active#(s(mark(X))) p11: mark#(adx(X)) -> active#(adx(mark(X))) p12: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p13: mark#(incr(X)) -> mark#(X) p14: mark#(incr(X)) -> active#(incr(mark(X))) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p8, p9, p10, p11, p12, p13, p14} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(tail(X)) -> active#(tail(mark(X))) p2: active#(adx(cons(X,L))) -> mark#(incr(cons(X,adx(L)))) p3: mark#(incr(X)) -> active#(incr(mark(X))) p4: mark#(incr(X)) -> mark#(X) p5: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p6: mark#(adx(X)) -> active#(adx(mark(X))) p7: mark#(s(X)) -> active#(s(mark(X))) p8: mark#(s(X)) -> mark#(X) p9: mark#(adx(X)) -> mark#(X) p10: mark#(head(X)) -> active#(head(mark(X))) p11: mark#(head(X)) -> mark#(X) p12: mark#(tail(X)) -> mark#(X) p13: mark#(cons(X1,X2)) -> mark#(X1) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 43 tail_A(x1) = max{51, x1 + 45} active#_A(x1) = max{44, x1 + 43} mark_A(x1) = max{3, x1} adx_A(x1) = max{132, x1 + 85} cons_A(x1,x2) = max{16, x1 + 8, x2 - 12} incr_A(x1) = max{29, x1} s_A(x1) = max{7, x1} head_A(x1) = max{6, x1 + 2} active_A(x1) = max{6, x1} nil_A = 7 nats_A = 133 zeros_A = 17 |0|_A = 9 precedence: mark# = active# = |0| > adx > incr > zeros > cons > tail = mark > active > head = nil = nats > s partial status: pi(mark#) = [] pi(tail) = [1] pi(active#) = [] pi(mark) = [1] pi(adx) = [] pi(cons) = [] pi(incr) = [] pi(s) = [] pi(head) = [1] pi(active) = [1] pi(nil) = [] pi(nats) = [] pi(zeros) = [] pi(|0|) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = 82 tail_A(x1) = 102 active#_A(x1) = 82 mark_A(x1) = 101 adx_A(x1) = 82 cons_A(x1,x2) = 125 incr_A(x1) = 101 s_A(x1) = 101 head_A(x1) = 102 active_A(x1) = 101 nil_A = 100 nats_A = 85 zeros_A = 103 |0|_A = 102 precedence: incr = head > mark# = tail = active# = mark = adx = cons = s = active = nil = nats = zeros = |0| partial status: pi(mark#) = [] pi(tail) = [] pi(active#) = [] pi(mark) = [] pi(adx) = [] pi(cons) = [] pi(incr) = [] pi(s) = [] pi(head) = [] pi(active) = [] pi(nil) = [] pi(nats) = [] pi(zeros) = [] pi(|0|) = [] The next rules are strictly ordered: p9, p13 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(tail(X)) -> active#(tail(mark(X))) p2: active#(adx(cons(X,L))) -> mark#(incr(cons(X,adx(L)))) p3: mark#(incr(X)) -> active#(incr(mark(X))) p4: mark#(incr(X)) -> mark#(X) p5: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p6: mark#(adx(X)) -> active#(adx(mark(X))) p7: mark#(s(X)) -> active#(s(mark(X))) p8: mark#(s(X)) -> mark#(X) p9: mark#(head(X)) -> active#(head(mark(X))) p10: mark#(head(X)) -> mark#(X) p11: mark#(tail(X)) -> mark#(X) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(tail(X)) -> active#(tail(mark(X))) p2: active#(adx(cons(X,L))) -> mark#(incr(cons(X,adx(L)))) p3: mark#(tail(X)) -> mark#(X) p4: mark#(head(X)) -> mark#(X) p5: mark#(head(X)) -> active#(head(mark(X))) p6: mark#(s(X)) -> mark#(X) p7: mark#(s(X)) -> active#(s(mark(X))) p8: mark#(adx(X)) -> active#(adx(mark(X))) p9: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p10: mark#(incr(X)) -> mark#(X) p11: mark#(incr(X)) -> active#(incr(mark(X))) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = max{12, x1 + 6} tail_A(x1) = max{2, x1 + 1} active#_A(x1) = x1 + 6 mark_A(x1) = x1 adx_A(x1) = x1 + 21 cons_A(x1,x2) = max{13, x1 + 5, x2} incr_A(x1) = max{4, x1} head_A(x1) = x1 + 8 s_A(x1) = max{5, x1} active_A(x1) = max{2, x1} nil_A = 3 nats_A = 35 zeros_A = 13 |0|_A = 8 precedence: mark = incr = head = active = nats = zeros > mark# = tail = active# = s > adx = nil > cons = |0| partial status: pi(mark#) = [] pi(tail) = [] pi(active#) = [] pi(mark) = [] pi(adx) = [1] pi(cons) = [] pi(incr) = [] pi(head) = [] pi(s) = [] pi(active) = [] pi(nil) = [] pi(nats) = [] pi(zeros) = [] pi(|0|) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = 88 tail_A(x1) = 52 active#_A(x1) = 88 mark_A(x1) = 43 adx_A(x1) = 56 cons_A(x1,x2) = 32 incr_A(x1) = 54 head_A(x1) = 89 s_A(x1) = 88 active_A(x1) = 43 nil_A = 80 nats_A = 0 zeros_A = 2 |0|_A = 52 precedence: nil = nats = |0| > mark# = tail = active# = mark = adx = cons = incr = head = active = zeros > s partial status: pi(mark#) = [] pi(tail) = [] pi(active#) = [] pi(mark) = [] pi(adx) = [] pi(cons) = [] pi(incr) = [] pi(head) = [] pi(s) = [] pi(active) = [] pi(nil) = [] pi(nats) = [] pi(zeros) = [] pi(|0|) = [] The next rules are strictly ordered: p4 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(tail(X)) -> active#(tail(mark(X))) p2: active#(adx(cons(X,L))) -> mark#(incr(cons(X,adx(L)))) p3: mark#(tail(X)) -> mark#(X) p4: mark#(head(X)) -> active#(head(mark(X))) p5: mark#(s(X)) -> mark#(X) p6: mark#(s(X)) -> active#(s(mark(X))) p7: mark#(adx(X)) -> active#(adx(mark(X))) p8: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p9: mark#(incr(X)) -> mark#(X) p10: mark#(incr(X)) -> active#(incr(mark(X))) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(tail(X)) -> active#(tail(mark(X))) p2: active#(adx(cons(X,L))) -> mark#(incr(cons(X,adx(L)))) p3: mark#(incr(X)) -> active#(incr(mark(X))) p4: mark#(incr(X)) -> mark#(X) p5: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p6: mark#(adx(X)) -> active#(adx(mark(X))) p7: mark#(s(X)) -> active#(s(mark(X))) p8: mark#(s(X)) -> mark#(X) p9: mark#(head(X)) -> active#(head(mark(X))) p10: mark#(tail(X)) -> mark#(X) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = max{9, x1 - 9} tail_A(x1) = max{21, x1 + 19} active#_A(x1) = max{1, x1 - 9} mark_A(x1) = max{2, x1} adx_A(x1) = max{24, x1} cons_A(x1,x2) = max{18, x1 + 6, x2} incr_A(x1) = max{24, x1} s_A(x1) = max{18, x1} head_A(x1) = max{0, x1 - 3} active_A(x1) = x1 nil_A = 1 nats_A = 25 zeros_A = 19 |0|_A = 1 precedence: zeros > mark# = tail = active# > mark = adx = cons = incr = active = nil > s = head = nats = |0| partial status: pi(mark#) = [] pi(tail) = [] pi(active#) = [] pi(mark) = [1] pi(adx) = [] pi(cons) = [] pi(incr) = [] pi(s) = [] pi(head) = [] pi(active) = [1] pi(nil) = [] pi(nats) = [] pi(zeros) = [] pi(|0|) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = 195 tail_A(x1) = 88 active#_A(x1) = 195 mark_A(x1) = max{2, x1 - 22} adx_A(x1) = 101 cons_A(x1,x2) = 93 incr_A(x1) = 97 s_A(x1) = 87 head_A(x1) = 87 active_A(x1) = max{65, x1 - 25} nil_A = 28 nats_A = 105 zeros_A = 106 |0|_A = 86 precedence: adx = nats = |0| > nil > mark# = active# = mark = cons = incr = s = zeros > tail = head = active partial status: pi(mark#) = [] pi(tail) = [] pi(active#) = [] pi(mark) = [] pi(adx) = [] pi(cons) = [] pi(incr) = [] pi(s) = [] pi(head) = [] pi(active) = [] pi(nil) = [] pi(nats) = [] pi(zeros) = [] pi(|0|) = [] The next rules are strictly ordered: p10 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(tail(X)) -> active#(tail(mark(X))) p2: active#(adx(cons(X,L))) -> mark#(incr(cons(X,adx(L)))) p3: mark#(incr(X)) -> active#(incr(mark(X))) p4: mark#(incr(X)) -> mark#(X) p5: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p6: mark#(adx(X)) -> active#(adx(mark(X))) p7: mark#(s(X)) -> active#(s(mark(X))) p8: mark#(s(X)) -> mark#(X) p9: mark#(head(X)) -> active#(head(mark(X))) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The estimated dependency graph contains the following SCCs: {p1, p2, p3, p4, p5, p6, p7, p8, p9} -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: mark#(tail(X)) -> active#(tail(mark(X))) p2: active#(adx(cons(X,L))) -> mark#(incr(cons(X,adx(L)))) p3: mark#(head(X)) -> active#(head(mark(X))) p4: mark#(s(X)) -> mark#(X) p5: mark#(s(X)) -> active#(s(mark(X))) p6: mark#(adx(X)) -> active#(adx(mark(X))) p7: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p8: mark#(incr(X)) -> mark#(X) p9: mark#(incr(X)) -> active#(incr(mark(X))) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The set of usable rules consists of r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32 Take the reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 1 tail_A(x1) = x1 + 4 active#_A(x1) = x1 + 1 mark_A(x1) = x1 adx_A(x1) = x1 + 5 cons_A(x1,x2) = max{x1, x2 - 3} incr_A(x1) = x1 head_A(x1) = x1 + 4 s_A(x1) = x1 active_A(x1) = x1 nil_A = 1 nats_A = 8 zeros_A = 2 |0|_A = 1 precedence: mark# = tail = active# = mark = adx = cons = incr = head = s = active = nil = nats = zeros = |0| partial status: pi(mark#) = [] pi(tail) = [] pi(active#) = [] pi(mark) = [] pi(adx) = [] pi(cons) = [] pi(incr) = [] pi(head) = [] pi(s) = [] pi(active) = [] pi(nil) = [] pi(nats) = [] pi(zeros) = [] pi(|0|) = [] 2. weighted path order base order: max/plus interpretations on natural numbers: mark#_A(x1) = x1 + 12 tail_A(x1) = x1 + 12 active#_A(x1) = max{1, x1} mark_A(x1) = x1 + 9 adx_A(x1) = x1 + 21 cons_A(x1,x2) = 16 incr_A(x1) = max{15, x1 + 9} head_A(x1) = max{0, x1 - 10} s_A(x1) = max{14, x1 + 13} active_A(x1) = x1 nil_A = 16 nats_A = 27 zeros_A = 26 |0|_A = 27 precedence: cons > |0| > nil > adx > tail = mark = active > mark# = active# = incr = head = s = nats = zeros partial status: pi(mark#) = [1] pi(tail) = [] pi(active#) = [1] pi(mark) = [] pi(adx) = [] pi(cons) = [] pi(incr) = [] pi(head) = [] pi(s) = [] pi(active) = [] pi(nil) = [] pi(nats) = [] pi(zeros) = [] pi(|0|) = [] The next rules are strictly ordered: p2, p4, p8 We remove them from the problem. -- SCC decomposition. Consider the dependency pair problem (P, R), where P consists of p1: mark#(tail(X)) -> active#(tail(mark(X))) p2: mark#(head(X)) -> active#(head(mark(X))) p3: mark#(s(X)) -> active#(s(mark(X))) p4: mark#(adx(X)) -> active#(adx(mark(X))) p5: mark#(cons(X1,X2)) -> active#(cons(mark(X1),X2)) p6: mark#(incr(X)) -> active#(incr(mark(X))) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The estimated dependency graph contains the following SCCs: (no SCCs) -- Reduction pair. Consider the dependency pair problem (P, R), where P consists of p1: cons#(mark(X1),X2) -> cons#(X1,X2) p2: cons#(X1,active(X2)) -> cons#(X1,X2) p3: cons#(active(X1),X2) -> cons#(X1,X2) p4: cons#(X1,mark(X2)) -> cons#(X1,X2) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(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: cons#_A(x1,x2) = max{2, x1 + 1, x2 + 1} mark_A(x1) = max{1, x1} active_A(x1) = max{1, x1} precedence: cons# = mark = active partial status: pi(cons#) = [1, 2] pi(mark) = [1] pi(active) = [1] 2. weighted path order base order: max/plus interpretations on natural numbers: cons#_A(x1,x2) = max{x1 + 1, x2 - 1} mark_A(x1) = x1 active_A(x1) = x1 precedence: cons# = mark = active partial status: pi(cons#) = [1] pi(mark) = [1] pi(active) = [1] The next rules are strictly ordered: p1, p2, p3, p4 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: s#(mark(X)) -> s#(X) p2: s#(active(X)) -> s#(X) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The set of usable rules consists of (no rules) Take the monotone reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: s#_A(x1) = max{6, x1 + 4} mark_A(x1) = max{4, x1 + 3} active_A(x1) = max{2, x1 + 1} precedence: s# = mark = active partial status: pi(s#) = [1] pi(mark) = [1] pi(active) = [1] 2. weighted path order base order: max/plus interpretations on natural numbers: s#_A(x1) = x1 + 1 mark_A(x1) = x1 active_A(x1) = x1 precedence: s# = mark = active partial status: pi(s#) = [1] pi(mark) = [1] pi(active) = [1] The next rules are strictly ordered: p1, p2 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: incr#(mark(X)) -> incr#(X) p2: incr#(active(X)) -> incr#(X) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The set of usable rules consists of (no rules) Take the monotone reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: incr#_A(x1) = x1 + 2 mark_A(x1) = x1 active_A(x1) = x1 + 2 precedence: mark > active > incr# partial status: pi(incr#) = [1] pi(mark) = [1] pi(active) = [1] 2. weighted path order base order: max/plus interpretations on natural numbers: incr#_A(x1) = x1 + 1 mark_A(x1) = x1 active_A(x1) = x1 precedence: incr# = mark = active partial status: pi(incr#) = [1] pi(mark) = [1] pi(active) = [1] The next rules are strictly ordered: p1, p2 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: adx#(mark(X)) -> adx#(X) p2: adx#(active(X)) -> adx#(X) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The set of usable rules consists of (no rules) Take the monotone reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: adx#_A(x1) = x1 + 2 mark_A(x1) = x1 active_A(x1) = x1 + 2 precedence: mark > active > adx# partial status: pi(adx#) = [1] pi(mark) = [1] pi(active) = [1] 2. weighted path order base order: max/plus interpretations on natural numbers: adx#_A(x1) = x1 + 1 mark_A(x1) = x1 active_A(x1) = x1 precedence: adx# = mark = active partial status: pi(adx#) = [1] pi(mark) = [1] pi(active) = [1] The next rules are strictly ordered: p1, p2 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: head#(mark(X)) -> head#(X) p2: head#(active(X)) -> head#(X) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The set of usable rules consists of (no rules) Take the monotone reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: head#_A(x1) = x1 + 2 mark_A(x1) = x1 active_A(x1) = x1 + 2 precedence: mark > active > head# partial status: pi(head#) = [1] pi(mark) = [1] pi(active) = [1] 2. weighted path order base order: max/plus interpretations on natural numbers: head#_A(x1) = x1 + 1 mark_A(x1) = x1 active_A(x1) = x1 precedence: head# = mark = active partial status: pi(head#) = [1] pi(mark) = [1] pi(active) = [1] The next rules are strictly ordered: p1, p2 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: tail#(mark(X)) -> tail#(X) p2: tail#(active(X)) -> tail#(X) and R consists of: r1: active(incr(nil())) -> mark(nil()) r2: active(incr(cons(X,L))) -> mark(cons(s(X),incr(L))) r3: active(adx(nil())) -> mark(nil()) r4: active(adx(cons(X,L))) -> mark(incr(cons(X,adx(L)))) r5: active(nats()) -> mark(adx(zeros())) r6: active(zeros()) -> mark(cons(|0|(),zeros())) r7: active(head(cons(X,L))) -> mark(X) r8: active(tail(cons(X,L))) -> mark(L) r9: mark(incr(X)) -> active(incr(mark(X))) r10: mark(nil()) -> active(nil()) r11: mark(cons(X1,X2)) -> active(cons(mark(X1),X2)) r12: mark(s(X)) -> active(s(mark(X))) r13: mark(adx(X)) -> active(adx(mark(X))) r14: mark(nats()) -> active(nats()) r15: mark(zeros()) -> active(zeros()) r16: mark(|0|()) -> active(|0|()) r17: mark(head(X)) -> active(head(mark(X))) r18: mark(tail(X)) -> active(tail(mark(X))) r19: incr(mark(X)) -> incr(X) r20: incr(active(X)) -> incr(X) r21: cons(mark(X1),X2) -> cons(X1,X2) r22: cons(X1,mark(X2)) -> cons(X1,X2) r23: cons(active(X1),X2) -> cons(X1,X2) r24: cons(X1,active(X2)) -> cons(X1,X2) r25: s(mark(X)) -> s(X) r26: s(active(X)) -> s(X) r27: adx(mark(X)) -> adx(X) r28: adx(active(X)) -> adx(X) r29: head(mark(X)) -> head(X) r30: head(active(X)) -> head(X) r31: tail(mark(X)) -> tail(X) r32: tail(active(X)) -> tail(X) The set of usable rules consists of (no rules) Take the monotone reduction pair: lexicographic combination of reduction pairs: 1. weighted path order base order: max/plus interpretations on natural numbers: tail#_A(x1) = max{6, x1 + 4} mark_A(x1) = max{4, x1 + 3} active_A(x1) = max{2, x1 + 1} precedence: tail# = mark = active partial status: pi(tail#) = [1] pi(mark) = [1] pi(active) = [1] 2. weighted path order base order: max/plus interpretations on natural numbers: tail#_A(x1) = x1 + 1 mark_A(x1) = x1 active_A(x1) = x1 precedence: tail# = mark = active partial status: pi(tail#) = [1] pi(mark) = [1] pi(active) = [1] The next rules are strictly ordered: p1, p2 We remove them from the problem. Then no dependency pair remains.