MAYBE Problem: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) inc(s(x)) -> s(inc(x)) inc(0()) -> s(0()) logarithm(x) -> logIter(x,0()) logIter(x,y) -> if(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) if(false(),b,x,y) -> logZeroError() if(true(),false(),x,s(y)) -> y if(true(),true(),x,y) -> logIter(x,y) f() -> g() f() -> h() Proof: DP Processor: DPs: half#(s(s(x))) -> half#(x) le#(s(x),s(y)) -> le#(x,y) inc#(s(x)) -> inc#(x) logarithm#(x) -> logIter#(x,0()) logIter#(x,y) -> inc#(y) logIter#(x,y) -> half#(x) logIter#(x,y) -> le#(s(s(0())),x) logIter#(x,y) -> le#(s(0()),x) logIter#(x,y) -> if#(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) if#(true(),true(),x,y) -> logIter#(x,y) TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) inc(s(x)) -> s(inc(x)) inc(0()) -> s(0()) logarithm(x) -> logIter(x,0()) logIter(x,y) -> if(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) if(false(),b,x,y) -> logZeroError() if(true(),false(),x,s(y)) -> y if(true(),true(),x,y) -> logIter(x,y) f() -> g() f() -> h() TDG Processor: DPs: half#(s(s(x))) -> half#(x) le#(s(x),s(y)) -> le#(x,y) inc#(s(x)) -> inc#(x) logarithm#(x) -> logIter#(x,0()) logIter#(x,y) -> inc#(y) logIter#(x,y) -> half#(x) logIter#(x,y) -> le#(s(s(0())),x) logIter#(x,y) -> le#(s(0()),x) logIter#(x,y) -> if#(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) if#(true(),true(),x,y) -> logIter#(x,y) TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) inc(s(x)) -> s(inc(x)) inc(0()) -> s(0()) logarithm(x) -> logIter(x,0()) logIter(x,y) -> if(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) if(false(),b,x,y) -> logZeroError() if(true(),false(),x,s(y)) -> y if(true(),true(),x,y) -> logIter(x,y) f() -> g() f() -> h() graph: if#(true(),true(),x,y) -> logIter#(x,y) -> logIter#(x,y) -> if#(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) if#(true(),true(),x,y) -> logIter#(x,y) -> logIter#(x,y) -> le#(s(0()),x) if#(true(),true(),x,y) -> logIter#(x,y) -> logIter#(x,y) -> le#(s(s(0())),x) if#(true(),true(),x,y) -> logIter#(x,y) -> logIter#(x,y) -> half#(x) if#(true(),true(),x,y) -> logIter#(x,y) -> logIter#(x,y) -> inc#(y) logIter#(x,y) -> if#(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) -> if#(true(),true(),x,y) -> logIter#(x,y) logIter#(x,y) -> inc#(y) -> inc#(s(x)) -> inc#(x) logIter#(x,y) -> le#(s(s(0())),x) -> le#(s(x),s(y)) -> le#(x,y) logIter#(x,y) -> le#(s(0()),x) -> le#(s(x),s(y)) -> le#(x,y) logIter#(x,y) -> half#(x) -> half#(s(s(x))) -> half#(x) logarithm#(x) -> logIter#(x,0()) -> logIter#(x,y) -> if#(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) logarithm#(x) -> logIter#(x,0()) -> logIter#(x,y) -> le#(s(0()),x) logarithm#(x) -> logIter#(x,0()) -> logIter#(x,y) -> le#(s(s(0())),x) logarithm#(x) -> logIter#(x,0()) -> logIter#(x,y) -> half#(x) logarithm#(x) -> logIter#(x,0()) -> logIter#(x,y) -> inc#(y) inc#(s(x)) -> inc#(x) -> inc#(s(x)) -> inc#(x) le#(s(x),s(y)) -> le#(x,y) -> le#(s(x),s(y)) -> le#(x,y) half#(s(s(x))) -> half#(x) -> half#(s(s(x))) -> half#(x) SCC Processor: #sccs: 4 #rules: 5 #arcs: 18/100 DPs: if#(true(),true(),x,y) -> logIter#(x,y) logIter#(x,y) -> if#(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) inc(s(x)) -> s(inc(x)) inc(0()) -> s(0()) logarithm(x) -> logIter(x,0()) logIter(x,y) -> if(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) if(false(),b,x,y) -> logZeroError() if(true(),false(),x,s(y)) -> y if(true(),true(),x,y) -> logIter(x,y) f() -> g() f() -> h() Open DPs: le#(s(x),s(y)) -> le#(x,y) TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) inc(s(x)) -> s(inc(x)) inc(0()) -> s(0()) logarithm(x) -> logIter(x,0()) logIter(x,y) -> if(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) if(false(),b,x,y) -> logZeroError() if(true(),false(),x,s(y)) -> y if(true(),true(),x,y) -> logIter(x,y) f() -> g() f() -> h() Subterm Criterion Processor: simple projection: pi(le#) = 1 problem: DPs: TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) inc(s(x)) -> s(inc(x)) inc(0()) -> s(0()) logarithm(x) -> logIter(x,0()) logIter(x,y) -> if(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) if(false(),b,x,y) -> logZeroError() if(true(),false(),x,s(y)) -> y if(true(),true(),x,y) -> logIter(x,y) f() -> g() f() -> h() Qed DPs: half#(s(s(x))) -> half#(x) TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) inc(s(x)) -> s(inc(x)) inc(0()) -> s(0()) logarithm(x) -> logIter(x,0()) logIter(x,y) -> if(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) if(false(),b,x,y) -> logZeroError() if(true(),false(),x,s(y)) -> y if(true(),true(),x,y) -> logIter(x,y) f() -> g() f() -> h() Subterm Criterion Processor: simple projection: pi(half#) = 0 problem: DPs: TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) inc(s(x)) -> s(inc(x)) inc(0()) -> s(0()) logarithm(x) -> logIter(x,0()) logIter(x,y) -> if(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) if(false(),b,x,y) -> logZeroError() if(true(),false(),x,s(y)) -> y if(true(),true(),x,y) -> logIter(x,y) f() -> g() f() -> h() Qed DPs: inc#(s(x)) -> inc#(x) TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) inc(s(x)) -> s(inc(x)) inc(0()) -> s(0()) logarithm(x) -> logIter(x,0()) logIter(x,y) -> if(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) if(false(),b,x,y) -> logZeroError() if(true(),false(),x,s(y)) -> y if(true(),true(),x,y) -> logIter(x,y) f() -> g() f() -> h() Subterm Criterion Processor: simple projection: pi(inc#) = 0 problem: DPs: TRS: half(0()) -> 0() half(s(0())) -> 0() half(s(s(x))) -> s(half(x)) le(0(),y) -> true() le(s(x),0()) -> false() le(s(x),s(y)) -> le(x,y) inc(s(x)) -> s(inc(x)) inc(0()) -> s(0()) logarithm(x) -> logIter(x,0()) logIter(x,y) -> if(le(s(0()),x),le(s(s(0())),x),half(x),inc(y)) if(false(),b,x,y) -> logZeroError() if(true(),false(),x,s(y)) -> y if(true(),true(),x,y) -> logIter(x,y) f() -> g() f() -> h() Qed