MAYBE Problem: le(s(x),0()) -> false() le(0(),y) -> true() le(s(x),s(y)) -> le(x,y) double(0()) -> 0() double(s(x)) -> s(s(double(x))) log(0()) -> logError() log(s(x)) -> loop(s(x),s(0()),0()) loop(x,s(y),z) -> if(le(x,s(y)),x,s(y),z) if(true(),x,y,z) -> z if(false(),x,y,z) -> loop(x,double(y),s(z)) maplog(xs) -> mapIter(xs,nil()) mapIter(xs,ys) -> ifmap(isempty(xs),xs,ys) ifmap(true(),xs,ys) -> ys ifmap(false(),xs,ys) -> mapIter(droplast(xs),cons(log(last(xs)),ys)) isempty(nil()) -> true() isempty(cons(x,xs)) -> false() last(nil()) -> error() last(cons(x,nil())) -> x last(cons(x,cons(y,xs))) -> last(cons(y,xs)) droplast(nil()) -> nil() droplast(cons(x,nil())) -> nil() droplast(cons(x,cons(y,xs))) -> cons(x,droplast(cons(y,xs))) a() -> b() a() -> c() Proof: DP Processor: DPs: le#(s(x),s(y)) -> le#(x,y) double#(s(x)) -> double#(x) log#(s(x)) -> loop#(s(x),s(0()),0()) loop#(x,s(y),z) -> le#(x,s(y)) loop#(x,s(y),z) -> if#(le(x,s(y)),x,s(y),z) if#(false(),x,y,z) -> double#(y) if#(false(),x,y,z) -> loop#(x,double(y),s(z)) maplog#(xs) -> mapIter#(xs,nil()) mapIter#(xs,ys) -> isempty#(xs) mapIter#(xs,ys) -> ifmap#(isempty(xs),xs,ys) ifmap#(false(),xs,ys) -> last#(xs) ifmap#(false(),xs,ys) -> log#(last(xs)) ifmap#(false(),xs,ys) -> droplast#(xs) ifmap#(false(),xs,ys) -> mapIter#(droplast(xs),cons(log(last(xs)),ys)) last#(cons(x,cons(y,xs))) -> last#(cons(y,xs)) droplast#(cons(x,cons(y,xs))) -> droplast#(cons(y,xs)) TRS: le(s(x),0()) -> false() le(0(),y) -> true() le(s(x),s(y)) -> le(x,y) double(0()) -> 0() double(s(x)) -> s(s(double(x))) log(0()) -> logError() log(s(x)) -> loop(s(x),s(0()),0()) loop(x,s(y),z) -> if(le(x,s(y)),x,s(y),z) if(true(),x,y,z) -> z if(false(),x,y,z) -> loop(x,double(y),s(z)) maplog(xs) -> mapIter(xs,nil()) mapIter(xs,ys) -> ifmap(isempty(xs),xs,ys) ifmap(true(),xs,ys) -> ys ifmap(false(),xs,ys) -> mapIter(droplast(xs),cons(log(last(xs)),ys)) isempty(nil()) -> true() isempty(cons(x,xs)) -> false() last(nil()) -> error() last(cons(x,nil())) -> x last(cons(x,cons(y,xs))) -> last(cons(y,xs)) droplast(nil()) -> nil() droplast(cons(x,nil())) -> nil() droplast(cons(x,cons(y,xs))) -> cons(x,droplast(cons(y,xs))) a() -> b() a() -> c() EDG Processor: DPs: le#(s(x),s(y)) -> le#(x,y) double#(s(x)) -> double#(x) log#(s(x)) -> loop#(s(x),s(0()),0()) loop#(x,s(y),z) -> le#(x,s(y)) loop#(x,s(y),z) -> if#(le(x,s(y)),x,s(y),z) if#(false(),x,y,z) -> double#(y) if#(false(),x,y,z) -> loop#(x,double(y),s(z)) maplog#(xs) -> mapIter#(xs,nil()) mapIter#(xs,ys) -> isempty#(xs) mapIter#(xs,ys) -> ifmap#(isempty(xs),xs,ys) ifmap#(false(),xs,ys) -> last#(xs) ifmap#(false(),xs,ys) -> log#(last(xs)) ifmap#(false(),xs,ys) -> droplast#(xs) ifmap#(false(),xs,ys) -> mapIter#(droplast(xs),cons(log(last(xs)),ys)) last#(cons(x,cons(y,xs))) -> last#(cons(y,xs)) droplast#(cons(x,cons(y,xs))) -> droplast#(cons(y,xs)) TRS: le(s(x),0()) -> false() le(0(),y) -> true() le(s(x),s(y)) -> le(x,y) double(0()) -> 0() double(s(x)) -> s(s(double(x))) log(0()) -> logError() log(s(x)) -> loop(s(x),s(0()),0()) loop(x,s(y),z) -> if(le(x,s(y)),x,s(y),z) if(true(),x,y,z) -> z if(false(),x,y,z) -> loop(x,double(y),s(z)) maplog(xs) -> mapIter(xs,nil()) mapIter(xs,ys) -> ifmap(isempty(xs),xs,ys) ifmap(true(),xs,ys) -> ys ifmap(false(),xs,ys) -> mapIter(droplast(xs),cons(log(last(xs)),ys)) isempty(nil()) -> true() isempty(cons(x,xs)) -> false() last(nil()) -> error() last(cons(x,nil())) -> x last(cons(x,cons(y,xs))) -> last(cons(y,xs)) droplast(nil()) -> nil() droplast(cons(x,nil())) -> nil() droplast(cons(x,cons(y,xs))) -> cons(x,droplast(cons(y,xs))) a() -> b() a() -> c() graph: droplast#(cons(x,cons(y,xs))) -> droplast#(cons(y,xs)) -> droplast#(cons(x,cons(y,xs))) -> droplast#(cons(y,xs)) last#(cons(x,cons(y,xs))) -> last#(cons(y,xs)) -> last#(cons(x,cons(y,xs))) -> last#(cons(y,xs)) ifmap#(false(),xs,ys) -> droplast#(xs) -> droplast#(cons(x,cons(y,xs))) -> droplast#(cons(y,xs)) ifmap#(false(),xs,ys) -> last#(xs) -> last#(cons(x,cons(y,xs))) -> last#(cons(y,xs)) ifmap#(false(),xs,ys) -> mapIter#(droplast(xs),cons(log(last(xs)),ys)) -> mapIter#(xs,ys) -> isempty#(xs) ifmap#(false(),xs,ys) -> mapIter#(droplast(xs),cons(log(last(xs)),ys)) -> mapIter#(xs,ys) -> ifmap#(isempty(xs),xs,ys) ifmap#(false(),xs,ys) -> log#(last(xs)) -> log#(s(x)) -> loop#(s(x),s(0()),0()) mapIter#(xs,ys) -> ifmap#(isempty(xs),xs,ys) -> ifmap#(false(),xs,ys) -> last#(xs) mapIter#(xs,ys) -> ifmap#(isempty(xs),xs,ys) -> ifmap#(false(),xs,ys) -> log#(last(xs)) mapIter#(xs,ys) -> ifmap#(isempty(xs),xs,ys) -> ifmap#(false(),xs,ys) -> droplast#(xs) mapIter#(xs,ys) -> ifmap#(isempty(xs),xs,ys) -> ifmap#(false(),xs,ys) -> mapIter#(droplast(xs),cons(log(last(xs)),ys)) maplog#(xs) -> mapIter#(xs,nil()) -> mapIter#(xs,ys) -> isempty#(xs) maplog#(xs) -> mapIter#(xs,nil()) -> mapIter#(xs,ys) -> ifmap#(isempty(xs),xs,ys) if#(false(),x,y,z) -> loop#(x,double(y),s(z)) -> loop#(x,s(y),z) -> le#(x,s(y)) if#(false(),x,y,z) -> loop#(x,double(y),s(z)) -> loop#(x,s(y),z) -> if#(le(x,s(y)),x,s(y),z) if#(false(),x,y,z) -> double#(y) -> double#(s(x)) -> double#(x) loop#(x,s(y),z) -> if#(le(x,s(y)),x,s(y),z) -> if#(false(),x,y,z) -> double#(y) loop#(x,s(y),z) -> if#(le(x,s(y)),x,s(y),z) -> if#(false(),x,y,z) -> loop#(x,double(y),s(z)) loop#(x,s(y),z) -> le#(x,s(y)) -> le#(s(x),s(y)) -> le#(x,y) log#(s(x)) -> loop#(s(x),s(0()),0()) -> loop#(x,s(y),z) -> le#(x,s(y)) log#(s(x)) -> loop#(s(x),s(0()),0()) -> loop#(x,s(y),z) -> if#(le(x,s(y)),x,s(y),z) double#(s(x)) -> double#(x) -> double#(s(x)) -> double#(x) le#(s(x),s(y)) -> le#(x,y) -> le#(s(x),s(y)) -> le#(x,y) SCC Processor: #sccs: 6 #rules: 8 #arcs: 23/256 DPs: ifmap#(false(),xs,ys) -> mapIter#(droplast(xs),cons(log(last(xs)),ys)) mapIter#(xs,ys) -> ifmap#(isempty(xs),xs,ys) TRS: le(s(x),0()) -> false() le(0(),y) -> true() le(s(x),s(y)) -> le(x,y) double(0()) -> 0() double(s(x)) -> s(s(double(x))) log(0()) -> logError() log(s(x)) -> loop(s(x),s(0()),0()) loop(x,s(y),z) -> if(le(x,s(y)),x,s(y),z) if(true(),x,y,z) -> z if(false(),x,y,z) -> loop(x,double(y),s(z)) maplog(xs) -> mapIter(xs,nil()) mapIter(xs,ys) -> ifmap(isempty(xs),xs,ys) ifmap(true(),xs,ys) -> ys ifmap(false(),xs,ys) -> mapIter(droplast(xs),cons(log(last(xs)),ys)) isempty(nil()) -> true() isempty(cons(x,xs)) -> false() last(nil()) -> error() last(cons(x,nil())) -> x last(cons(x,cons(y,xs))) -> last(cons(y,xs)) droplast(nil()) -> nil() droplast(cons(x,nil())) -> nil() droplast(cons(x,cons(y,xs))) -> cons(x,droplast(cons(y,xs))) a() -> b() a() -> c() Open DPs: loop#(x,s(y),z) -> if#(le(x,s(y)),x,s(y),z) if#(false(),x,y,z) -> loop#(x,double(y),s(z)) TRS: le(s(x),0()) -> false() le(0(),y) -> true() le(s(x),s(y)) -> le(x,y) double(0()) -> 0() double(s(x)) -> s(s(double(x))) log(0()) -> logError() log(s(x)) -> loop(s(x),s(0()),0()) loop(x,s(y),z) -> if(le(x,s(y)),x,s(y),z) if(true(),x,y,z) -> z if(false(),x,y,z) -> loop(x,double(y),s(z)) maplog(xs) -> mapIter(xs,nil()) mapIter(xs,ys) -> ifmap(isempty(xs),xs,ys) ifmap(true(),xs,ys) -> ys ifmap(false(),xs,ys) -> mapIter(droplast(xs),cons(log(last(xs)),ys)) isempty(nil()) -> true() isempty(cons(x,xs)) -> false() last(nil()) -> error() last(cons(x,nil())) -> x last(cons(x,cons(y,xs))) -> last(cons(y,xs)) droplast(nil()) -> nil() droplast(cons(x,nil())) -> nil() droplast(cons(x,cons(y,xs))) -> cons(x,droplast(cons(y,xs))) a() -> b() a() -> c() Open DPs: double#(s(x)) -> double#(x) TRS: le(s(x),0()) -> false() le(0(),y) -> true() le(s(x),s(y)) -> le(x,y) double(0()) -> 0() double(s(x)) -> s(s(double(x))) log(0()) -> logError() log(s(x)) -> loop(s(x),s(0()),0()) loop(x,s(y),z) -> if(le(x,s(y)),x,s(y),z) if(true(),x,y,z) -> z if(false(),x,y,z) -> loop(x,double(y),s(z)) maplog(xs) -> mapIter(xs,nil()) mapIter(xs,ys) -> ifmap(isempty(xs),xs,ys) ifmap(true(),xs,ys) -> ys ifmap(false(),xs,ys) -> mapIter(droplast(xs),cons(log(last(xs)),ys)) isempty(nil()) -> true() isempty(cons(x,xs)) -> false() last(nil()) -> error() last(cons(x,nil())) -> x last(cons(x,cons(y,xs))) -> last(cons(y,xs)) droplast(nil()) -> nil() droplast(cons(x,nil())) -> nil() droplast(cons(x,cons(y,xs))) -> cons(x,droplast(cons(y,xs))) a() -> b() a() -> c() Open DPs: le#(s(x),s(y)) -> le#(x,y) TRS: le(s(x),0()) -> false() le(0(),y) -> true() le(s(x),s(y)) -> le(x,y) double(0()) -> 0() double(s(x)) -> s(s(double(x))) log(0()) -> logError() log(s(x)) -> loop(s(x),s(0()),0()) loop(x,s(y),z) -> if(le(x,s(y)),x,s(y),z) if(true(),x,y,z) -> z if(false(),x,y,z) -> loop(x,double(y),s(z)) maplog(xs) -> mapIter(xs,nil()) mapIter(xs,ys) -> ifmap(isempty(xs),xs,ys) ifmap(true(),xs,ys) -> ys ifmap(false(),xs,ys) -> mapIter(droplast(xs),cons(log(last(xs)),ys)) isempty(nil()) -> true() isempty(cons(x,xs)) -> false() last(nil()) -> error() last(cons(x,nil())) -> x last(cons(x,cons(y,xs))) -> last(cons(y,xs)) droplast(nil()) -> nil() droplast(cons(x,nil())) -> nil() droplast(cons(x,cons(y,xs))) -> cons(x,droplast(cons(y,xs))) a() -> b() a() -> c() Open DPs: last#(cons(x,cons(y,xs))) -> last#(cons(y,xs)) TRS: le(s(x),0()) -> false() le(0(),y) -> true() le(s(x),s(y)) -> le(x,y) double(0()) -> 0() double(s(x)) -> s(s(double(x))) log(0()) -> logError() log(s(x)) -> loop(s(x),s(0()),0()) loop(x,s(y),z) -> if(le(x,s(y)),x,s(y),z) if(true(),x,y,z) -> z if(false(),x,y,z) -> loop(x,double(y),s(z)) maplog(xs) -> mapIter(xs,nil()) mapIter(xs,ys) -> ifmap(isempty(xs),xs,ys) ifmap(true(),xs,ys) -> ys ifmap(false(),xs,ys) -> mapIter(droplast(xs),cons(log(last(xs)),ys)) isempty(nil()) -> true() isempty(cons(x,xs)) -> false() last(nil()) -> error() last(cons(x,nil())) -> x last(cons(x,cons(y,xs))) -> last(cons(y,xs)) droplast(nil()) -> nil() droplast(cons(x,nil())) -> nil() droplast(cons(x,cons(y,xs))) -> cons(x,droplast(cons(y,xs))) a() -> b() a() -> c() Open DPs: droplast#(cons(x,cons(y,xs))) -> droplast#(cons(y,xs)) TRS: le(s(x),0()) -> false() le(0(),y) -> true() le(s(x),s(y)) -> le(x,y) double(0()) -> 0() double(s(x)) -> s(s(double(x))) log(0()) -> logError() log(s(x)) -> loop(s(x),s(0()),0()) loop(x,s(y),z) -> if(le(x,s(y)),x,s(y),z) if(true(),x,y,z) -> z if(false(),x,y,z) -> loop(x,double(y),s(z)) maplog(xs) -> mapIter(xs,nil()) mapIter(xs,ys) -> ifmap(isempty(xs),xs,ys) ifmap(true(),xs,ys) -> ys ifmap(false(),xs,ys) -> mapIter(droplast(xs),cons(log(last(xs)),ys)) isempty(nil()) -> true() isempty(cons(x,xs)) -> false() last(nil()) -> error() last(cons(x,nil())) -> x last(cons(x,cons(y,xs))) -> last(cons(y,xs)) droplast(nil()) -> nil() droplast(cons(x,nil())) -> nil() droplast(cons(x,cons(y,xs))) -> cons(x,droplast(cons(y,xs))) a() -> b() a() -> c() Open