MAYBE Problem: lt(0(),s(x)) -> true() lt(x,0()) -> false() lt(s(x),s(y)) -> lt(x,y) fac(x) -> help(x,0()) help(x,c) -> if(lt(c,x),x,c) if(true(),x,c) -> times(s(c),help(x,s(c))) if(false(),x,c) -> s(0()) Proof: DP Processor: DPs: lt#(s(x),s(y)) -> lt#(x,y) fac#(x) -> help#(x,0()) help#(x,c) -> lt#(c,x) help#(x,c) -> if#(lt(c,x),x,c) if#(true(),x,c) -> help#(x,s(c)) TRS: lt(0(),s(x)) -> true() lt(x,0()) -> false() lt(s(x),s(y)) -> lt(x,y) fac(x) -> help(x,0()) help(x,c) -> if(lt(c,x),x,c) if(true(),x,c) -> times(s(c),help(x,s(c))) if(false(),x,c) -> s(0()) Usable Rule Processor: DPs: lt#(s(x),s(y)) -> lt#(x,y) fac#(x) -> help#(x,0()) help#(x,c) -> lt#(c,x) help#(x,c) -> if#(lt(c,x),x,c) if#(true(),x,c) -> help#(x,s(c)) TRS: lt(0(),s(x)) -> true() lt(x,0()) -> false() lt(s(x),s(y)) -> lt(x,y) Open