MAYBE Problem: p(0()) -> 0() p(s(X)) -> X leq(0(),Y) -> true() leq(s(X),0()) -> false() leq(s(X),s(Y)) -> leq(X,Y) if(true(),X,Y) -> X if(false(),X,Y) -> Y diff(X,Y) -> if(leq(X,Y),0(),s(diff(p(X),Y))) Proof: DP Processor: DPs: leq#(s(X),s(Y)) -> leq#(X,Y) diff#(X,Y) -> p#(X) diff#(X,Y) -> diff#(p(X),Y) diff#(X,Y) -> leq#(X,Y) diff#(X,Y) -> if#(leq(X,Y),0(),s(diff(p(X),Y))) TRS: p(0()) -> 0() p(s(X)) -> X leq(0(),Y) -> true() leq(s(X),0()) -> false() leq(s(X),s(Y)) -> leq(X,Y) if(true(),X,Y) -> X if(false(),X,Y) -> Y diff(X,Y) -> if(leq(X,Y),0(),s(diff(p(X),Y))) TDG Processor: DPs: leq#(s(X),s(Y)) -> leq#(X,Y) diff#(X,Y) -> p#(X) diff#(X,Y) -> diff#(p(X),Y) diff#(X,Y) -> leq#(X,Y) diff#(X,Y) -> if#(leq(X,Y),0(),s(diff(p(X),Y))) TRS: p(0()) -> 0() p(s(X)) -> X leq(0(),Y) -> true() leq(s(X),0()) -> false() leq(s(X),s(Y)) -> leq(X,Y) if(true(),X,Y) -> X if(false(),X,Y) -> Y diff(X,Y) -> if(leq(X,Y),0(),s(diff(p(X),Y))) graph: diff#(X,Y) -> diff#(p(X),Y) -> diff#(X,Y) -> if#(leq(X,Y),0(),s(diff(p(X),Y))) diff#(X,Y) -> diff#(p(X),Y) -> diff#(X,Y) -> leq#(X,Y) diff#(X,Y) -> diff#(p(X),Y) -> diff#(X,Y) -> diff#(p(X),Y) diff#(X,Y) -> diff#(p(X),Y) -> diff#(X,Y) -> p#(X) diff#(X,Y) -> leq#(X,Y) -> leq#(s(X),s(Y)) -> leq#(X,Y) leq#(s(X),s(Y)) -> leq#(X,Y) -> leq#(s(X),s(Y)) -> leq#(X,Y) Restore Modifier: DPs: leq#(s(X),s(Y)) -> leq#(X,Y) diff#(X,Y) -> p#(X) diff#(X,Y) -> diff#(p(X),Y) diff#(X,Y) -> leq#(X,Y) diff#(X,Y) -> if#(leq(X,Y),0(),s(diff(p(X),Y))) TRS: p(0()) -> 0() p(s(X)) -> X leq(0(),Y) -> true() leq(s(X),0()) -> false() leq(s(X),s(Y)) -> leq(X,Y) if(true(),X,Y) -> X if(false(),X,Y) -> Y diff(X,Y) -> if(leq(X,Y),0(),s(diff(p(X),Y))) SCC Processor: #sccs: 2 #rules: 2 #arcs: 6/25 DPs: diff#(X,Y) -> diff#(p(X),Y) TRS: p(0()) -> 0() p(s(X)) -> X leq(0(),Y) -> true() leq(s(X),0()) -> false() leq(s(X),s(Y)) -> leq(X,Y) if(true(),X,Y) -> X if(false(),X,Y) -> Y diff(X,Y) -> if(leq(X,Y),0(),s(diff(p(X),Y))) Open DPs: leq#(s(X),s(Y)) -> leq#(X,Y) TRS: p(0()) -> 0() p(s(X)) -> X leq(0(),Y) -> true() leq(s(X),0()) -> false() leq(s(X),s(Y)) -> leq(X,Y) if(true(),X,Y) -> X if(false(),X,Y) -> Y diff(X,Y) -> if(leq(X,Y),0(),s(diff(p(X),Y))) Open