MAYBE Problem: app(app(app(if(),true()),xs),ys) -> xs app(app(app(if(),false()),xs),ys) -> ys app(app(lt(),app(s(),x)),app(s(),y)) -> app(app(lt(),x),y) app(app(lt(),0()),app(s(),y)) -> true() app(app(lt(),y),0()) -> false() app(app(eq(),x),x) -> true() app(app(eq(),app(s(),x)),0()) -> false() app(app(eq(),0()),app(s(),x)) -> false() app(app(merge(),xs),nil()) -> xs app(app(merge(),nil()),ys) -> ys app(app(merge(),app(app(cons(),x),xs)),app(app(cons(),y),ys)) -> app(app(app(if(),app(app(lt(),x),y)),app(app(cons(),x),app(app(merge(),xs),app(app(cons(),y),ys)))), app(app(app(if(),app(app(eq(),x),y)),app(app(cons(),x),app(app(merge(),xs),ys))), app(app(cons(),y),app(app(merge(),app(app(cons(),x),xs)),ys)))) app(app(map(),f),nil()) -> nil() app(app(map(),f),app(app(cons(),x),xs)) -> app(app(cons(),app(f,x)),app(app(map(),f),xs)) app(app(mult(),0()),x) -> 0() app(app(mult(),app(s(),x)),y) -> app(app(plus(),y),app(app(mult(),x),y)) app(app(plus(),0()),x) -> 0() app(app(plus(),app(s(),x)),y) -> app(s(),app(app(plus(),x),y)) list1() -> app(app(map(),app(mult(),app(s(),app(s(),0())))),hamming()) list2() -> app(app(map(),app(mult(),app(s(),app(s(),app(s(),0()))))),hamming()) list3() -> app(app(map(),app(mult(),app(s(),app(s(),app(s(),app(s(),app(s(),0()))))))),hamming()) hamming() -> app(app(cons(),app(s(),0())),app(app(merge(),list1()),app(app(merge(),list2()),list3()))) Proof: Uncurry Processor: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) DP Processor: DPs: lt{2,#}(s1(x),s1(y)) -> lt{2,#}(x,y) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> eq{2,#}(x,y) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(eq2(x,y),cons2(x,merge2(xs,ys)),cons2(y,merge2(cons2(x,xs),ys))) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> lt{2,#}(x,y) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) mult{2,#}(s1(x),y) -> mult{2,#}(x,y) mult{2,#}(s1(x),y) -> plus{2,#}(y,mult2(x,y)) plus{2,#}(s1(x),y) -> plus{2,#}(x,y) list1#() -> hamming#() list1#() -> map{2,#}(mult1(s1(s1(0()))),hamming()) list2#() -> hamming#() list2#() -> map{2,#}(mult1(s1(s1(s1(0())))),hamming()) list3#() -> hamming#() list3#() -> map{2,#}(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming#() -> list3#() hamming#() -> list2#() hamming#() -> merge{2,#}(list2(),list3()) hamming#() -> list1#() hamming#() -> merge{2,#}(list1(),merge2(list2(),list3())) app#(if2(x6,x5),x7) -> if{3,#}(x6,x5,x7) app#(lt1(x6),x7) -> lt{2,#}(x6,x7) app#(eq1(x6),x7) -> eq{2,#}(x6,x7) app#(merge1(x6),x7) -> merge{2,#}(x6,x7) app#(map1(x6),x7) -> map{2,#}(x6,x7) app#(mult1(x6),x7) -> mult{2,#}(x6,x7) app#(plus1(x6),x7) -> plus{2,#}(x6,x7) TRS: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) TDG Processor: DPs: lt{2,#}(s1(x),s1(y)) -> lt{2,#}(x,y) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> eq{2,#}(x,y) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(eq2(x,y),cons2(x,merge2(xs,ys)),cons2(y,merge2(cons2(x,xs),ys))) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> lt{2,#}(x,y) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) mult{2,#}(s1(x),y) -> mult{2,#}(x,y) mult{2,#}(s1(x),y) -> plus{2,#}(y,mult2(x,y)) plus{2,#}(s1(x),y) -> plus{2,#}(x,y) list1#() -> hamming#() list1#() -> map{2,#}(mult1(s1(s1(0()))),hamming()) list2#() -> hamming#() list2#() -> map{2,#}(mult1(s1(s1(s1(0())))),hamming()) list3#() -> hamming#() list3#() -> map{2,#}(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming#() -> list3#() hamming#() -> list2#() hamming#() -> merge{2,#}(list2(),list3()) hamming#() -> list1#() hamming#() -> merge{2,#}(list1(),merge2(list2(),list3())) app#(if2(x6,x5),x7) -> if{3,#}(x6,x5,x7) app#(lt1(x6),x7) -> lt{2,#}(x6,x7) app#(eq1(x6),x7) -> eq{2,#}(x6,x7) app#(merge1(x6),x7) -> merge{2,#}(x6,x7) app#(map1(x6),x7) -> map{2,#}(x6,x7) app#(mult1(x6),x7) -> mult{2,#}(x6,x7) app#(plus1(x6),x7) -> plus{2,#}(x6,x7) TRS: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) graph: list3#() -> hamming#() -> hamming#() -> merge{2,#}(list1(),merge2(list2(),list3())) list3#() -> hamming#() -> hamming#() -> list1#() list3#() -> hamming#() -> hamming#() -> merge{2,#}(list2(),list3()) list3#() -> hamming#() -> hamming#() -> list2#() list3#() -> hamming#() -> hamming#() -> list3#() list3#() -> map{2,#}(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) -> map{2,#}(f,cons2(x,xs)) -> app#(f,x) list3#() -> map{2,#}(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) -> map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) list2#() -> hamming#() -> hamming#() -> merge{2,#}(list1(),merge2(list2(),list3())) list2#() -> hamming#() -> hamming#() -> list1#() list2#() -> hamming#() -> hamming#() -> merge{2,#}(list2(),list3()) list2#() -> hamming#() -> hamming#() -> list2#() list2#() -> hamming#() -> hamming#() -> list3#() list2#() -> map{2,#}(mult1(s1(s1(s1(0())))),hamming()) -> map{2,#}(f,cons2(x,xs)) -> app#(f,x) list2#() -> map{2,#}(mult1(s1(s1(s1(0())))),hamming()) -> map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) hamming#() -> list3#() -> list3#() -> map{2,#}(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming#() -> list3#() -> list3#() -> hamming#() hamming#() -> list2#() -> list2#() -> map{2,#}(mult1(s1(s1(s1(0())))),hamming()) hamming#() -> list2#() -> list2#() -> hamming#() hamming#() -> list1#() -> list1#() -> map{2,#}(mult1(s1(s1(0()))),hamming()) hamming#() -> list1#() -> list1#() -> hamming#() hamming#() -> merge{2,#}(list2(),list3()) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) hamming#() -> merge{2,#}(list2(),list3()) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> lt{2,#}(x,y) hamming#() -> merge{2,#}(list2(),list3()) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) hamming#() -> merge{2,#}(list2(),list3()) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(eq2(x,y),cons2(x,merge2(xs,ys)),cons2(y,merge2(cons2(x,xs),ys))) hamming#() -> merge{2,#}(list2(),list3()) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> eq{2,#}(x,y) hamming#() -> merge{2,#}(list2(),list3()) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) hamming#() -> merge{2,#}(list2(),list3()) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) hamming#() -> merge{2,#}(list1(),merge2(list2(),list3())) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) hamming#() -> merge{2,#}(list1(),merge2(list2(),list3())) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> lt{2,#}(x,y) hamming#() -> merge{2,#}(list1(),merge2(list2(),list3())) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) hamming#() -> merge{2,#}(list1(),merge2(list2(),list3())) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(eq2(x,y),cons2(x,merge2(xs,ys)),cons2(y,merge2(cons2(x,xs),ys))) hamming#() -> merge{2,#}(list1(),merge2(list2(),list3())) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> eq{2,#}(x,y) hamming#() -> merge{2,#}(list1(),merge2(list2(),list3())) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) hamming#() -> merge{2,#}(list1(),merge2(list2(),list3())) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) list1#() -> hamming#() -> hamming#() -> merge{2,#}(list1(),merge2(list2(),list3())) list1#() -> hamming#() -> hamming#() -> list1#() list1#() -> hamming#() -> hamming#() -> merge{2,#}(list2(),list3()) list1#() -> hamming#() -> hamming#() -> list2#() list1#() -> hamming#() -> hamming#() -> list3#() list1#() -> map{2,#}(mult1(s1(s1(0()))),hamming()) -> map{2,#}(f,cons2(x,xs)) -> app#(f,x) list1#() -> map{2,#}(mult1(s1(s1(0()))),hamming()) -> map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) plus{2,#}(s1(x),y) -> plus{2,#}(x,y) -> plus{2,#}(s1(x),y) -> plus{2,#}(x,y) mult{2,#}(s1(x),y) -> plus{2,#}(y,mult2(x,y)) -> plus{2,#}(s1(x),y) -> plus{2,#}(x,y) mult{2,#}(s1(x),y) -> mult{2,#}(x,y) -> mult{2,#}(s1(x),y) -> plus{2,#}(y,mult2(x,y)) mult{2,#}(s1(x),y) -> mult{2,#}(x,y) -> mult{2,#}(s1(x),y) -> mult{2,#}(x,y) app#(plus1(x6),x7) -> plus{2,#}(x6,x7) -> plus{2,#}(s1(x),y) -> plus{2,#}(x,y) app#(mult1(x6),x7) -> mult{2,#}(x6,x7) -> mult{2,#}(s1(x),y) -> plus{2,#}(y,mult2(x,y)) app#(mult1(x6),x7) -> mult{2,#}(x6,x7) -> mult{2,#}(s1(x),y) -> mult{2,#}(x,y) app#(map1(x6),x7) -> map{2,#}(x6,x7) -> map{2,#}(f,cons2(x,xs)) -> app#(f,x) app#(map1(x6),x7) -> map{2,#}(x6,x7) -> map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) app#(merge1(x6),x7) -> merge{2,#}(x6,x7) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) app#(merge1(x6),x7) -> merge{2,#}(x6,x7) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> lt{2,#}(x,y) app#(merge1(x6),x7) -> merge{2,#}(x6,x7) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) app#(merge1(x6),x7) -> merge{2,#}(x6,x7) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(eq2(x,y),cons2(x,merge2(xs,ys)),cons2(y,merge2(cons2(x,xs),ys))) app#(merge1(x6),x7) -> merge{2,#}(x6,x7) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> eq{2,#}(x,y) app#(merge1(x6),x7) -> merge{2,#}(x6,x7) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) app#(merge1(x6),x7) -> merge{2,#}(x6,x7) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) app#(lt1(x6),x7) -> lt{2,#}(x6,x7) -> lt{2,#}(s1(x),s1(y)) -> lt{2,#}(x,y) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(plus1(x6),x7) -> plus{2,#}(x6,x7) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(mult1(x6),x7) -> mult{2,#}(x6,x7) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(map1(x6),x7) -> map{2,#}(x6,x7) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(merge1(x6),x7) -> merge{2,#}(x6,x7) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(eq1(x6),x7) -> eq{2,#}(x6,x7) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(lt1(x6),x7) -> lt{2,#}(x6,x7) map{2,#}(f,cons2(x,xs)) -> app#(f,x) -> app#(if2(x6,x5),x7) -> if{3,#}(x6,x5,x7) map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) -> map{2,#}(f,cons2(x,xs)) -> app#(f,x) map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) -> map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> lt{2,#}(x,y) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(eq2(x,y),cons2(x,merge2(xs,ys)),cons2(y,merge2(cons2(x,xs),ys))) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> eq{2,#}(x,y) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> lt{2,#}(x,y) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(eq2(x,y),cons2(x,merge2(xs,ys)),cons2(y,merge2(cons2(x,xs),ys))) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> eq{2,#}(x,y) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> lt{2,#}(x,y) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> if{3,#}(eq2(x,y),cons2(x,merge2(xs,ys)),cons2(y,merge2(cons2(x,xs),ys))) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> eq{2,#}(x,y) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) -> merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> lt{2,#}(x,y) -> lt{2,#}(s1(x),s1(y)) -> lt{2,#}(x,y) lt{2,#}(s1(x),s1(y)) -> lt{2,#}(x,y) -> lt{2,#}(s1(x),s1(y)) -> lt{2,#}(x,y) SCC Processor: #sccs: 6 #rules: 15 #arcs: 90/961 DPs: list3#() -> hamming#() hamming#() -> list3#() hamming#() -> list2#() list2#() -> hamming#() hamming#() -> list1#() list1#() -> hamming#() TRS: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) Open DPs: map{2,#}(f,cons2(x,xs)) -> map{2,#}(f,xs) map{2,#}(f,cons2(x,xs)) -> app#(f,x) app#(map1(x6),x7) -> map{2,#}(x6,x7) TRS: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) Subterm Criterion Processor: simple projection: pi(map{2,#}) = 1 pi(app#) = 1 problem: DPs: app#(map1(x6),x7) -> map{2,#}(x6,x7) TRS: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) SCC Processor: #sccs: 0 #rules: 0 #arcs: 5/1 DPs: mult{2,#}(s1(x),y) -> mult{2,#}(x,y) TRS: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) Subterm Criterion Processor: simple projection: pi(mult{2,#}) = 0 problem: DPs: TRS: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) Qed DPs: plus{2,#}(s1(x),y) -> plus{2,#}(x,y) TRS: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) Subterm Criterion Processor: simple projection: pi(plus{2,#}) = 0 problem: DPs: TRS: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) Qed DPs: merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(cons2(x,xs),ys) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,ys) merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) TRS: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) Subterm Criterion Processor: simple projection: pi(merge{2,#}) = 1 problem: DPs: merge{2,#}(cons2(x,xs),cons2(y,ys)) -> merge{2,#}(xs,cons2(y,ys)) TRS: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) Subterm Criterion Processor: simple projection: pi(merge{2,#}) = 0 problem: DPs: TRS: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) Qed DPs: lt{2,#}(s1(x),s1(y)) -> lt{2,#}(x,y) TRS: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) Subterm Criterion Processor: simple projection: pi(lt{2,#}) = 1 problem: DPs: TRS: if3(true(),xs,ys) -> xs if3(false(),xs,ys) -> ys lt2(s1(x),s1(y)) -> lt2(x,y) lt2(0(),s1(y)) -> true() lt2(y,0()) -> false() eq2(x,x) -> true() eq2(s1(x),0()) -> false() eq2(0(),s1(x)) -> false() merge2(xs,nil()) -> xs merge2(nil(),ys) -> ys merge2(cons2(x,xs),cons2(y,ys)) -> if3(lt2(x,y),cons2(x,merge2(xs,cons2(y,ys))),if3(eq2(x,y),cons2(x,merge2(xs,ys)), cons2(y,merge2(cons2(x,xs),ys)))) map2(f,nil()) -> nil() map2(f,cons2(x,xs)) -> cons2(app(f,x),map2(f,xs)) mult2(0(),x) -> 0() mult2(s1(x),y) -> plus2(y,mult2(x,y)) plus2(0(),x) -> 0() plus2(s1(x),y) -> s1(plus2(x,y)) list1() -> map2(mult1(s1(s1(0()))),hamming()) list2() -> map2(mult1(s1(s1(s1(0())))),hamming()) list3() -> map2(mult1(s1(s1(s1(s1(s1(0())))))),hamming()) hamming() -> cons2(s1(0()),merge2(list1(),merge2(list2(),list3()))) app(if2(x6,x5),x7) -> if3(x6,x5,x7) app(if1(x6),x7) -> if2(x6,x7) app(if(),x7) -> if1(x7) app(lt1(x6),x7) -> lt2(x6,x7) app(lt(),x7) -> lt1(x7) app(s(),x7) -> s1(x7) app(eq1(x6),x7) -> eq2(x6,x7) app(eq(),x7) -> eq1(x7) app(merge1(x6),x7) -> merge2(x6,x7) app(merge(),x7) -> merge1(x7) app(cons1(x6),x7) -> cons2(x6,x7) app(cons(),x7) -> cons1(x7) app(map1(x6),x7) -> map2(x6,x7) app(map(),x7) -> map1(x7) app(mult1(x6),x7) -> mult2(x6,x7) app(mult(),x7) -> mult1(x7) app(plus1(x6),x7) -> plus2(x6,x7) app(plus(),x7) -> plus1(x7) Qed