MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: *(x,0()) -> 0() *(x,s(y)) -> +(*(x,y),x) +(x,0()) -> x +(x,s(y)) -> s(+(x,y)) -(x,0()) -> x -(s(x),s(y)) -> -(x,y) fact(x) -> iffact(x,ge(x,s(s(0())))) ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) iffact(x,false()) -> s(0()) iffact(x,true()) -> *(x,fact(-(x,s(0())))) - Signature: {*/2,+/2,-/2,fact/1,ge/2,iffact/2} / {0/0,false/0,s/1,true/0} - Obligation: innermost runtime complexity wrt. defined symbols {*,+,-,fact,ge,iffact} and constructors {0,false,s,true} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs *#(x,0()) -> c_1() *#(x,s(y)) -> c_2(+#(*(x,y),x),*#(x,y)) +#(x,0()) -> c_3() +#(x,s(y)) -> c_4(+#(x,y)) -#(x,0()) -> c_5() -#(s(x),s(y)) -> c_6(-#(x,y)) fact#(x) -> c_7(iffact#(x,ge(x,s(s(0())))),ge#(x,s(s(0())))) ge#(x,0()) -> c_8() ge#(0(),s(y)) -> c_9() ge#(s(x),s(y)) -> c_10(ge#(x,y)) iffact#(x,false()) -> c_11() iffact#(x,true()) -> c_12(*#(x,fact(-(x,s(0())))),fact#(-(x,s(0()))),-#(x,s(0()))) Weak DPs and mark the set of starting terms. * Step 2: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: *#(x,0()) -> c_1() *#(x,s(y)) -> c_2(+#(*(x,y),x),*#(x,y)) +#(x,0()) -> c_3() +#(x,s(y)) -> c_4(+#(x,y)) -#(x,0()) -> c_5() -#(s(x),s(y)) -> c_6(-#(x,y)) fact#(x) -> c_7(iffact#(x,ge(x,s(s(0())))),ge#(x,s(s(0())))) ge#(x,0()) -> c_8() ge#(0(),s(y)) -> c_9() ge#(s(x),s(y)) -> c_10(ge#(x,y)) iffact#(x,false()) -> c_11() iffact#(x,true()) -> c_12(*#(x,fact(-(x,s(0())))),fact#(-(x,s(0()))),-#(x,s(0()))) - Weak TRS: *(x,0()) -> 0() *(x,s(y)) -> +(*(x,y),x) +(x,0()) -> x +(x,s(y)) -> s(+(x,y)) -(x,0()) -> x -(s(x),s(y)) -> -(x,y) fact(x) -> iffact(x,ge(x,s(s(0())))) ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) iffact(x,false()) -> s(0()) iffact(x,true()) -> *(x,fact(-(x,s(0())))) - Signature: {*/2,+/2,-/2,fact/1,ge/2,iffact/2,*#/2,+#/2,-#/2,fact#/1,ge#/2,iffact#/2} / {0/0,false/0,s/1,true/0,c_1/0 ,c_2/2,c_3/0,c_4/1,c_5/0,c_6/1,c_7/2,c_8/0,c_9/0,c_10/1,c_11/0,c_12/3} - Obligation: innermost runtime complexity wrt. defined symbols {*#,+#,-#,fact#,ge#,iffact#} and constructors {0,false,s ,true} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,3,5,8,9,11} by application of Pre({1,3,5,8,9,11}) = {2,4,6,7,10,12}. Here rules are labelled as follows: 1: *#(x,0()) -> c_1() 2: *#(x,s(y)) -> c_2(+#(*(x,y),x),*#(x,y)) 3: +#(x,0()) -> c_3() 4: +#(x,s(y)) -> c_4(+#(x,y)) 5: -#(x,0()) -> c_5() 6: -#(s(x),s(y)) -> c_6(-#(x,y)) 7: fact#(x) -> c_7(iffact#(x,ge(x,s(s(0())))),ge#(x,s(s(0())))) 8: ge#(x,0()) -> c_8() 9: ge#(0(),s(y)) -> c_9() 10: ge#(s(x),s(y)) -> c_10(ge#(x,y)) 11: iffact#(x,false()) -> c_11() 12: iffact#(x,true()) -> c_12(*#(x,fact(-(x,s(0())))),fact#(-(x,s(0()))),-#(x,s(0()))) * Step 3: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: *#(x,s(y)) -> c_2(+#(*(x,y),x),*#(x,y)) +#(x,s(y)) -> c_4(+#(x,y)) -#(s(x),s(y)) -> c_6(-#(x,y)) fact#(x) -> c_7(iffact#(x,ge(x,s(s(0())))),ge#(x,s(s(0())))) ge#(s(x),s(y)) -> c_10(ge#(x,y)) iffact#(x,true()) -> c_12(*#(x,fact(-(x,s(0())))),fact#(-(x,s(0()))),-#(x,s(0()))) - Weak DPs: *#(x,0()) -> c_1() +#(x,0()) -> c_3() -#(x,0()) -> c_5() ge#(x,0()) -> c_8() ge#(0(),s(y)) -> c_9() iffact#(x,false()) -> c_11() - Weak TRS: *(x,0()) -> 0() *(x,s(y)) -> +(*(x,y),x) +(x,0()) -> x +(x,s(y)) -> s(+(x,y)) -(x,0()) -> x -(s(x),s(y)) -> -(x,y) fact(x) -> iffact(x,ge(x,s(s(0())))) ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) iffact(x,false()) -> s(0()) iffact(x,true()) -> *(x,fact(-(x,s(0())))) - Signature: {*/2,+/2,-/2,fact/1,ge/2,iffact/2,*#/2,+#/2,-#/2,fact#/1,ge#/2,iffact#/2} / {0/0,false/0,s/1,true/0,c_1/0 ,c_2/2,c_3/0,c_4/1,c_5/0,c_6/1,c_7/2,c_8/0,c_9/0,c_10/1,c_11/0,c_12/3} - Obligation: innermost runtime complexity wrt. defined symbols {*#,+#,-#,fact#,ge#,iffact#} and constructors {0,false,s ,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:*#(x,s(y)) -> c_2(+#(*(x,y),x),*#(x,y)) -->_1 +#(x,s(y)) -> c_4(+#(x,y)):2 -->_1 +#(x,0()) -> c_3():8 -->_2 *#(x,0()) -> c_1():7 -->_2 *#(x,s(y)) -> c_2(+#(*(x,y),x),*#(x,y)):1 2:S:+#(x,s(y)) -> c_4(+#(x,y)) -->_1 +#(x,0()) -> c_3():8 -->_1 +#(x,s(y)) -> c_4(+#(x,y)):2 3:S:-#(s(x),s(y)) -> c_6(-#(x,y)) -->_1 -#(x,0()) -> c_5():9 -->_1 -#(s(x),s(y)) -> c_6(-#(x,y)):3 4:S:fact#(x) -> c_7(iffact#(x,ge(x,s(s(0())))),ge#(x,s(s(0())))) -->_1 iffact#(x,true()) -> c_12(*#(x,fact(-(x,s(0())))),fact#(-(x,s(0()))),-#(x,s(0()))):6 -->_2 ge#(s(x),s(y)) -> c_10(ge#(x,y)):5 -->_1 iffact#(x,false()) -> c_11():12 -->_2 ge#(0(),s(y)) -> c_9():11 5:S:ge#(s(x),s(y)) -> c_10(ge#(x,y)) -->_1 ge#(0(),s(y)) -> c_9():11 -->_1 ge#(x,0()) -> c_8():10 -->_1 ge#(s(x),s(y)) -> c_10(ge#(x,y)):5 6:S:iffact#(x,true()) -> c_12(*#(x,fact(-(x,s(0())))),fact#(-(x,s(0()))),-#(x,s(0()))) -->_1 *#(x,0()) -> c_1():7 -->_2 fact#(x) -> c_7(iffact#(x,ge(x,s(s(0())))),ge#(x,s(s(0())))):4 -->_3 -#(s(x),s(y)) -> c_6(-#(x,y)):3 -->_1 *#(x,s(y)) -> c_2(+#(*(x,y),x),*#(x,y)):1 7:W:*#(x,0()) -> c_1() 8:W:+#(x,0()) -> c_3() 9:W:-#(x,0()) -> c_5() 10:W:ge#(x,0()) -> c_8() 11:W:ge#(0(),s(y)) -> c_9() 12:W:iffact#(x,false()) -> c_11() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 12: iffact#(x,false()) -> c_11() 10: ge#(x,0()) -> c_8() 11: ge#(0(),s(y)) -> c_9() 9: -#(x,0()) -> c_5() 7: *#(x,0()) -> c_1() 8: +#(x,0()) -> c_3() * Step 4: Failure MAYBE + Considered Problem: - Strict DPs: *#(x,s(y)) -> c_2(+#(*(x,y),x),*#(x,y)) +#(x,s(y)) -> c_4(+#(x,y)) -#(s(x),s(y)) -> c_6(-#(x,y)) fact#(x) -> c_7(iffact#(x,ge(x,s(s(0())))),ge#(x,s(s(0())))) ge#(s(x),s(y)) -> c_10(ge#(x,y)) iffact#(x,true()) -> c_12(*#(x,fact(-(x,s(0())))),fact#(-(x,s(0()))),-#(x,s(0()))) - Weak TRS: *(x,0()) -> 0() *(x,s(y)) -> +(*(x,y),x) +(x,0()) -> x +(x,s(y)) -> s(+(x,y)) -(x,0()) -> x -(s(x),s(y)) -> -(x,y) fact(x) -> iffact(x,ge(x,s(s(0())))) ge(x,0()) -> true() ge(0(),s(y)) -> false() ge(s(x),s(y)) -> ge(x,y) iffact(x,false()) -> s(0()) iffact(x,true()) -> *(x,fact(-(x,s(0())))) - Signature: {*/2,+/2,-/2,fact/1,ge/2,iffact/2,*#/2,+#/2,-#/2,fact#/1,ge#/2,iffact#/2} / {0/0,false/0,s/1,true/0,c_1/0 ,c_2/2,c_3/0,c_4/1,c_5/0,c_6/1,c_7/2,c_8/0,c_9/0,c_10/1,c_11/0,c_12/3} - Obligation: innermost runtime complexity wrt. defined symbols {*#,+#,-#,fact#,ge#,iffact#} and constructors {0,false,s ,true} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE