MAYBE Problem: plus(0(),x) -> x plus(s(x),y) -> s(plus(p(s(x)),y)) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(p(s(x)),y)) p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) fac(0(),x) -> x fac(s(x),y) -> fac(p(s(x)),times(s(x),y)) factorial(x) -> fac(x,s(0())) Proof: DP Processor: DPs: plus#(s(x),y) -> p#(s(x)) plus#(s(x),y) -> plus#(p(s(x)),y) times#(s(x),y) -> p#(s(x)) times#(s(x),y) -> times#(p(s(x)),y) times#(s(x),y) -> plus#(y,times(p(s(x)),y)) p#(s(s(x))) -> p#(s(x)) fac#(s(x),y) -> times#(s(x),y) fac#(s(x),y) -> p#(s(x)) fac#(s(x),y) -> fac#(p(s(x)),times(s(x),y)) factorial#(x) -> fac#(x,s(0())) TRS: plus(0(),x) -> x plus(s(x),y) -> s(plus(p(s(x)),y)) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(p(s(x)),y)) p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) fac(0(),x) -> x fac(s(x),y) -> fac(p(s(x)),times(s(x),y)) factorial(x) -> fac(x,s(0())) Usable Rule Processor: DPs: plus#(s(x),y) -> p#(s(x)) plus#(s(x),y) -> plus#(p(s(x)),y) times#(s(x),y) -> p#(s(x)) times#(s(x),y) -> times#(p(s(x)),y) times#(s(x),y) -> plus#(y,times(p(s(x)),y)) p#(s(s(x))) -> p#(s(x)) fac#(s(x),y) -> times#(s(x),y) fac#(s(x),y) -> p#(s(x)) fac#(s(x),y) -> fac#(p(s(x)),times(s(x),y)) factorial#(x) -> fac#(x,s(0())) TRS: f12(x,y) -> x f12(x,y) -> y p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(p(s(x)),y)) plus(0(),x) -> x plus(s(x),y) -> s(plus(p(s(x)),y)) CDG Processor: DPs: plus#(s(x),y) -> p#(s(x)) plus#(s(x),y) -> plus#(p(s(x)),y) times#(s(x),y) -> p#(s(x)) times#(s(x),y) -> times#(p(s(x)),y) times#(s(x),y) -> plus#(y,times(p(s(x)),y)) p#(s(s(x))) -> p#(s(x)) fac#(s(x),y) -> times#(s(x),y) fac#(s(x),y) -> p#(s(x)) fac#(s(x),y) -> fac#(p(s(x)),times(s(x),y)) factorial#(x) -> fac#(x,s(0())) TRS: f12(x,y) -> x f12(x,y) -> y p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(p(s(x)),y)) plus(0(),x) -> x plus(s(x),y) -> s(plus(p(s(x)),y)) graph: factorial#(x) -> fac#(x,s(0())) -> fac#(s(x),y) -> times#(s(x),y) factorial#(x) -> fac#(x,s(0())) -> fac#(s(x),y) -> p#(s(x)) factorial#(x) -> fac#(x,s(0())) -> fac#(s(x),y) -> fac#(p(s(x)),times(s(x),y)) fac#(s(x),y) -> fac#(p(s(x)),times(s(x),y)) -> fac#(s(x),y) -> times#(s(x),y) fac#(s(x),y) -> fac#(p(s(x)),times(s(x),y)) -> fac#(s(x),y) -> p#(s(x)) fac#(s(x),y) -> fac#(p(s(x)),times(s(x),y)) -> fac#(s(x),y) -> fac#(p(s(x)),times(s(x),y)) fac#(s(x),y) -> times#(s(x),y) -> times#(s(x),y) -> p#(s(x)) fac#(s(x),y) -> times#(s(x),y) -> times#(s(x),y) -> times#(p(s(x)),y) fac#(s(x),y) -> times#(s(x),y) -> times#(s(x),y) -> plus#(y,times(p(s(x)),y)) fac#(s(x),y) -> p#(s(x)) -> p#(s(s(x))) -> p#(s(x)) times#(s(x),y) -> times#(p(s(x)),y) -> times#(s(x),y) -> p#(s(x)) times#(s(x),y) -> times#(p(s(x)),y) -> times#(s(x),y) -> times#(p(s(x)),y) times#(s(x),y) -> times#(p(s(x)),y) -> times#(s(x),y) -> plus#(y,times(p(s(x)),y)) times#(s(x),y) -> p#(s(x)) -> p#(s(s(x))) -> p#(s(x)) times#(s(x),y) -> plus#(y,times(p(s(x)),y)) -> plus#(s(x),y) -> p#(s(x)) times#(s(x),y) -> plus#(y,times(p(s(x)),y)) -> plus#(s(x),y) -> plus#(p(s(x)),y) p#(s(s(x))) -> p#(s(x)) -> p#(s(s(x))) -> p#(s(x)) plus#(s(x),y) -> p#(s(x)) -> p#(s(s(x))) -> p#(s(x)) plus#(s(x),y) -> plus#(p(s(x)),y) -> plus#(s(x),y) -> p#(s(x)) plus#(s(x),y) -> plus#(p(s(x)),y) -> plus#(s(x),y) -> plus#(p(s(x)),y) Restore Modifier: DPs: plus#(s(x),y) -> p#(s(x)) plus#(s(x),y) -> plus#(p(s(x)),y) times#(s(x),y) -> p#(s(x)) times#(s(x),y) -> times#(p(s(x)),y) times#(s(x),y) -> plus#(y,times(p(s(x)),y)) p#(s(s(x))) -> p#(s(x)) fac#(s(x),y) -> times#(s(x),y) fac#(s(x),y) -> p#(s(x)) fac#(s(x),y) -> fac#(p(s(x)),times(s(x),y)) factorial#(x) -> fac#(x,s(0())) TRS: plus(0(),x) -> x plus(s(x),y) -> s(plus(p(s(x)),y)) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(p(s(x)),y)) p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) fac(0(),x) -> x fac(s(x),y) -> fac(p(s(x)),times(s(x),y)) factorial(x) -> fac(x,s(0())) SCC Processor: #sccs: 4 #rules: 4 #arcs: 20/100 DPs: fac#(s(x),y) -> fac#(p(s(x)),times(s(x),y)) TRS: plus(0(),x) -> x plus(s(x),y) -> s(plus(p(s(x)),y)) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(p(s(x)),y)) p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) fac(0(),x) -> x fac(s(x),y) -> fac(p(s(x)),times(s(x),y)) factorial(x) -> fac(x,s(0())) Open DPs: times#(s(x),y) -> times#(p(s(x)),y) TRS: plus(0(),x) -> x plus(s(x),y) -> s(plus(p(s(x)),y)) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(p(s(x)),y)) p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) fac(0(),x) -> x fac(s(x),y) -> fac(p(s(x)),times(s(x),y)) factorial(x) -> fac(x,s(0())) Open DPs: plus#(s(x),y) -> plus#(p(s(x)),y) TRS: plus(0(),x) -> x plus(s(x),y) -> s(plus(p(s(x)),y)) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(p(s(x)),y)) p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) fac(0(),x) -> x fac(s(x),y) -> fac(p(s(x)),times(s(x),y)) factorial(x) -> fac(x,s(0())) Open DPs: p#(s(s(x))) -> p#(s(x)) TRS: plus(0(),x) -> x plus(s(x),y) -> s(plus(p(s(x)),y)) times(0(),y) -> 0() times(s(x),y) -> plus(y,times(p(s(x)),y)) p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) fac(0(),x) -> x fac(s(x),y) -> fac(p(s(x)),times(s(x),y)) factorial(x) -> fac(x,s(0())) Open