YES Problem: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) Proof: DP Processor: DPs: min#(s(x),s(y)) -> min#(x,y) len#(cons(x,xs)) -> len#(xs) sum#(x,s(y)) -> sum#(x,y) le#(s(x),s(y)) -> le#(x,y) take#(s(x),cons(y,ys)) -> take#(x,ys) addList#(x,y) -> len#(y) addList#(x,y) -> len#(x) addList#(x,y) -> min#(len(x),len(y)) addList#(x,y) -> le#(0(),min(len(x),len(y))) addList#(x,y) -> if#(le(0(),min(len(x),len(y))),0(),x,y,nil()) if#(true(),c,xs,ys,z) -> take#(c,ys) if#(true(),c,xs,ys,z) -> take#(c,xs) if#(true(),c,xs,ys,z) -> sum#(take(c,xs),take(c,ys)) if#(true(),c,xs,ys,z) -> len#(ys) if#(true(),c,xs,ys,z) -> len#(xs) if#(true(),c,xs,ys,z) -> min#(len(xs),len(ys)) if#(true(),c,xs,ys,z) -> le#(s(c),min(len(xs),len(ys))) if#(true(),c,xs,ys,z) -> if#(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) TRS: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) TDG Processor: DPs: min#(s(x),s(y)) -> min#(x,y) len#(cons(x,xs)) -> len#(xs) sum#(x,s(y)) -> sum#(x,y) le#(s(x),s(y)) -> le#(x,y) take#(s(x),cons(y,ys)) -> take#(x,ys) addList#(x,y) -> len#(y) addList#(x,y) -> len#(x) addList#(x,y) -> min#(len(x),len(y)) addList#(x,y) -> le#(0(),min(len(x),len(y))) addList#(x,y) -> if#(le(0(),min(len(x),len(y))),0(),x,y,nil()) if#(true(),c,xs,ys,z) -> take#(c,ys) if#(true(),c,xs,ys,z) -> take#(c,xs) if#(true(),c,xs,ys,z) -> sum#(take(c,xs),take(c,ys)) if#(true(),c,xs,ys,z) -> len#(ys) if#(true(),c,xs,ys,z) -> len#(xs) if#(true(),c,xs,ys,z) -> min#(len(xs),len(ys)) if#(true(),c,xs,ys,z) -> le#(s(c),min(len(xs),len(ys))) if#(true(),c,xs,ys,z) -> if#(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) TRS: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) graph: if#(true(),c,xs,ys,z) -> if#(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) -> if#(true(),c,xs,ys,z) -> if#(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) if#(true(),c,xs,ys,z) -> if#(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) -> if#(true(),c,xs,ys,z) -> le#(s(c),min(len(xs),len(ys))) if#(true(),c,xs,ys,z) -> if#(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) -> if#(true(),c,xs,ys,z) -> min#(len(xs),len(ys)) if#(true(),c,xs,ys,z) -> if#(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) -> if#(true(),c,xs,ys,z) -> len#(xs) if#(true(),c,xs,ys,z) -> if#(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) -> if#(true(),c,xs,ys,z) -> len#(ys) if#(true(),c,xs,ys,z) -> if#(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) -> if#(true(),c,xs,ys,z) -> sum#(take(c,xs),take(c,ys)) if#(true(),c,xs,ys,z) -> if#(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) -> if#(true(),c,xs,ys,z) -> take#(c,xs) if#(true(),c,xs,ys,z) -> if#(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) -> if#(true(),c,xs,ys,z) -> take#(c,ys) if#(true(),c,xs,ys,z) -> take#(c,ys) -> take#(s(x),cons(y,ys)) -> take#(x,ys) if#(true(),c,xs,ys,z) -> take#(c,xs) -> take#(s(x),cons(y,ys)) -> take#(x,ys) if#(true(),c,xs,ys,z) -> le#(s(c),min(len(xs),len(ys))) -> le#(s(x),s(y)) -> le#(x,y) if#(true(),c,xs,ys,z) -> sum#(take(c,xs),take(c,ys)) -> sum#(x,s(y)) -> sum#(x,y) if#(true(),c,xs,ys,z) -> len#(ys) -> len#(cons(x,xs)) -> len#(xs) if#(true(),c,xs,ys,z) -> len#(xs) -> len#(cons(x,xs)) -> len#(xs) if#(true(),c,xs,ys,z) -> min#(len(xs),len(ys)) -> min#(s(x),s(y)) -> min#(x,y) addList#(x,y) -> if#(le(0(),min(len(x),len(y))),0(),x,y,nil()) -> if#(true(),c,xs,ys,z) -> if#(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) addList#(x,y) -> if#(le(0(),min(len(x),len(y))),0(),x,y,nil()) -> if#(true(),c,xs,ys,z) -> le#(s(c),min(len(xs),len(ys))) addList#(x,y) -> if#(le(0(),min(len(x),len(y))),0(),x,y,nil()) -> if#(true(),c,xs,ys,z) -> min#(len(xs),len(ys)) addList#(x,y) -> if#(le(0(),min(len(x),len(y))),0(),x,y,nil()) -> if#(true(),c,xs,ys,z) -> len#(xs) addList#(x,y) -> if#(le(0(),min(len(x),len(y))),0(),x,y,nil()) -> if#(true(),c,xs,ys,z) -> len#(ys) addList#(x,y) -> if#(le(0(),min(len(x),len(y))),0(),x,y,nil()) -> if#(true(),c,xs,ys,z) -> sum#(take(c,xs),take(c,ys)) addList#(x,y) -> if#(le(0(),min(len(x),len(y))),0(),x,y,nil()) -> if#(true(),c,xs,ys,z) -> take#(c,xs) addList#(x,y) -> if#(le(0(),min(len(x),len(y))),0(),x,y,nil()) -> if#(true(),c,xs,ys,z) -> take#(c,ys) addList#(x,y) -> le#(0(),min(len(x),len(y))) -> le#(s(x),s(y)) -> le#(x,y) addList#(x,y) -> len#(x) -> len#(cons(x,xs)) -> len#(xs) addList#(x,y) -> len#(y) -> len#(cons(x,xs)) -> len#(xs) addList#(x,y) -> min#(len(x),len(y)) -> min#(s(x),s(y)) -> min#(x,y) take#(s(x),cons(y,ys)) -> take#(x,ys) -> take#(s(x),cons(y,ys)) -> take#(x,ys) le#(s(x),s(y)) -> le#(x,y) -> le#(s(x),s(y)) -> le#(x,y) sum#(x,s(y)) -> sum#(x,y) -> sum#(x,s(y)) -> sum#(x,y) len#(cons(x,xs)) -> len#(xs) -> len#(cons(x,xs)) -> len#(xs) min#(s(x),s(y)) -> min#(x,y) -> min#(s(x),s(y)) -> min#(x,y) SCC Processor: #sccs: 6 #rules: 6 #arcs: 32/324 DPs: if#(true(),c,xs,ys,z) -> if#(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) TRS: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) Bounds Processor: bound: 1 enrichment: top-dp automaton: final states: {4} transitions: if{#,0}(3,3,3,3,3) -> 4* false1() -> 24* 00() -> 3* le1(23,22) -> 24* if{#,1}(24,19,3,3,18) -> 4* cons1(17,3) -> 18* false0() -> 3* 01() -> 22,20,21 len1(3) -> 21,20 cons0(3,3) -> 3* sum0(3,3) -> 3* take1(3,3) -> 16,15 s1(20) -> 20,21 s1(3) -> 23,19 s1(17) -> 17* min1(21,20) -> 22* min1(20,20) -> 22* true0() -> 3* if0(3,3,3,3,3) -> 3* min0(3,3) -> 3* nil0() -> 3* sum1(16,15) -> 17* s0(3) -> 3* len0(3) -> 3* take0(3,3) -> 3* addList0(3,3) -> 3* le0(3,3) -> 3* 16 -> 17* 3 -> 15,16 problem: DPs: TRS: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) Qed DPs: le#(s(x),s(y)) -> le#(x,y) TRS: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) Subterm Criterion Processor: simple projection: pi(le#) = 0 problem: DPs: TRS: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) Qed DPs: min#(s(x),s(y)) -> min#(x,y) TRS: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) Subterm Criterion Processor: simple projection: pi(min#) = 0 problem: DPs: TRS: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) Qed DPs: len#(cons(x,xs)) -> len#(xs) TRS: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) Subterm Criterion Processor: simple projection: pi(len#) = 0 problem: DPs: TRS: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) Qed DPs: sum#(x,s(y)) -> sum#(x,y) TRS: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) Subterm Criterion Processor: simple projection: pi(sum#) = 1 problem: DPs: TRS: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) Qed DPs: take#(s(x),cons(y,ys)) -> take#(x,ys) TRS: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) Subterm Criterion Processor: simple projection: pi(take#) = 0 problem: DPs: TRS: min(0(),y) -> 0() min(s(x),0()) -> 0() min(s(x),s(y)) -> min(x,y) len(nil()) -> 0() len(cons(x,xs)) -> s(len(xs)) sum(x,0()) -> x sum(x,s(y)) -> s(sum(x,y)) le(0(),x) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) take(0(),cons(y,ys)) -> y take(s(x),cons(y,ys)) -> take(x,ys) addList(x,y) -> if(le(0(),min(len(x),len(y))),0(),x,y,nil()) if(false(),c,x,y,z) -> z if(true(),c,xs,ys,z) -> if(le(s(c),min(len(xs),len(ys))),s(c),xs,ys,cons(sum(take(c,xs),take(c,ys)),z)) Qed