MAYBE Problem: lt(0(),s(x)) -> true() lt(x,0()) -> false() lt(s(x),s(y)) -> lt(x,y) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) fac(x) -> loop(x,s(0()),s(0())) loop(x,c,y) -> if(lt(x,c),x,c,y) if(false(),x,c,y) -> loop(x,s(c),times(y,s(c))) if(true(),x,c,y) -> y Proof: DP Processor: DPs: lt#(s(x),s(y)) -> lt#(x,y) times#(s(x),y) -> times#(x,y) times#(s(x),y) -> plus#(y,times(x,y)) plus#(s(x),y) -> plus#(x,y) fac#(x) -> loop#(x,s(0()),s(0())) loop#(x,c,y) -> lt#(x,c) loop#(x,c,y) -> if#(lt(x,c),x,c,y) if#(false(),x,c,y) -> times#(y,s(c)) if#(false(),x,c,y) -> loop#(x,s(c),times(y,s(c))) TRS: lt(0(),s(x)) -> true() lt(x,0()) -> false() lt(s(x),s(y)) -> lt(x,y) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) fac(x) -> loop(x,s(0()),s(0())) loop(x,c,y) -> if(lt(x,c),x,c,y) if(false(),x,c,y) -> loop(x,s(c),times(y,s(c))) if(true(),x,c,y) -> y TDG Processor: DPs: lt#(s(x),s(y)) -> lt#(x,y) times#(s(x),y) -> times#(x,y) times#(s(x),y) -> plus#(y,times(x,y)) plus#(s(x),y) -> plus#(x,y) fac#(x) -> loop#(x,s(0()),s(0())) loop#(x,c,y) -> lt#(x,c) loop#(x,c,y) -> if#(lt(x,c),x,c,y) if#(false(),x,c,y) -> times#(y,s(c)) if#(false(),x,c,y) -> loop#(x,s(c),times(y,s(c))) TRS: lt(0(),s(x)) -> true() lt(x,0()) -> false() lt(s(x),s(y)) -> lt(x,y) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) fac(x) -> loop(x,s(0()),s(0())) loop(x,c,y) -> if(lt(x,c),x,c,y) if(false(),x,c,y) -> loop(x,s(c),times(y,s(c))) if(true(),x,c,y) -> y graph: if#(false(),x,c,y) -> loop#(x,s(c),times(y,s(c))) -> loop#(x,c,y) -> if#(lt(x,c),x,c,y) if#(false(),x,c,y) -> loop#(x,s(c),times(y,s(c))) -> loop#(x,c,y) -> lt#(x,c) if#(false(),x,c,y) -> times#(y,s(c)) -> times#(s(x),y) -> plus#(y,times(x,y)) if#(false(),x,c,y) -> times#(y,s(c)) -> times#(s(x),y) -> times#(x,y) loop#(x,c,y) -> if#(lt(x,c),x,c,y) -> if#(false(),x,c,y) -> loop#(x,s(c),times(y,s(c))) loop#(x,c,y) -> if#(lt(x,c),x,c,y) -> if#(false(),x,c,y) -> times#(y,s(c)) loop#(x,c,y) -> lt#(x,c) -> lt#(s(x),s(y)) -> lt#(x,y) fac#(x) -> loop#(x,s(0()),s(0())) -> loop#(x,c,y) -> if#(lt(x,c),x,c,y) fac#(x) -> loop#(x,s(0()),s(0())) -> loop#(x,c,y) -> lt#(x,c) plus#(s(x),y) -> plus#(x,y) -> plus#(s(x),y) -> plus#(x,y) times#(s(x),y) -> plus#(y,times(x,y)) -> plus#(s(x),y) -> plus#(x,y) times#(s(x),y) -> times#(x,y) -> times#(s(x),y) -> plus#(y,times(x,y)) times#(s(x),y) -> times#(x,y) -> times#(s(x),y) -> times#(x,y) lt#(s(x),s(y)) -> lt#(x,y) -> lt#(s(x),s(y)) -> lt#(x,y) SCC Processor: #sccs: 4 #rules: 5 #arcs: 14/81 DPs: if#(false(),x,c,y) -> loop#(x,s(c),times(y,s(c))) loop#(x,c,y) -> if#(lt(x,c),x,c,y) TRS: lt(0(),s(x)) -> true() lt(x,0()) -> false() lt(s(x),s(y)) -> lt(x,y) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) fac(x) -> loop(x,s(0()),s(0())) loop(x,c,y) -> if(lt(x,c),x,c,y) if(false(),x,c,y) -> loop(x,s(c),times(y,s(c))) if(true(),x,c,y) -> y Open DPs: times#(s(x),y) -> times#(x,y) TRS: lt(0(),s(x)) -> true() lt(x,0()) -> false() lt(s(x),s(y)) -> lt(x,y) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) fac(x) -> loop(x,s(0()),s(0())) loop(x,c,y) -> if(lt(x,c),x,c,y) if(false(),x,c,y) -> loop(x,s(c),times(y,s(c))) if(true(),x,c,y) -> y Subterm Criterion Processor: simple projection: pi(times#) = 0 problem: DPs: TRS: lt(0(),s(x)) -> true() lt(x,0()) -> false() lt(s(x),s(y)) -> lt(x,y) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) fac(x) -> loop(x,s(0()),s(0())) loop(x,c,y) -> if(lt(x,c),x,c,y) if(false(),x,c,y) -> loop(x,s(c),times(y,s(c))) if(true(),x,c,y) -> y Qed DPs: plus#(s(x),y) -> plus#(x,y) TRS: lt(0(),s(x)) -> true() lt(x,0()) -> false() lt(s(x),s(y)) -> lt(x,y) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) fac(x) -> loop(x,s(0()),s(0())) loop(x,c,y) -> if(lt(x,c),x,c,y) if(false(),x,c,y) -> loop(x,s(c),times(y,s(c))) if(true(),x,c,y) -> y Subterm Criterion Processor: simple projection: pi(plus#) = 0 problem: DPs: TRS: lt(0(),s(x)) -> true() lt(x,0()) -> false() lt(s(x),s(y)) -> lt(x,y) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) fac(x) -> loop(x,s(0()),s(0())) loop(x,c,y) -> if(lt(x,c),x,c,y) if(false(),x,c,y) -> loop(x,s(c),times(y,s(c))) if(true(),x,c,y) -> y Qed 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) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) fac(x) -> loop(x,s(0()),s(0())) loop(x,c,y) -> if(lt(x,c),x,c,y) if(false(),x,c,y) -> loop(x,s(c),times(y,s(c))) if(true(),x,c,y) -> y Subterm Criterion Processor: simple projection: pi(lt#) = 1 problem: DPs: TRS: lt(0(),s(x)) -> true() lt(x,0()) -> false() lt(s(x),s(y)) -> lt(x,y) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(x,y)) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) fac(x) -> loop(x,s(0()),s(0())) loop(x,c,y) -> if(lt(x,c),x,c,y) if(false(),x,c,y) -> loop(x,s(c),times(y,s(c))) if(true(),x,c,y) -> y Qed