MAYBE Problem: fact(X) -> if(zero(X),n__s(0()),n__prod(X,fact(p(X)))) add(0(),X) -> X add(s(X),Y) -> s(add(X,Y)) prod(0(),X) -> 0() prod(s(X),Y) -> add(Y,prod(X,Y)) if(true(),X,Y) -> activate(X) if(false(),X,Y) -> activate(Y) zero(0()) -> true() zero(s(X)) -> false() p(s(X)) -> X s(X) -> n__s(X) prod(X1,X2) -> n__prod(X1,X2) activate(n__s(X)) -> s(X) activate(n__prod(X1,X2)) -> prod(X1,X2) activate(X) -> X Proof: DP Processor: DPs: fact#(X) -> p#(X) fact#(X) -> fact#(p(X)) fact#(X) -> zero#(X) fact#(X) -> if#(zero(X),n__s(0()),n__prod(X,fact(p(X)))) add#(s(X),Y) -> add#(X,Y) add#(s(X),Y) -> s#(add(X,Y)) prod#(s(X),Y) -> prod#(X,Y) prod#(s(X),Y) -> add#(Y,prod(X,Y)) if#(true(),X,Y) -> activate#(X) if#(false(),X,Y) -> activate#(Y) activate#(n__s(X)) -> s#(X) activate#(n__prod(X1,X2)) -> prod#(X1,X2) TRS: fact(X) -> if(zero(X),n__s(0()),n__prod(X,fact(p(X)))) add(0(),X) -> X add(s(X),Y) -> s(add(X,Y)) prod(0(),X) -> 0() prod(s(X),Y) -> add(Y,prod(X,Y)) if(true(),X,Y) -> activate(X) if(false(),X,Y) -> activate(Y) zero(0()) -> true() zero(s(X)) -> false() p(s(X)) -> X s(X) -> n__s(X) prod(X1,X2) -> n__prod(X1,X2) activate(n__s(X)) -> s(X) activate(n__prod(X1,X2)) -> prod(X1,X2) activate(X) -> X ADG Processor: DPs: fact#(X) -> p#(X) fact#(X) -> fact#(p(X)) fact#(X) -> zero#(X) fact#(X) -> if#(zero(X),n__s(0()),n__prod(X,fact(p(X)))) add#(s(X),Y) -> add#(X,Y) add#(s(X),Y) -> s#(add(X,Y)) prod#(s(X),Y) -> prod#(X,Y) prod#(s(X),Y) -> add#(Y,prod(X,Y)) if#(true(),X,Y) -> activate#(X) if#(false(),X,Y) -> activate#(Y) activate#(n__s(X)) -> s#(X) activate#(n__prod(X1,X2)) -> prod#(X1,X2) TRS: fact(X) -> if(zero(X),n__s(0()),n__prod(X,fact(p(X)))) add(0(),X) -> X add(s(X),Y) -> s(add(X,Y)) prod(0(),X) -> 0() prod(s(X),Y) -> add(Y,prod(X,Y)) if(true(),X,Y) -> activate(X) if(false(),X,Y) -> activate(Y) zero(0()) -> true() zero(s(X)) -> false() p(s(X)) -> X s(X) -> n__s(X) prod(X1,X2) -> n__prod(X1,X2) activate(n__s(X)) -> s(X) activate(n__prod(X1,X2)) -> prod(X1,X2) activate(X) -> X graph: activate#(n__prod(X1,X2)) -> prod#(X1,X2) -> prod#(s(X),Y) -> prod#(X,Y) activate#(n__prod(X1,X2)) -> prod#(X1,X2) -> prod#(s(X),Y) -> add#(Y,prod(X,Y)) prod#(s(X),Y) -> prod#(X,Y) -> prod#(s(X),Y) -> prod#(X,Y) prod#(s(X),Y) -> prod#(X,Y) -> prod#(s(X),Y) -> add#(Y,prod(X,Y)) prod#(s(X),Y) -> add#(Y,prod(X,Y)) -> add#(s(X),Y) -> add#(X,Y) prod#(s(X),Y) -> add#(Y,prod(X,Y)) -> add#(s(X),Y) -> s#(add(X,Y)) add#(s(X),Y) -> add#(X,Y) -> add#(s(X),Y) -> add#(X,Y) add#(s(X),Y) -> add#(X,Y) -> add#(s(X),Y) -> s#(add(X,Y)) if#(false(),X,Y) -> activate#(Y) -> activate#(n__s(X)) -> s#(X) if#(false(),X,Y) -> activate#(Y) -> activate#(n__prod(X1,X2)) -> prod#(X1,X2) if#(true(),X,Y) -> activate#(X) -> activate#(n__s(X)) -> s#(X) if#(true(),X,Y) -> activate#(X) -> activate#(n__prod(X1,X2)) -> prod#(X1,X2) fact#(X) -> if#(zero(X),n__s(0()),n__prod(X,fact(p(X)))) -> if#(true(),X,Y) -> activate#(X) fact#(X) -> if#(zero(X),n__s(0()),n__prod(X,fact(p(X)))) -> if#(false(),X,Y) -> activate#(Y) fact#(X) -> fact#(p(X)) -> fact#(X) -> p#(X) fact#(X) -> fact#(p(X)) -> fact#(X) -> fact#(p(X)) fact#(X) -> fact#(p(X)) -> fact#(X) -> zero#(X) fact#(X) -> fact#(p(X)) -> fact#(X) -> if#(zero(X),n__s(0()),n__prod(X,fact(p(X)))) Restore Modifier: DPs: fact#(X) -> p#(X) fact#(X) -> fact#(p(X)) fact#(X) -> zero#(X) fact#(X) -> if#(zero(X),n__s(0()),n__prod(X,fact(p(X)))) add#(s(X),Y) -> add#(X,Y) add#(s(X),Y) -> s#(add(X,Y)) prod#(s(X),Y) -> prod#(X,Y) prod#(s(X),Y) -> add#(Y,prod(X,Y)) if#(true(),X,Y) -> activate#(X) if#(false(),X,Y) -> activate#(Y) activate#(n__s(X)) -> s#(X) activate#(n__prod(X1,X2)) -> prod#(X1,X2) TRS: fact(X) -> if(zero(X),n__s(0()),n__prod(X,fact(p(X)))) add(0(),X) -> X add(s(X),Y) -> s(add(X,Y)) prod(0(),X) -> 0() prod(s(X),Y) -> add(Y,prod(X,Y)) if(true(),X,Y) -> activate(X) if(false(),X,Y) -> activate(Y) zero(0()) -> true() zero(s(X)) -> false() p(s(X)) -> X s(X) -> n__s(X) prod(X1,X2) -> n__prod(X1,X2) activate(n__s(X)) -> s(X) activate(n__prod(X1,X2)) -> prod(X1,X2) activate(X) -> X SCC Processor: #sccs: 3 #rules: 3 #arcs: 18/144 DPs: fact#(X) -> fact#(p(X)) TRS: fact(X) -> if(zero(X),n__s(0()),n__prod(X,fact(p(X)))) add(0(),X) -> X add(s(X),Y) -> s(add(X,Y)) prod(0(),X) -> 0() prod(s(X),Y) -> add(Y,prod(X,Y)) if(true(),X,Y) -> activate(X) if(false(),X,Y) -> activate(Y) zero(0()) -> true() zero(s(X)) -> false() p(s(X)) -> X s(X) -> n__s(X) prod(X1,X2) -> n__prod(X1,X2) activate(n__s(X)) -> s(X) activate(n__prod(X1,X2)) -> prod(X1,X2) activate(X) -> X Open DPs: prod#(s(X),Y) -> prod#(X,Y) TRS: fact(X) -> if(zero(X),n__s(0()),n__prod(X,fact(p(X)))) add(0(),X) -> X add(s(X),Y) -> s(add(X,Y)) prod(0(),X) -> 0() prod(s(X),Y) -> add(Y,prod(X,Y)) if(true(),X,Y) -> activate(X) if(false(),X,Y) -> activate(Y) zero(0()) -> true() zero(s(X)) -> false() p(s(X)) -> X s(X) -> n__s(X) prod(X1,X2) -> n__prod(X1,X2) activate(n__s(X)) -> s(X) activate(n__prod(X1,X2)) -> prod(X1,X2) activate(X) -> X Open DPs: add#(s(X),Y) -> add#(X,Y) TRS: fact(X) -> if(zero(X),n__s(0()),n__prod(X,fact(p(X)))) add(0(),X) -> X add(s(X),Y) -> s(add(X,Y)) prod(0(),X) -> 0() prod(s(X),Y) -> add(Y,prod(X,Y)) if(true(),X,Y) -> activate(X) if(false(),X,Y) -> activate(Y) zero(0()) -> true() zero(s(X)) -> false() p(s(X)) -> X s(X) -> n__s(X) prod(X1,X2) -> n__prod(X1,X2) activate(n__s(X)) -> s(X) activate(n__prod(X1,X2)) -> prod(X1,X2) activate(X) -> X Open