MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: double(x) -> g(d(),x) f(s(x),y) -> f(half(s(x)),double(y)) f(s(0()),y) -> y g(x,0()) -> 0() g(d(),s(x)) -> s(s(g(d(),x))) g(h(),s(0())) -> 0() g(h(),s(s(x))) -> s(g(h(),x)) half(x) -> g(h(),x) id(x) -> f(x,s(0())) - Signature: {double/1,f/2,g/2,half/1,id/1} / {0/0,d/0,h/0,s/1} - Obligation: innermost runtime complexity wrt. defined symbols {double,f,g,half,id} and constructors {0,d,h,s} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs double#(x) -> c_1(g#(d(),x)) f#(s(x),y) -> c_2(f#(half(s(x)),double(y)),half#(s(x)),double#(y)) f#(s(0()),y) -> c_3() g#(x,0()) -> c_4() g#(d(),s(x)) -> c_5(g#(d(),x)) g#(h(),s(0())) -> c_6() g#(h(),s(s(x))) -> c_7(g#(h(),x)) half#(x) -> c_8(g#(h(),x)) id#(x) -> c_9(f#(x,s(0()))) Weak DPs and mark the set of starting terms. * Step 2: UsableRules MAYBE + Considered Problem: - Strict DPs: double#(x) -> c_1(g#(d(),x)) f#(s(x),y) -> c_2(f#(half(s(x)),double(y)),half#(s(x)),double#(y)) f#(s(0()),y) -> c_3() g#(x,0()) -> c_4() g#(d(),s(x)) -> c_5(g#(d(),x)) g#(h(),s(0())) -> c_6() g#(h(),s(s(x))) -> c_7(g#(h(),x)) half#(x) -> c_8(g#(h(),x)) id#(x) -> c_9(f#(x,s(0()))) - Weak TRS: double(x) -> g(d(),x) f(s(x),y) -> f(half(s(x)),double(y)) f(s(0()),y) -> y g(x,0()) -> 0() g(d(),s(x)) -> s(s(g(d(),x))) g(h(),s(0())) -> 0() g(h(),s(s(x))) -> s(g(h(),x)) half(x) -> g(h(),x) id(x) -> f(x,s(0())) - Signature: {double/1,f/2,g/2,half/1,id/1,double#/1,f#/2,g#/2,half#/1,id#/1} / {0/0,d/0,h/0,s/1,c_1/1,c_2/3,c_3/0,c_4/0 ,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1} - Obligation: innermost runtime complexity wrt. defined symbols {double#,f#,g#,half#,id#} and constructors {0,d,h,s} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: double(x) -> g(d(),x) g(x,0()) -> 0() g(d(),s(x)) -> s(s(g(d(),x))) g(h(),s(0())) -> 0() g(h(),s(s(x))) -> s(g(h(),x)) half(x) -> g(h(),x) double#(x) -> c_1(g#(d(),x)) f#(s(x),y) -> c_2(f#(half(s(x)),double(y)),half#(s(x)),double#(y)) f#(s(0()),y) -> c_3() g#(x,0()) -> c_4() g#(d(),s(x)) -> c_5(g#(d(),x)) g#(h(),s(0())) -> c_6() g#(h(),s(s(x))) -> c_7(g#(h(),x)) half#(x) -> c_8(g#(h(),x)) id#(x) -> c_9(f#(x,s(0()))) * Step 3: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: double#(x) -> c_1(g#(d(),x)) f#(s(x),y) -> c_2(f#(half(s(x)),double(y)),half#(s(x)),double#(y)) f#(s(0()),y) -> c_3() g#(x,0()) -> c_4() g#(d(),s(x)) -> c_5(g#(d(),x)) g#(h(),s(0())) -> c_6() g#(h(),s(s(x))) -> c_7(g#(h(),x)) half#(x) -> c_8(g#(h(),x)) id#(x) -> c_9(f#(x,s(0()))) - Weak TRS: double(x) -> g(d(),x) g(x,0()) -> 0() g(d(),s(x)) -> s(s(g(d(),x))) g(h(),s(0())) -> 0() g(h(),s(s(x))) -> s(g(h(),x)) half(x) -> g(h(),x) - Signature: {double/1,f/2,g/2,half/1,id/1,double#/1,f#/2,g#/2,half#/1,id#/1} / {0/0,d/0,h/0,s/1,c_1/1,c_2/3,c_3/0,c_4/0 ,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1} - Obligation: innermost runtime complexity wrt. defined symbols {double#,f#,g#,half#,id#} and constructors {0,d,h,s} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {3,4,6} by application of Pre({3,4,6}) = {1,2,5,7,8,9}. Here rules are labelled as follows: 1: double#(x) -> c_1(g#(d(),x)) 2: f#(s(x),y) -> c_2(f#(half(s(x)),double(y)),half#(s(x)),double#(y)) 3: f#(s(0()),y) -> c_3() 4: g#(x,0()) -> c_4() 5: g#(d(),s(x)) -> c_5(g#(d(),x)) 6: g#(h(),s(0())) -> c_6() 7: g#(h(),s(s(x))) -> c_7(g#(h(),x)) 8: half#(x) -> c_8(g#(h(),x)) 9: id#(x) -> c_9(f#(x,s(0()))) * Step 4: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: double#(x) -> c_1(g#(d(),x)) f#(s(x),y) -> c_2(f#(half(s(x)),double(y)),half#(s(x)),double#(y)) g#(d(),s(x)) -> c_5(g#(d(),x)) g#(h(),s(s(x))) -> c_7(g#(h(),x)) half#(x) -> c_8(g#(h(),x)) id#(x) -> c_9(f#(x,s(0()))) - Weak DPs: f#(s(0()),y) -> c_3() g#(x,0()) -> c_4() g#(h(),s(0())) -> c_6() - Weak TRS: double(x) -> g(d(),x) g(x,0()) -> 0() g(d(),s(x)) -> s(s(g(d(),x))) g(h(),s(0())) -> 0() g(h(),s(s(x))) -> s(g(h(),x)) half(x) -> g(h(),x) - Signature: {double/1,f/2,g/2,half/1,id/1,double#/1,f#/2,g#/2,half#/1,id#/1} / {0/0,d/0,h/0,s/1,c_1/1,c_2/3,c_3/0,c_4/0 ,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1} - Obligation: innermost runtime complexity wrt. defined symbols {double#,f#,g#,half#,id#} and constructors {0,d,h,s} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:double#(x) -> c_1(g#(d(),x)) -->_1 g#(d(),s(x)) -> c_5(g#(d(),x)):3 -->_1 g#(x,0()) -> c_4():8 2:S:f#(s(x),y) -> c_2(f#(half(s(x)),double(y)),half#(s(x)),double#(y)) -->_2 half#(x) -> c_8(g#(h(),x)):5 -->_1 f#(s(0()),y) -> c_3():7 -->_1 f#(s(x),y) -> c_2(f#(half(s(x)),double(y)),half#(s(x)),double#(y)):2 -->_3 double#(x) -> c_1(g#(d(),x)):1 3:S:g#(d(),s(x)) -> c_5(g#(d(),x)) -->_1 g#(x,0()) -> c_4():8 -->_1 g#(d(),s(x)) -> c_5(g#(d(),x)):3 4:S:g#(h(),s(s(x))) -> c_7(g#(h(),x)) -->_1 g#(h(),s(0())) -> c_6():9 -->_1 g#(x,0()) -> c_4():8 -->_1 g#(h(),s(s(x))) -> c_7(g#(h(),x)):4 5:S:half#(x) -> c_8(g#(h(),x)) -->_1 g#(h(),s(0())) -> c_6():9 -->_1 g#(x,0()) -> c_4():8 -->_1 g#(h(),s(s(x))) -> c_7(g#(h(),x)):4 6:S:id#(x) -> c_9(f#(x,s(0()))) -->_1 f#(s(0()),y) -> c_3():7 -->_1 f#(s(x),y) -> c_2(f#(half(s(x)),double(y)),half#(s(x)),double#(y)):2 7:W:f#(s(0()),y) -> c_3() 8:W:g#(x,0()) -> c_4() 9:W:g#(h(),s(0())) -> c_6() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 7: f#(s(0()),y) -> c_3() 9: g#(h(),s(0())) -> c_6() 8: g#(x,0()) -> c_4() * Step 5: RemoveHeads MAYBE + Considered Problem: - Strict DPs: double#(x) -> c_1(g#(d(),x)) f#(s(x),y) -> c_2(f#(half(s(x)),double(y)),half#(s(x)),double#(y)) g#(d(),s(x)) -> c_5(g#(d(),x)) g#(h(),s(s(x))) -> c_7(g#(h(),x)) half#(x) -> c_8(g#(h(),x)) id#(x) -> c_9(f#(x,s(0()))) - Weak TRS: double(x) -> g(d(),x) g(x,0()) -> 0() g(d(),s(x)) -> s(s(g(d(),x))) g(h(),s(0())) -> 0() g(h(),s(s(x))) -> s(g(h(),x)) half(x) -> g(h(),x) - Signature: {double/1,f/2,g/2,half/1,id/1,double#/1,f#/2,g#/2,half#/1,id#/1} / {0/0,d/0,h/0,s/1,c_1/1,c_2/3,c_3/0,c_4/0 ,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1} - Obligation: innermost runtime complexity wrt. defined symbols {double#,f#,g#,half#,id#} and constructors {0,d,h,s} + Applied Processor: RemoveHeads + Details: Consider the dependency graph 1:S:double#(x) -> c_1(g#(d(),x)) -->_1 g#(d(),s(x)) -> c_5(g#(d(),x)):3 2:S:f#(s(x),y) -> c_2(f#(half(s(x)),double(y)),half#(s(x)),double#(y)) -->_2 half#(x) -> c_8(g#(h(),x)):5 -->_1 f#(s(x),y) -> c_2(f#(half(s(x)),double(y)),half#(s(x)),double#(y)):2 -->_3 double#(x) -> c_1(g#(d(),x)):1 3:S:g#(d(),s(x)) -> c_5(g#(d(),x)) -->_1 g#(d(),s(x)) -> c_5(g#(d(),x)):3 4:S:g#(h(),s(s(x))) -> c_7(g#(h(),x)) -->_1 g#(h(),s(s(x))) -> c_7(g#(h(),x)):4 5:S:half#(x) -> c_8(g#(h(),x)) -->_1 g#(h(),s(s(x))) -> c_7(g#(h(),x)):4 6:S:id#(x) -> c_9(f#(x,s(0()))) -->_1 f#(s(x),y) -> c_2(f#(half(s(x)),double(y)),half#(s(x)),double#(y)):2 Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts). [(6,id#(x) -> c_9(f#(x,s(0()))))] * Step 6: Failure MAYBE + Considered Problem: - Strict DPs: double#(x) -> c_1(g#(d(),x)) f#(s(x),y) -> c_2(f#(half(s(x)),double(y)),half#(s(x)),double#(y)) g#(d(),s(x)) -> c_5(g#(d(),x)) g#(h(),s(s(x))) -> c_7(g#(h(),x)) half#(x) -> c_8(g#(h(),x)) - Weak TRS: double(x) -> g(d(),x) g(x,0()) -> 0() g(d(),s(x)) -> s(s(g(d(),x))) g(h(),s(0())) -> 0() g(h(),s(s(x))) -> s(g(h(),x)) half(x) -> g(h(),x) - Signature: {double/1,f/2,g/2,half/1,id/1,double#/1,f#/2,g#/2,half#/1,id#/1} / {0/0,d/0,h/0,s/1,c_1/1,c_2/3,c_3/0,c_4/0 ,c_5/1,c_6/0,c_7/1,c_8/1,c_9/1} - Obligation: innermost runtime complexity wrt. defined symbols {double#,f#,g#,half#,id#} and constructors {0,d,h,s} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE