MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: +(X,0()) -> X +(X,s(Y)) -> s(+(X,Y)) double(X) -> +(X,X) f(0(),s(0()),X) -> f(X,double(X),X) g(X,Y) -> X g(X,Y) -> Y - Signature: {+/2,double/1,f/3,g/2} / {0/0,s/1} - Obligation: innermost runtime complexity wrt. defined symbols {+,double,f,g} and constructors {0,s} + 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)) double#(X) -> c_3(+#(X,X)) f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) g#(X,Y) -> c_5() g#(X,Y) -> c_6() Weak DPs and mark the set of starting terms. * Step 2: UsableRules MAYBE + Considered Problem: - Strict DPs: +#(X,0()) -> c_1() +#(X,s(Y)) -> c_2(+#(X,Y)) double#(X) -> c_3(+#(X,X)) f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) g#(X,Y) -> c_5() g#(X,Y) -> c_6() - Weak TRS: +(X,0()) -> X +(X,s(Y)) -> s(+(X,Y)) double(X) -> +(X,X) f(0(),s(0()),X) -> f(X,double(X),X) g(X,Y) -> X g(X,Y) -> Y - Signature: {+/2,double/1,f/3,g/2,+#/2,double#/1,f#/3,g#/2} / {0/0,s/1,c_1/0,c_2/1,c_3/1,c_4/2,c_5/0,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {+#,double#,f#,g#} and constructors {0,s} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: +(X,0()) -> X +(X,s(Y)) -> s(+(X,Y)) double(X) -> +(X,X) +#(X,0()) -> c_1() +#(X,s(Y)) -> c_2(+#(X,Y)) double#(X) -> c_3(+#(X,X)) f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) g#(X,Y) -> c_5() g#(X,Y) -> c_6() * Step 3: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: +#(X,0()) -> c_1() +#(X,s(Y)) -> c_2(+#(X,Y)) double#(X) -> c_3(+#(X,X)) f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) g#(X,Y) -> c_5() g#(X,Y) -> c_6() - Weak TRS: +(X,0()) -> X +(X,s(Y)) -> s(+(X,Y)) double(X) -> +(X,X) - Signature: {+/2,double/1,f/3,g/2,+#/2,double#/1,f#/3,g#/2} / {0/0,s/1,c_1/0,c_2/1,c_3/1,c_4/2,c_5/0,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {+#,double#,f#,g#} and constructors {0,s} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,5,6} by application of Pre({1,5,6}) = {2,3}. Here rules are labelled as follows: 1: +#(X,0()) -> c_1() 2: +#(X,s(Y)) -> c_2(+#(X,Y)) 3: double#(X) -> c_3(+#(X,X)) 4: f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) 5: g#(X,Y) -> c_5() 6: g#(X,Y) -> c_6() * Step 4: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: +#(X,s(Y)) -> c_2(+#(X,Y)) double#(X) -> c_3(+#(X,X)) f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) - Weak DPs: +#(X,0()) -> c_1() g#(X,Y) -> c_5() g#(X,Y) -> c_6() - Weak TRS: +(X,0()) -> X +(X,s(Y)) -> s(+(X,Y)) double(X) -> +(X,X) - Signature: {+/2,double/1,f/3,g/2,+#/2,double#/1,f#/3,g#/2} / {0/0,s/1,c_1/0,c_2/1,c_3/1,c_4/2,c_5/0,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {+#,double#,f#,g#} and constructors {0,s} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:+#(X,s(Y)) -> c_2(+#(X,Y)) -->_1 +#(X,0()) -> c_1():4 -->_1 +#(X,s(Y)) -> c_2(+#(X,Y)):1 2:S:double#(X) -> c_3(+#(X,X)) -->_1 +#(X,0()) -> c_1():4 -->_1 +#(X,s(Y)) -> c_2(+#(X,Y)):1 3:S:f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) -->_1 f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)):3 -->_2 double#(X) -> c_3(+#(X,X)):2 4:W:+#(X,0()) -> c_1() 5:W:g#(X,Y) -> c_5() 6:W:g#(X,Y) -> c_6() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 6: g#(X,Y) -> c_6() 5: g#(X,Y) -> c_5() 4: +#(X,0()) -> c_1() * Step 5: Decompose MAYBE + Considered Problem: - Strict DPs: +#(X,s(Y)) -> c_2(+#(X,Y)) double#(X) -> c_3(+#(X,X)) f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) - Weak TRS: +(X,0()) -> X +(X,s(Y)) -> s(+(X,Y)) double(X) -> +(X,X) - Signature: {+/2,double/1,f/3,g/2,+#/2,double#/1,f#/3,g#/2} / {0/0,s/1,c_1/0,c_2/1,c_3/1,c_4/2,c_5/0,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {+#,double#,f#,g#} and constructors {0,s} + Applied Processor: Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd} + Details: We analyse the complexity of following sub-problems (R) and (S). Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component. Problem (R) - Strict DPs: +#(X,s(Y)) -> c_2(+#(X,Y)) - Weak DPs: double#(X) -> c_3(+#(X,X)) f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) - Weak TRS: +(X,0()) -> X +(X,s(Y)) -> s(+(X,Y)) double(X) -> +(X,X) - Signature: {+/2,double/1,f/3,g/2,+#/2,double#/1,f#/3,g#/2} / {0/0,s/1,c_1/0,c_2/1,c_3/1,c_4/2,c_5/0,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {+#,double#,f#,g#} and constructors {0,s} Problem (S) - Strict DPs: double#(X) -> c_3(+#(X,X)) f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) - Weak DPs: +#(X,s(Y)) -> c_2(+#(X,Y)) - Weak TRS: +(X,0()) -> X +(X,s(Y)) -> s(+(X,Y)) double(X) -> +(X,X) - Signature: {+/2,double/1,f/3,g/2,+#/2,double#/1,f#/3,g#/2} / {0/0,s/1,c_1/0,c_2/1,c_3/1,c_4/2,c_5/0,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {+#,double#,f#,g#} and constructors {0,s} ** Step 5.a:1: Failure MAYBE + Considered Problem: - Strict DPs: +#(X,s(Y)) -> c_2(+#(X,Y)) - Weak DPs: double#(X) -> c_3(+#(X,X)) f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) - Weak TRS: +(X,0()) -> X +(X,s(Y)) -> s(+(X,Y)) double(X) -> +(X,X) - Signature: {+/2,double/1,f/3,g/2,+#/2,double#/1,f#/3,g#/2} / {0/0,s/1,c_1/0,c_2/1,c_3/1,c_4/2,c_5/0,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {+#,double#,f#,g#} and constructors {0,s} + Applied Processor: EmptyProcessor + Details: The problem is still open. ** Step 5.b:1: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: double#(X) -> c_3(+#(X,X)) f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) - Weak DPs: +#(X,s(Y)) -> c_2(+#(X,Y)) - Weak TRS: +(X,0()) -> X +(X,s(Y)) -> s(+(X,Y)) double(X) -> +(X,X) - Signature: {+/2,double/1,f/3,g/2,+#/2,double#/1,f#/3,g#/2} / {0/0,s/1,c_1/0,c_2/1,c_3/1,c_4/2,c_5/0,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {+#,double#,f#,g#} and constructors {0,s} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1} by application of Pre({1}) = {2}. Here rules are labelled as follows: 1: double#(X) -> c_3(+#(X,X)) 2: f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) 3: +#(X,s(Y)) -> c_2(+#(X,Y)) ** Step 5.b:2: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) - Weak DPs: +#(X,s(Y)) -> c_2(+#(X,Y)) double#(X) -> c_3(+#(X,X)) - Weak TRS: +(X,0()) -> X +(X,s(Y)) -> s(+(X,Y)) double(X) -> +(X,X) - Signature: {+/2,double/1,f/3,g/2,+#/2,double#/1,f#/3,g#/2} / {0/0,s/1,c_1/0,c_2/1,c_3/1,c_4/2,c_5/0,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {+#,double#,f#,g#} and constructors {0,s} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) -->_2 double#(X) -> c_3(+#(X,X)):3 -->_1 f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)):1 2:W:+#(X,s(Y)) -> c_2(+#(X,Y)) -->_1 +#(X,s(Y)) -> c_2(+#(X,Y)):2 3:W:double#(X) -> c_3(+#(X,X)) -->_1 +#(X,s(Y)) -> c_2(+#(X,Y)):2 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 3: double#(X) -> c_3(+#(X,X)) 2: +#(X,s(Y)) -> c_2(+#(X,Y)) ** Step 5.b:3: SimplifyRHS MAYBE + Considered Problem: - Strict DPs: f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) - Weak TRS: +(X,0()) -> X +(X,s(Y)) -> s(+(X,Y)) double(X) -> +(X,X) - Signature: {+/2,double/1,f/3,g/2,+#/2,double#/1,f#/3,g#/2} / {0/0,s/1,c_1/0,c_2/1,c_3/1,c_4/2,c_5/0,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {+#,double#,f#,g#} and constructors {0,s} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)) -->_1 f#(0(),s(0()),X) -> c_4(f#(X,double(X),X),double#(X)):1 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: f#(0(),s(0()),X) -> c_4(f#(X,double(X),X)) ** Step 5.b:4: Failure MAYBE + Considered Problem: - Strict DPs: f#(0(),s(0()),X) -> c_4(f#(X,double(X),X)) - Weak TRS: +(X,0()) -> X +(X,s(Y)) -> s(+(X,Y)) double(X) -> +(X,X) - Signature: {+/2,double/1,f/3,g/2,+#/2,double#/1,f#/3,g#/2} / {0/0,s/1,c_1/0,c_2/1,c_3/1,c_4/1,c_5/0,c_6/0} - Obligation: innermost runtime complexity wrt. defined symbols {+#,double#,f#,g#} and constructors {0,s} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE