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: f13(x,y) -> x f13(x,y) -> y lt(0(),s(x)) -> true() lt(x,0()) -> false() lt(s(x),s(y)) -> lt(x,y) TDG 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: f13(x,y) -> x f13(x,y) -> y lt(0(),s(x)) -> true() lt(x,0()) -> false() lt(s(x),s(y)) -> lt(x,y) graph: if#(true(),x,c) -> help#(x,s(c)) -> help#(x,c) -> if#(lt(c,x),x,c) if#(true(),x,c) -> help#(x,s(c)) -> help#(x,c) -> lt#(c,x) help#(x,c) -> if#(lt(c,x),x,c) -> if#(true(),x,c) -> help#(x,s(c)) help#(x,c) -> lt#(c,x) -> lt#(s(x),s(y)) -> lt#(x,y) fac#(x) -> help#(x,0()) -> help#(x,c) -> if#(lt(c,x),x,c) fac#(x) -> help#(x,0()) -> help#(x,c) -> lt#(c,x) lt#(s(x),s(y)) -> lt#(x,y) -> lt#(s(x),s(y)) -> lt#(x,y) Restore Modifier: 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()) SCC Processor: #sccs: 2 #rules: 3 #arcs: 7/25 DPs: if#(true(),x,c) -> help#(x,s(c)) help#(x,c) -> if#(lt(c,x),x,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()) Open DPs: lt#(s(x),s(y)) -> lt#(x,y) 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()) Matrix Interpretation Processor: dimension: 1 interpretation: [lt#](x0, x1) = x1 + 1, [times](x0, x1) = 1, [if](x0, x1, x2) = 1, [help](x0, x1) = 1, [fac](x0) = 1, [false] = 0, [true] = 0, [lt](x0, x1) = 0, [s](x0) = x0 + 1, [0] = 0 orientation: lt#(s(x),s(y)) = y + 2 >= y + 1 = lt#(x,y) lt(0(),s(x)) = 0 >= 0 = true() lt(x,0()) = 0 >= 0 = false() lt(s(x),s(y)) = 0 >= 0 = lt(x,y) fac(x) = 1 >= 1 = help(x,0()) help(x,c) = 1 >= 1 = if(lt(c,x),x,c) if(true(),x,c) = 1 >= 1 = times(s(c),help(x,s(c))) if(false(),x,c) = 1 >= 1 = s(0()) problem: DPs: 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()) Qed