Input TRS: 1: a__fact(X) -> a__if(a__zero(mark(X)),s(0()),prod(X,fact(p(X)))) 2: a__add(0(),X) -> mark(X) 3: a__add(s(X),Y) -> s(a__add(mark(X),mark(Y))) 4: a__prod(0(),X) -> 0() 5: a__prod(s(X),Y) -> a__add(mark(Y),a__prod(mark(X),mark(Y))) 6: a__if(true(),X,Y) -> mark(X) 7: a__if(false(),X,Y) -> mark(Y) 8: a__zero(0()) -> true() 9: a__zero(s(X)) -> false() 10: a__p(s(X)) -> mark(X) 11: mark(fact(X)) -> a__fact(mark(X)) 12: mark(if(X1,X2,X3)) -> a__if(mark(X1),X2,X3) 13: mark(zero(X)) -> a__zero(mark(X)) 14: mark(prod(X1,X2)) -> a__prod(mark(X1),mark(X2)) 15: mark(p(X)) -> a__p(mark(X)) 16: mark(add(X1,X2)) -> a__add(mark(X1),mark(X2)) 17: mark(s(X)) -> s(mark(X)) 18: mark(0()) -> 0() 19: mark(true()) -> true() 20: mark(false()) -> false() 21: a__fact(X) -> fact(X) 22: a__if(X1,X2,X3) -> if(X1,X2,X3) 23: a__zero(X) -> zero(X) 24: a__prod(X1,X2) -> prod(X1,X2) 25: a__p(X) -> p(X) 26: a__add(X1,X2) -> add(X1,X2) Number of strict rules: 26 Direct Order(PosReal,>,Poly) ... failed. Freezing ... failed. Dependency Pairs: #1: #a__add(0(),X) -> #mark(X) #2: #a__if(true(),X,Y) -> #mark(X) #3: #mark(zero(X)) -> #a__zero(mark(X)) #4: #mark(zero(X)) -> #mark(X) #5: #mark(fact(X)) -> #a__fact(mark(X)) #6: #mark(fact(X)) -> #mark(X) #7: #mark(if(X1,X2,X3)) -> #a__if(mark(X1),X2,X3) #8: #mark(if(X1,X2,X3)) -> #mark(X1) #9: #mark(prod(X1,X2)) -> #a__prod(mark(X1),mark(X2)) #10: #mark(prod(X1,X2)) -> #mark(X1) #11: #mark(prod(X1,X2)) -> #mark(X2) #12: #a__if(false(),X,Y) -> #mark(Y) #13: #a__p(s(X)) -> #mark(X) #14: #a__prod(s(X),Y) -> #a__add(mark(Y),a__prod(mark(X),mark(Y))) #15: #a__prod(s(X),Y) -> #mark(Y) #16: #a__prod(s(X),Y) -> #a__prod(mark(X),mark(Y)) #17: #a__prod(s(X),Y) -> #mark(X) #18: #a__prod(s(X),Y) -> #mark(Y) #19: #mark(s(X)) -> #mark(X) #20: #mark(add(X1,X2)) -> #a__add(mark(X1),mark(X2)) #21: #mark(add(X1,X2)) -> #mark(X1) #22: #mark(add(X1,X2)) -> #mark(X2) #23: #a__add(s(X),Y) -> #a__add(mark(X),mark(Y)) #24: #a__add(s(X),Y) -> #mark(X) #25: #a__add(s(X),Y) -> #mark(Y) #26: #a__fact(X) -> #a__if(a__zero(mark(X)),s(0()),prod(X,fact(p(X)))) #27: #a__fact(X) -> #a__zero(mark(X)) #28: #a__fact(X) -> #mark(X) #29: #mark(p(X)) -> #a__p(mark(X)) #30: #mark(p(X)) -> #mark(X) Number of SCCs: 1, DPs: 28, edges: 295 SCC { #1 #2 #4..26 #28..30 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... succeeded. zero(x1) weight: (/ 1 8) + x1 prod(x1,x2) weight: max{x2, (/ 1 8) + x1} s(x1) weight: x1 a__prod(x1,x2) weight: max{x2, (/ 1 8) + x1} #a__zero(x1) weight: 0 a__fact(x1) weight: (/ 1 2) + x1 #a__add(x1,x2) weight: max{(/ 1 8) + x2, (/ 1 8) + x1} a__add(x1,x2) weight: max{x2, x1} false() weight: (/ 1 8) a__p(x1) weight: x1 true() weight: (/ 1 8) a__zero(x1) weight: (/ 1 8) + x1 p(x1) weight: x1 #mark(x1) weight: (/ 1 8) + x1 0() weight: (/ 1 8) if(x1,x2,x3) weight: max{x3, (/ 3 8) + x2, (/ 1 4) + x1} #a__fact(x1) weight: (/ 5 8) + x1 fact(x1) weight: (/ 1 2) + x1 mark(x1) weight: x1 #a__p(x1) weight: (/ 1 8) + x1 #a__if(x1,x2,x3) weight: max{0, (/ 1 8) + x3, (/ 1 4) + x2} #a__prod(x1,x2) weight: max{(/ 1 8) + x2, (/ 1 4) + x1} add(x1,x2) weight: max{x2, x1} a__if(x1,x2,x3) weight: max{x3, (/ 3 8) + x2, (/ 1 4) + x1} Usable rules: { 1..26 } Removed DPs: #2 #4 #6 #8 #10 #17 #28 Number of SCCs: 1, DPs: 21, edges: 144 SCC { #1 #5 #7 #9 #11..16 #18..26 #29 #30 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... succeeded. zero(x1) weight: (/ 1 8) prod(x1,x2) weight: max{0, x2} s(x1) weight: x1 a__prod(x1,x2) weight: max{0, x2} #a__zero(x1) weight: 0 a__fact(x1) weight: (/ 1 4) #a__add(x1,x2) weight: max{(/ 1 4) + x2, (/ 1 4) + x1} a__add(x1,x2) weight: max{x2, x1} false() weight: (/ 1 8) a__p(x1) weight: (/ 1 4) + x1 true() weight: (/ 1 8) a__zero(x1) weight: (/ 1 8) p(x1) weight: (/ 1 4) + x1 #mark(x1) weight: (/ 1 4) + x1 0() weight: 0 if(x1,x2,x3) weight: max{x3, (/ 1 8) + x2, (/ 1 8) + x1} #a__fact(x1) weight: (/ 1 2) fact(x1) weight: (/ 1 4) mark(x1) weight: x1 #a__p(x1) weight: (/ 3 8) + x1 #a__if(x1,x2,x3) weight: max{0, (/ 1 4) + x3, (/ 1 8) + x2} #a__prod(x1,x2) weight: max{0, (/ 1 4) + x2} add(x1,x2) weight: max{x2, x1} a__if(x1,x2,x3) weight: max{x3, (/ 1 8) + x2, (/ 1 8) + x1} Usable rules: { 1..26 } Removed DPs: #13 #29 #30 Number of SCCs: 1, DPs: 18, edges: 103 SCC { #1 #5 #7 #9 #11 #12 #14..16 #18..26 } Removing DPs: Order(PosReal,>,Sum)... Order(PosReal,>,Max)... QLPOpS... Order(PosReal,>,MaxSum)... QWPOpS(PosReal,>,MaxSum)... Order(PosReal,>,Sum-Sum; PosReal,≥,Sum-Sum)... Order(PosReal,>,Sum-Sum; NegReal,≥,Sum)... Order(PosReal,>,MaxSum-Sum; NegReal,≥,Sum)... failed. Removing edges: failed. Finding a loop... failed. MAYBE