MAYBE Problem: and(true(),X) -> X and(false(),Y) -> false() if(true(),X,Y) -> X if(false(),X,Y) -> Y add(0(),X) -> X add(s(X),Y) -> s(add(X,Y)) first(0(),X) -> nil() first(s(X),cons(Y,Z)) -> cons(Y,first(X,Z)) from(X) -> cons(X,from(s(X))) Proof: DP Processor: DPs: add#(s(X),Y) -> add#(X,Y) first#(s(X),cons(Y,Z)) -> first#(X,Z) from#(X) -> from#(s(X)) TRS: and(true(),X) -> X and(false(),Y) -> false() if(true(),X,Y) -> X if(false(),X,Y) -> Y add(0(),X) -> X add(s(X),Y) -> s(add(X,Y)) first(0(),X) -> nil() first(s(X),cons(Y,Z)) -> cons(Y,first(X,Z)) from(X) -> cons(X,from(s(X))) Usable Rule Processor: DPs: add#(s(X),Y) -> add#(X,Y) first#(s(X),cons(Y,Z)) -> first#(X,Z) from#(X) -> from#(s(X)) TRS: ADG Processor: DPs: add#(s(X),Y) -> add#(X,Y) first#(s(X),cons(Y,Z)) -> first#(X,Z) from#(X) -> from#(s(X)) TRS: graph: from#(X) -> from#(s(X)) -> from#(X) -> from#(s(X)) first#(s(X),cons(Y,Z)) -> first#(X,Z) -> first#(s(X),cons(Y,Z)) -> first#(X,Z) add#(s(X),Y) -> add#(X,Y) -> add#(s(X),Y) -> add#(X,Y) Restore Modifier: DPs: add#(s(X),Y) -> add#(X,Y) first#(s(X),cons(Y,Z)) -> first#(X,Z) from#(X) -> from#(s(X)) TRS: and(true(),X) -> X and(false(),Y) -> false() if(true(),X,Y) -> X if(false(),X,Y) -> Y add(0(),X) -> X add(s(X),Y) -> s(add(X,Y)) first(0(),X) -> nil() first(s(X),cons(Y,Z)) -> cons(Y,first(X,Z)) from(X) -> cons(X,from(s(X))) SCC Processor: #sccs: 3 #rules: 3 #arcs: 3/9 DPs: add#(s(X),Y) -> add#(X,Y) TRS: and(true(),X) -> X and(false(),Y) -> false() if(true(),X,Y) -> X if(false(),X,Y) -> Y add(0(),X) -> X add(s(X),Y) -> s(add(X,Y)) first(0(),X) -> nil() first(s(X),cons(Y,Z)) -> cons(Y,first(X,Z)) from(X) -> cons(X,from(s(X))) Open DPs: first#(s(X),cons(Y,Z)) -> first#(X,Z) TRS: and(true(),X) -> X and(false(),Y) -> false() if(true(),X,Y) -> X if(false(),X,Y) -> Y add(0(),X) -> X add(s(X),Y) -> s(add(X,Y)) first(0(),X) -> nil() first(s(X),cons(Y,Z)) -> cons(Y,first(X,Z)) from(X) -> cons(X,from(s(X))) Open DPs: from#(X) -> from#(s(X)) TRS: and(true(),X) -> X and(false(),Y) -> false() if(true(),X,Y) -> X if(false(),X,Y) -> Y add(0(),X) -> X add(s(X),Y) -> s(add(X,Y)) first(0(),X) -> nil() first(s(X),cons(Y,Z)) -> cons(Y,first(X,Z)) from(X) -> cons(X,from(s(X))) Open