YES Problem: sum(cons(s(n),x),cons(m,y)) -> sum(cons(n,x),cons(s(m),y)) sum(cons(0(),x),y) -> sum(x,y) sum(nil(),y) -> y empty(nil()) -> true() empty(cons(n,x)) -> false() tail(nil()) -> nil() tail(cons(n,x)) -> x head(cons(n,x)) -> n weight(x) -> if(empty(x),empty(tail(x)),x) if(true(),b,x) -> weight_undefined_error() if(false(),b,x) -> if2(b,x) if2(true(),x) -> head(x) if2(false(),x) -> weight(sum(x,cons(0(),tail(tail(x))))) Proof: DP Processor: DPs: sum#(cons(s(n),x),cons(m,y)) -> sum#(cons(n,x),cons(s(m),y)) sum#(cons(0(),x),y) -> sum#(x,y) weight#(x) -> tail#(x) weight#(x) -> empty#(tail(x)) weight#(x) -> empty#(x) weight#(x) -> if#(empty(x),empty(tail(x)),x) if#(false(),b,x) -> if2#(b,x) if2#(true(),x) -> head#(x) if2#(false(),x) -> tail#(x) if2#(false(),x) -> tail#(tail(x)) if2#(false(),x) -> sum#(x,cons(0(),tail(tail(x)))) if2#(false(),x) -> weight#(sum(x,cons(0(),tail(tail(x))))) TRS: sum(cons(s(n),x),cons(m,y)) -> sum(cons(n,x),cons(s(m),y)) sum(cons(0(),x),y) -> sum(x,y) sum(nil(),y) -> y empty(nil()) -> true() empty(cons(n,x)) -> false() tail(nil()) -> nil() tail(cons(n,x)) -> x head(cons(n,x)) -> n weight(x) -> if(empty(x),empty(tail(x)),x) if(true(),b,x) -> weight_undefined_error() if(false(),b,x) -> if2(b,x) if2(true(),x) -> head(x) if2(false(),x) -> weight(sum(x,cons(0(),tail(tail(x))))) TDG Processor: DPs: sum#(cons(s(n),x),cons(m,y)) -> sum#(cons(n,x),cons(s(m),y)) sum#(cons(0(),x),y) -> sum#(x,y) weight#(x) -> tail#(x) weight#(x) -> empty#(tail(x)) weight#(x) -> empty#(x) weight#(x) -> if#(empty(x),empty(tail(x)),x) if#(false(),b,x) -> if2#(b,x) if2#(true(),x) -> head#(x) if2#(false(),x) -> tail#(x) if2#(false(),x) -> tail#(tail(x)) if2#(false(),x) -> sum#(x,cons(0(),tail(tail(x)))) if2#(false(),x) -> weight#(sum(x,cons(0(),tail(tail(x))))) TRS: sum(cons(s(n),x),cons(m,y)) -> sum(cons(n,x),cons(s(m),y)) sum(cons(0(),x),y) -> sum(x,y) sum(nil(),y) -> y empty(nil()) -> true() empty(cons(n,x)) -> false() tail(nil()) -> nil() tail(cons(n,x)) -> x head(cons(n,x)) -> n weight(x) -> if(empty(x),empty(tail(x)),x) if(true(),b,x) -> weight_undefined_error() if(false(),b,x) -> if2(b,x) if2(true(),x) -> head(x) if2(false(),x) -> weight(sum(x,cons(0(),tail(tail(x))))) graph: if2#(false(),x) -> weight#(sum(x,cons(0(),tail(tail(x))))) -> weight#(x) -> if#(empty(x),empty(tail(x)),x) if2#(false(),x) -> weight#(sum(x,cons(0(),tail(tail(x))))) -> weight#(x) -> empty#(x) if2#(false(),x) -> weight#(sum(x,cons(0(),tail(tail(x))))) -> weight#(x) -> empty#(tail(x)) if2#(false(),x) -> weight#(sum(x,cons(0(),tail(tail(x))))) -> weight#(x) -> tail#(x) if2#(false(),x) -> sum#(x,cons(0(),tail(tail(x)))) -> sum#(cons(0(),x),y) -> sum#(x,y) if2#(false(),x) -> sum#(x,cons(0(),tail(tail(x)))) -> sum#(cons(s(n),x),cons(m,y)) -> sum#(cons(n,x),cons(s(m),y)) if#(false(),b,x) -> if2#(b,x) -> if2#(false(),x) -> weight#(sum(x,cons(0(),tail(tail(x))))) if#(false(),b,x) -> if2#(b,x) -> if2#(false(),x) -> sum#(x,cons(0(),tail(tail(x)))) if#(false(),b,x) -> if2#(b,x) -> if2#(false(),x) -> tail#(tail(x)) if#(false(),b,x) -> if2#(b,x) -> if2#(false(),x) -> tail#(x) if#(false(),b,x) -> if2#(b,x) -> if2#(true(),x) -> head#(x) weight#(x) -> if#(empty(x),empty(tail(x)),x) -> if#(false(),b,x) -> if2#(b,x) sum#(cons(0(),x),y) -> sum#(x,y) -> sum#(cons(0(),x),y) -> sum#(x,y) sum#(cons(0(),x),y) -> sum#(x,y) -> sum#(cons(s(n),x),cons(m,y)) -> sum#(cons(n,x),cons(s(m),y)) sum#(cons(s(n),x),cons(m,y)) -> sum#(cons(n,x),cons(s(m),y)) -> sum#(cons(0(),x),y) -> sum#(x,y) sum#(cons(s(n),x),cons(m,y)) -> sum#(cons(n,x),cons(s(m),y)) -> sum#(cons(s(n),x),cons(m,y)) -> sum#(cons(n,x),cons(s(m),y)) SCC Processor: #sccs: 2 #rules: 5 #arcs: 16/144 DPs: if2#(false(),x) -> weight#(sum(x,cons(0(),tail(tail(x))))) weight#(x) -> if#(empty(x),empty(tail(x)),x) if#(false(),b,x) -> if2#(b,x) TRS: sum(cons(s(n),x),cons(m,y)) -> sum(cons(n,x),cons(s(m),y)) sum(cons(0(),x),y) -> sum(x,y) sum(nil(),y) -> y empty(nil()) -> true() empty(cons(n,x)) -> false() tail(nil()) -> nil() tail(cons(n,x)) -> x head(cons(n,x)) -> n weight(x) -> if(empty(x),empty(tail(x)),x) if(true(),b,x) -> weight_undefined_error() if(false(),b,x) -> if2(b,x) if2(true(),x) -> head(x) if2(false(),x) -> weight(sum(x,cons(0(),tail(tail(x))))) Usable Rule Processor: DPs: if2#(false(),x) -> weight#(sum(x,cons(0(),tail(tail(x))))) weight#(x) -> if#(empty(x),empty(tail(x)),x) if#(false(),b,x) -> if2#(b,x) TRS: tail(nil()) -> nil() tail(cons(n,x)) -> x sum(cons(s(n),x),cons(m,y)) -> sum(cons(n,x),cons(s(m),y)) sum(cons(0(),x),y) -> sum(x,y) sum(nil(),y) -> y empty(nil()) -> true() empty(cons(n,x)) -> false() Arctic Interpretation Processor: dimension: 1 usable rules: tail(nil()) -> nil() tail(cons(n,x)) -> x sum(cons(s(n),x),cons(m,y)) -> sum(cons(n,x),cons(s(m),y)) sum(cons(0(),x),y) -> sum(x,y) sum(nil(),y) -> y empty(nil()) -> true() empty(cons(n,x)) -> false() interpretation: [weight#](x0) = 1x0 + 2, [nil] = 0, [tail](x0) = -1x0 + 0, [cons](x0, x1) = -5x0 + 1x1 + 1, [0] = 3, [if#](x0, x1, x2) = -8x0 + -1x1 + x2, [empty](x0) = 2x0, [s](x0) = 6, [false] = 3, [if2#](x0, x1) = -1x0 + x1, [true] = 2, [sum](x0, x1) = x1 + 0 orientation: if2#(false(),x) = x + 2 >= x + 2 = weight#(sum(x,cons(0(),tail(tail(x))))) weight#(x) = 1x + 2 >= x + 1 = if#(empty(x),empty(tail(x)),x) if#(false(),b,x) = -1b + x + -5 >= -1b + x = if2#(b,x) tail(nil()) = 0 >= 0 = nil() tail(cons(n,x)) = -6n + x + 0 >= x = x sum(cons(s(n),x),cons(m,y)) = -5m + 1y + 1 >= 1y + 1 = sum(cons(n,x),cons(s(m),y)) sum(cons(0(),x),y) = y + 0 >= y + 0 = sum(x,y) sum(nil(),y) = y + 0 >= y = y empty(nil()) = 2 >= 2 = true() empty(cons(n,x)) = -3n + 3x + 3 >= 3 = false() problem: DPs: if2#(false(),x) -> weight#(sum(x,cons(0(),tail(tail(x))))) if#(false(),b,x) -> if2#(b,x) TRS: tail(nil()) -> nil() tail(cons(n,x)) -> x sum(cons(s(n),x),cons(m,y)) -> sum(cons(n,x),cons(s(m),y)) sum(cons(0(),x),y) -> sum(x,y) sum(nil(),y) -> y empty(nil()) -> true() empty(cons(n,x)) -> false() Restore Modifier: DPs: if2#(false(),x) -> weight#(sum(x,cons(0(),tail(tail(x))))) if#(false(),b,x) -> if2#(b,x) TRS: sum(cons(s(n),x),cons(m,y)) -> sum(cons(n,x),cons(s(m),y)) sum(cons(0(),x),y) -> sum(x,y) sum(nil(),y) -> y empty(nil()) -> true() empty(cons(n,x)) -> false() tail(nil()) -> nil() tail(cons(n,x)) -> x head(cons(n,x)) -> n weight(x) -> if(empty(x),empty(tail(x)),x) if(true(),b,x) -> weight_undefined_error() if(false(),b,x) -> if2(b,x) if2(true(),x) -> head(x) if2(false(),x) -> weight(sum(x,cons(0(),tail(tail(x))))) SCC Processor: #sccs: 0 #rules: 0 #arcs: 3/4 DPs: sum#(cons(s(n),x),cons(m,y)) -> sum#(cons(n,x),cons(s(m),y)) sum#(cons(0(),x),y) -> sum#(x,y) TRS: sum(cons(s(n),x),cons(m,y)) -> sum(cons(n,x),cons(s(m),y)) sum(cons(0(),x),y) -> sum(x,y) sum(nil(),y) -> y empty(nil()) -> true() empty(cons(n,x)) -> false() tail(nil()) -> nil() tail(cons(n,x)) -> x head(cons(n,x)) -> n weight(x) -> if(empty(x),empty(tail(x)),x) if(true(),b,x) -> weight_undefined_error() if(false(),b,x) -> if2(b,x) if2(true(),x) -> head(x) if2(false(),x) -> weight(sum(x,cons(0(),tail(tail(x))))) Usable Rule Processor: DPs: sum#(cons(s(n),x),cons(m,y)) -> sum#(cons(n,x),cons(s(m),y)) sum#(cons(0(),x),y) -> sum#(x,y) TRS: KBO Processor: argument filtering: pi(s) = 0 pi(cons) = [0,1] pi(0) = [] pi(sum#) = 0 usable rules: weight function: w0 = 1 w(sum#) = w(0) = w(s) = 1 w(cons) = 0 precedence: cons > 0 > s > sum# problem: DPs: sum#(cons(s(n),x),cons(m,y)) -> sum#(cons(n,x),cons(s(m),y)) TRS: Restore Modifier: DPs: sum#(cons(s(n),x),cons(m,y)) -> sum#(cons(n,x),cons(s(m),y)) TRS: sum(cons(s(n),x),cons(m,y)) -> sum(cons(n,x),cons(s(m),y)) sum(cons(0(),x),y) -> sum(x,y) sum(nil(),y) -> y empty(nil()) -> true() empty(cons(n,x)) -> false() tail(nil()) -> nil() tail(cons(n,x)) -> x head(cons(n,x)) -> n weight(x) -> if(empty(x),empty(tail(x)),x) if(true(),b,x) -> weight_undefined_error() if(false(),b,x) -> if2(b,x) if2(true(),x) -> head(x) if2(false(),x) -> weight(sum(x,cons(0(),tail(tail(x))))) Subterm Criterion Processor: simple projection: pi(cons) = 0 pi(sum#) = 0 problem: DPs: TRS: sum(cons(s(n),x),cons(m,y)) -> sum(cons(n,x),cons(s(m),y)) sum(cons(0(),x),y) -> sum(x,y) sum(nil(),y) -> y empty(nil()) -> true() empty(cons(n,x)) -> false() tail(nil()) -> nil() tail(cons(n,x)) -> x head(cons(n,x)) -> n weight(x) -> if(empty(x),empty(tail(x)),x) if(true(),b,x) -> weight_undefined_error() if(false(),b,x) -> if2(b,x) if2(true(),x) -> head(x) if2(false(),x) -> weight(sum(x,cons(0(),tail(tail(x))))) Qed