YES 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())) TDG 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())) graph: factorial#(x) -> fac#(x,s(0())) -> fac#(s(x),y) -> fac#(p(s(x)),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) -> times#(s(x),y) 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) -> 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) -> times#(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) -> 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) -> p#(s(x)) 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) -> plus#(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) -> times#(p(s(x)),y) -> times#(s(x),y) -> p#(s(x)) 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) -> plus#(p(s(x)),y) times#(s(x),y) -> plus#(y,times(p(s(x)),y)) -> plus#(s(x),y) -> p#(s(x)) 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) -> plus#(p(s(x)),y) plus#(s(x),y) -> plus#(p(s(x)),y) -> plus#(s(x),y) -> p#(s(x)) 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())) Usable Rule Processor: DPs: fac#(s(x),y) -> fac#(p(s(x)),times(s(x),y)) TRS: 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)) p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) times(0(),y) -> 0() Arctic Interpretation Processor: dimension: 1 usable rules: p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) interpretation: [times](x0, x1) = x0 + x1 + 0, [plus](x0, x1) = -1x0 + 4, [p](x0) = -1x0 + 0, [fac#](x0, x1) = x0 + -16, [0] = 0, [s](x0) = 2x0 + 1 orientation: fac#(s(x),y) = 2x + 1 >= 1x + 0 = fac#(p(s(x)),times(s(x),y)) times(s(x),y) = 2x + y + 1 >= -1y + 4 = plus(y,times(p(s(x)),y)) plus(0(),x) = 4 >= x = x plus(s(x),y) = 1x + 4 >= 2x + 6 = s(plus(p(s(x)),y)) p(s(0())) = 1 >= 0 = 0() p(s(s(x))) = 3x + 2 >= 3x + 2 = s(p(s(x))) times(0(),y) = y + 0 >= 0 = 0() problem: DPs: TRS: 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)) p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) times(0(),y) -> 0() Qed 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())) Usable Rule Processor: DPs: times#(s(x),y) -> times#(p(s(x)),y) TRS: p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) Semantic Labeling Processor: dimension: 2 usable rules: p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) interpretation: [0 1] [p](x0) = [0 1]x0, [0] [0] = [0], [1 0] [1] [s](x0) = [1 0]x0 + [0] labeled: s p 0 usable (for model): s p 0 argument filtering: pi(0) = [] pi(s) = [] pi(p) = [] pi(times#) = 0 precedence: p > times# ~ s ~ 0 problem: DPs: TRS: p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) Qed 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())) Usable Rule Processor: DPs: plus#(s(x),y) -> plus#(p(s(x)),y) TRS: p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) Semantic Labeling Processor: dimension: 2 usable rules: p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) interpretation: [0 1] [p](x0) = [0 1]x0, [0] [0] = [0], [1 0] [1] [s](x0) = [1 0]x0 + [0] labeled: s p 0 usable (for model): s p 0 argument filtering: pi(0) = [] pi(s) = [] pi(p) = [] pi(plus#) = 0 precedence: p > plus# ~ s ~ 0 problem: DPs: TRS: p(s(0())) -> 0() p(s(s(x))) -> s(p(s(x))) Qed 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())) Subterm Criterion Processor: simple projection: pi(p#) = 0 problem: DPs: 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())) Qed