WORST_CASE(?,O(n^2)) * Step 1: DependencyPairs WORST_CASE(?,O(n^2)) + Considered Problem: - Strict TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1} / {mark/1,ok/1} - Obligation: innermost runtime complexity wrt. defined symbols {active,f,g,proper,top} and constructors {mark,ok} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) g#(ok(X)) -> c_7(g#(X)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) Weak DPs and mark the set of starting terms. * Step 2: UsableRules WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) g#(ok(X)) -> c_7(g#(X)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) g#(ok(X)) -> c_7(g#(X)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) * Step 3: Decompose WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) g#(ok(X)) -> c_7(g#(X)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + 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: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) g#(ok(X)) -> c_7(g#(X)) - Weak DPs: proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} Problem (S) - Strict DPs: proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) g#(ok(X)) -> c_7(g#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} ** Step 3.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) g#(ok(X)) -> c_7(g#(X)) - Weak DPs: proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 7: g#(ok(X)) -> c_7(g#(X)) The strictly oriented rules are moved into the weak component. *** Step 3.a:1.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) g#(ok(X)) -> c_7(g#(X)) - Weak DPs: proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 1 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_1) = {1,2}, uargs(c_2) = {1,3}, uargs(c_3) = {1,2}, uargs(c_4) = {1}, uargs(c_5) = {1}, uargs(c_6) = {1}, uargs(c_7) = {1}, uargs(c_8) = {1,2,3}, uargs(c_9) = {1,2}, uargs(c_10) = {1,2}, uargs(c_11) = {1,2} Following symbols are considered usable: {active,f,g,proper,active#,f#,g#,proper#,top#} TcT has computed the following interpretation: p(active) = [0 0] x1 + [0] [0 2] [0] p(f) = [1 0] x1 + [0] [0 1] [0] p(g) = [3 0] x1 + [0] [0 3] [0] p(mark) = [0 0] x1 + [0] [0 1] [0] p(ok) = [0 2] x1 + [0] [0 1] [1] p(proper) = [0] [0] p(top) = [1 0] x1 + [1] [0 2] [2] p(active#) = [0 1] x1 + [0] [0 1] [2] p(f#) = [0] [0] p(g#) = [0 1] x1 + [0] [0 2] [0] p(proper#) = [0 0] x1 + [0] [1 0] [2] p(top#) = [2 1] x1 + [1] [0 2] [0] p(c_1) = [2 2] x1 + [1 0] x2 + [0] [1 2] [0 0] [2] p(c_2) = [1 0] x1 + [1 1] x3 + [0] [0 1] [0 1] [1] p(c_3) = [1 0] x1 + [1 0] x2 + [0] [0 0] [3 0] [0] p(c_4) = [2 0] x1 + [0] [0 0] [0] p(c_5) = [1 1] x1 + [0] [0 0] [0] p(c_6) = [1 0] x1 + [0] [0 1] [0] p(c_7) = [1 0] x1 + [0] [0 1] [0] p(c_8) = [1 0] x1 + [1 0] x2 + [2 0] x3 + [0] [2 1] [0 0] [0 0] [0] p(c_9) = [1 0] x1 + [2 0] x2 + [0] [0 0] [0 0] [2] p(c_10) = [1 0] x1 + [2 0] x2 + [0] [0 0] [0 0] [0] p(c_11) = [2 0] x1 + [1 0] x2 + [0] [0 0] [1 1] [0] Following rules are strictly oriented: g#(ok(X)) = [0 1] X + [1] [0 2] [2] > [0 1] X + [0] [0 2] [0] = c_7(g#(X)) Following rules are (at-least) weakly oriented: active#(f(X1,X2)) = [0 1] X1 + [0] [0 1] [2] >= [0 1] X1 + [0] [0 0] [2] = c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) = [0 3] X + [0] [0 3] [2] >= [0 3] X + [0] [0 2] [1] = c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) = [0 3] X + [0] [0 3] [2] >= [0 3] X + [0] [0 3] [0] = c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) = [0] [0] >= [0] [0] = c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) = [0] [0] >= [0] [0] = c_5(f#(X1,X2)) g#(mark(X)) = [0 1] X + [0] [0 2] [0] >= [0 1] X + [0] [0 2] [0] = c_6(g#(X)) proper#(f(X1,X2)) = [0 0] X1 + [0] [1 0] [2] >= [0] [0] = c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) = [0 0] X + [0] [3 0] [2] >= [0] [2] = c_9(g#(proper(X)),proper#(X)) top#(mark(X)) = [0 1] X + [1] [0 2] [0] >= [1] [0] = c_10(top#(proper(X)),proper#(X)) top#(ok(X)) = [0 5] X + [2] [0 2] [2] >= [0 5] X + [2] [0 2] [2] = c_11(top#(active(X)),active#(X)) active(f(X1,X2)) = [0 0] X1 + [0] [0 2] [0] >= [0 0] X1 + [0] [0 2] [0] = f(active(X1),X2) active(f(g(X),Y)) = [0 0] X + [0] [0 6] [0] >= [0 0] X + [0] [0 1] [0] = mark(f(X,f(g(X),Y))) active(g(X)) = [0 0] X + [0] [0 6] [0] >= [0 0] X + [0] [0 6] [0] = g(active(X)) f(mark(X1),X2) = [0 0] X1 + [0] [0 1] [0] >= [0 0] X1 + [0] [0 1] [0] = mark(f(X1,X2)) f(ok(X1),ok(X2)) = [0 2] X1 + [0] [0 1] [1] >= [0 2] X1 + [0] [0 1] [1] = ok(f(X1,X2)) g(mark(X)) = [0 0] X + [0] [0 3] [0] >= [0 0] X + [0] [0 3] [0] = mark(g(X)) g(ok(X)) = [0 6] X + [0] [0 3] [3] >= [0 6] X + [0] [0 3] [1] = ok(g(X)) proper(f(X1,X2)) = [0] [0] >= [0] [0] = f(proper(X1),proper(X2)) proper(g(X)) = [0] [0] >= [0] [0] = g(proper(X)) *** Step 3.a:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) - Weak DPs: g#(ok(X)) -> c_7(g#(X)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () *** Step 3.a:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) - Weak DPs: g#(ok(X)) -> c_7(g#(X)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 5: f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) The strictly oriented rules are moved into the weak component. **** Step 3.a:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) - Weak DPs: g#(ok(X)) -> c_7(g#(X)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 1 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_1) = {1,2}, uargs(c_2) = {1,3}, uargs(c_3) = {1,2}, uargs(c_4) = {1}, uargs(c_5) = {1}, uargs(c_6) = {1}, uargs(c_7) = {1}, uargs(c_8) = {1,2,3}, uargs(c_9) = {1,2}, uargs(c_10) = {1,2}, uargs(c_11) = {1,2} Following symbols are considered usable: {active,f,g,proper,active#,f#,g#,proper#,top#} TcT has computed the following interpretation: p(active) = [0 0] x1 + [0] [0 2] [0] p(f) = [2 0] x1 + [0] [0 2] [0] p(g) = [2 0] x1 + [0] [0 1] [0] p(mark) = [0 0] x1 + [0] [0 1] [0] p(ok) = [0 2] x1 + [0] [0 1] [1] p(proper) = [0] [0] p(top) = [1] [0] p(active#) = [0 2] x1 + [0] [0 0] [0] p(f#) = [0 1] x1 + [0] [0 1] [0] p(g#) = [0] [0] p(proper#) = [0] [0] p(top#) = [1 0] x1 + [0] [1 0] [3] p(c_1) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 2] [0] p(c_2) = [2 0] x1 + [1 1] x2 + [1 0] x3 + [0] [0 0] [0 0] [0 0] [0] p(c_3) = [2 0] x1 + [1 0] x2 + [0] [0 0] [0 1] [0] p(c_4) = [1 0] x1 + [0] [0 0] [0] p(c_5) = [1 0] x1 + [0] [1 0] [0] p(c_6) = [2 0] x1 + [0] [1 0] [0] p(c_7) = [2 0] x1 + [0] [0 0] [0] p(c_8) = [1 2] x1 + [2 0] x2 + [1 0] x3 + [0] [0 0] [0 1] [0 0] [0] p(c_9) = [2 0] x1 + [1 0] x2 + [0] [0 1] [0 0] [0] p(c_10) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [3] p(c_11) = [2 0] x1 + [1 0] x2 + [0] [0 0] [0 2] [0] Following rules are strictly oriented: f#(ok(X1),ok(X2)) = [0 1] X1 + [1] [0 1] [1] > [0 1] X1 + [0] [0 1] [0] = c_5(f#(X1,X2)) Following rules are (at-least) weakly oriented: active#(f(X1,X2)) = [0 4] X1 + [0] [0 0] [0] >= [0 4] X1 + [0] [0 0] [0] = c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) = [0 4] X + [0] [0 0] [0] >= [0 4] X + [0] [0 0] [0] = c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) = [0 2] X + [0] [0 0] [0] >= [0 2] X + [0] [0 0] [0] = c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) = [0 1] X1 + [0] [0 1] [0] >= [0 1] X1 + [0] [0 0] [0] = c_4(f#(X1,X2)) g#(mark(X)) = [0] [0] >= [0] [0] = c_6(g#(X)) g#(ok(X)) = [0] [0] >= [0] [0] = c_7(g#(X)) proper#(f(X1,X2)) = [0] [0] >= [0] [0] = c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) = [0] [0] >= [0] [0] = c_9(g#(proper(X)),proper#(X)) top#(mark(X)) = [0] [3] >= [0] [3] = c_10(top#(proper(X)),proper#(X)) top#(ok(X)) = [0 2] X + [0] [0 2] [3] >= [0 2] X + [0] [0 0] [0] = c_11(top#(active(X)),active#(X)) active(f(X1,X2)) = [0 0] X1 + [0] [0 4] [0] >= [0 0] X1 + [0] [0 4] [0] = f(active(X1),X2) active(f(g(X),Y)) = [0 0] X + [0] [0 4] [0] >= [0 0] X + [0] [0 2] [0] = mark(f(X,f(g(X),Y))) active(g(X)) = [0 0] X + [0] [0 2] [0] >= [0 0] X + [0] [0 2] [0] = g(active(X)) f(mark(X1),X2) = [0 0] X1 + [0] [0 2] [0] >= [0 0] X1 + [0] [0 2] [0] = mark(f(X1,X2)) f(ok(X1),ok(X2)) = [0 4] X1 + [0] [0 2] [2] >= [0 4] X1 + [0] [0 2] [1] = ok(f(X1,X2)) g(mark(X)) = [0 0] X + [0] [0 1] [0] >= [0 0] X + [0] [0 1] [0] = mark(g(X)) g(ok(X)) = [0 4] X + [0] [0 1] [1] >= [0 2] X + [0] [0 1] [1] = ok(g(X)) proper(f(X1,X2)) = [0] [0] >= [0] [0] = f(proper(X1),proper(X2)) proper(g(X)) = [0] [0] >= [0] [0] = g(proper(X)) **** Step 3.a:1.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) - Weak DPs: f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(ok(X)) -> c_7(g#(X)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () **** Step 3.a:1.b:1.b:1: DecomposeDG WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) - Weak DPs: f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(ok(X)) -> c_7(g#(X)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: DecomposeDG {onSelection = all below first cut in WDG, onUpper = Just someStrategy, onLower = Nothing} + Details: We decompose the input problem according to the dependency graph into the upper component top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) and a lower component active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) g#(ok(X)) -> c_7(g#(X)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) Further, following extension rules are added to the lower component. top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) ***** Step 3.a:1.b:1.b:1.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 2: top#(ok(X)) -> c_11(top#(active(X)),active#(X)) The strictly oriented rules are moved into the weak component. ****** Step 3.a:1.b:1.b:1.a:1.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_10) = {1}, uargs(c_11) = {1} Following symbols are considered usable: {active,f,g,proper,active#,f#,g#,proper#,top#} TcT has computed the following interpretation: p(active) = [0] p(f) = [1] x1 + [0] p(g) = [8] x1 + [0] p(mark) = [0] p(ok) = [1] x1 + [1] p(proper) = [0] p(top) = [1] x1 + [0] p(active#) = [4] x1 + [1] p(f#) = [2] x1 + [2] p(g#) = [2] x1 + [2] p(proper#) = [0] p(top#) = [8] x1 + [0] p(c_1) = [1] x2 + [4] p(c_2) = [1] x2 + [2] x3 + [2] p(c_3) = [2] x1 + [0] p(c_4) = [1] x1 + [1] p(c_5) = [1] p(c_6) = [1] x1 + [0] p(c_7) = [2] x1 + [0] p(c_8) = [2] x2 + [1] x3 + [1] p(c_9) = [1] x1 + [2] x2 + [1] p(c_10) = [8] x1 + [4] x2 + [0] p(c_11) = [4] x1 + [2] x2 + [2] Following rules are strictly oriented: top#(ok(X)) = [8] X + [8] > [8] X + [4] = c_11(top#(active(X)),active#(X)) Following rules are (at-least) weakly oriented: top#(mark(X)) = [0] >= [0] = c_10(top#(proper(X)),proper#(X)) active(f(X1,X2)) = [0] >= [0] = f(active(X1),X2) active(f(g(X),Y)) = [0] >= [0] = mark(f(X,f(g(X),Y))) active(g(X)) = [0] >= [0] = g(active(X)) f(mark(X1),X2) = [0] >= [0] = mark(f(X1,X2)) f(ok(X1),ok(X2)) = [1] X1 + [1] >= [1] X1 + [1] = ok(f(X1,X2)) g(mark(X)) = [0] >= [0] = mark(g(X)) g(ok(X)) = [8] X + [8] >= [8] X + [1] = ok(g(X)) proper(f(X1,X2)) = [0] >= [0] = f(proper(X1),proper(X2)) proper(g(X)) = [0] >= [0] = g(proper(X)) ****** Step 3.a:1.b:1.b:1.a:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) - Weak DPs: top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ****** Step 3.a:1.b:1.b:1.a:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) - Weak DPs: top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) The strictly oriented rules are moved into the weak component. ******* Step 3.a:1.b:1.b:1.a:1.b:1.a:1: NaturalMI WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) - Weak DPs: top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 0 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_10) = {1}, uargs(c_11) = {1} Following symbols are considered usable: {active,f,g,proper,active#,f#,g#,proper#,top#} TcT has computed the following interpretation: p(active) = [1] p(f) = [1] x1 + [0] p(g) = [1] x1 + [0] p(mark) = [1] p(ok) = [4] p(proper) = [0] p(top) = [0] p(active#) = [0] p(f#) = [0] p(g#) = [0] p(proper#) = [0] p(top#) = [1] x1 + [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [2] p(c_7) = [0] p(c_8) = [2] p(c_9) = [0] p(c_10) = [4] x1 + [0] p(c_11) = [4] x1 + [0] Following rules are strictly oriented: top#(mark(X)) = [1] > [0] = c_10(top#(proper(X)),proper#(X)) Following rules are (at-least) weakly oriented: top#(ok(X)) = [4] >= [4] = c_11(top#(active(X)),active#(X)) active(f(X1,X2)) = [1] >= [1] = f(active(X1),X2) active(f(g(X),Y)) = [1] >= [1] = mark(f(X,f(g(X),Y))) active(g(X)) = [1] >= [1] = g(active(X)) f(mark(X1),X2) = [1] >= [1] = mark(f(X1,X2)) f(ok(X1),ok(X2)) = [4] >= [4] = ok(f(X1,X2)) g(mark(X)) = [1] >= [1] = mark(g(X)) g(ok(X)) = [4] >= [4] = ok(g(X)) proper(f(X1,X2)) = [0] >= [0] = f(proper(X1),proper(X2)) proper(g(X)) = [0] >= [0] = g(proper(X)) ******* Step 3.a:1.b:1.b:1.a:1.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ******* Step 3.a:1.b:1.b:1.a:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) -->_1 top#(ok(X)) -> c_11(top#(active(X)),active#(X)):2 -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1 2:W:top#(ok(X)) -> c_11(top#(active(X)),active#(X)) -->_1 top#(ok(X)) -> c_11(top#(active(X)),active#(X)):2 -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) 2: top#(ok(X)) -> c_11(top#(active(X)),active#(X)) ******* Step 3.a:1.b:1.b:1.a:1.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). ***** Step 3.a:1.b:1.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) - Weak DPs: f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(ok(X)) -> c_7(g#(X)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 2: active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) 5: g#(mark(X)) -> c_6(g#(X)) The strictly oriented rules are moved into the weak component. ****** Step 3.a:1.b:1.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) - Weak DPs: f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(ok(X)) -> c_7(g#(X)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 1 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_1) = {1,2}, uargs(c_2) = {1,3}, uargs(c_3) = {1,2}, uargs(c_4) = {1}, uargs(c_5) = {1}, uargs(c_6) = {1}, uargs(c_7) = {1}, uargs(c_8) = {1,2,3}, uargs(c_9) = {1,2} Following symbols are considered usable: {active,f,g,proper,active#,f#,g#,proper#,top#} TcT has computed the following interpretation: p(active) = [1 1] x1 + [0] [0 1] [0] p(f) = [2 0] x1 + [0] [0 2] [0] p(g) = [2 0] x1 + [0] [0 2] [2] p(mark) = [1 0] x1 + [2] [0 0] [0] p(ok) = [1 1] x1 + [2] [0 0] [0] p(proper) = [0 0] x1 + [0] [0 2] [0] p(top) = [2 2] x1 + [0] [0 0] [0] p(active#) = [1 1] x1 + [0] [0 0] [2] p(f#) = [0 0] x2 + [0] [1 0] [0] p(g#) = [1 0] x1 + [0] [0 2] [0] p(proper#) = [0] [0] p(top#) = [1 0] x1 + [0] [0 0] [3] p(c_1) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 1] [0] p(c_2) = [2 0] x1 + [1 2] x3 + [1] [0 0] [0 0] [0] p(c_3) = [1 0] x1 + [1 1] x2 + [0] [0 0] [0 0] [0] p(c_4) = [2 0] x1 + [0] [0 1] [0] p(c_5) = [2 0] x1 + [0] [2 1] [2] p(c_6) = [1 0] x1 + [1] [0 0] [0] p(c_7) = [1 0] x1 + [1] [0 0] [0] p(c_8) = [2 1] x1 + [2 0] x2 + [1 0] x3 + [0] [0 0] [1 0] [1 2] [0] p(c_9) = [1 0] x1 + [1 0] x2 + [0] [2 0] [0 2] [0] p(c_10) = [2 2] x2 + [1] [0 1] [1] p(c_11) = [0] [2] Following rules are strictly oriented: active#(f(g(X),Y)) = [4 4] X + [4] [0 0] [2] > [1 4] X + [1] [0 0] [0] = c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) g#(mark(X)) = [1 0] X + [2] [0 0] [0] > [1 0] X + [1] [0 0] [0] = c_6(g#(X)) Following rules are (at-least) weakly oriented: active#(f(X1,X2)) = [2 2] X1 + [0] [0 0] [2] >= [1 1] X1 + [0] [0 0] [2] = c_1(f#(active(X1),X2),active#(X1)) active#(g(X)) = [2 2] X + [2] [0 0] [2] >= [2 2] X + [2] [0 0] [0] = c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) = [0 0] X2 + [0] [1 0] [0] >= [0 0] X2 + [0] [1 0] [0] = c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) = [0 0] X2 + [0] [1 1] [2] >= [0 0] X2 + [0] [1 0] [2] = c_5(f#(X1,X2)) g#(ok(X)) = [1 1] X + [2] [0 0] [0] >= [1 0] X + [1] [0 0] [0] = c_7(g#(X)) proper#(f(X1,X2)) = [0] [0] >= [0] [0] = c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) = [0] [0] >= [0] [0] = c_9(g#(proper(X)),proper#(X)) top#(mark(X)) = [1 0] X + [2] [0 0] [3] >= [0] [0] = proper#(X) top#(mark(X)) = [1 0] X + [2] [0 0] [3] >= [0] [3] = top#(proper(X)) top#(ok(X)) = [1 1] X + [2] [0 0] [3] >= [1 1] X + [0] [0 0] [2] = active#(X) top#(ok(X)) = [1 1] X + [2] [0 0] [3] >= [1 1] X + [0] [0 0] [3] = top#(active(X)) active(f(X1,X2)) = [2 2] X1 + [0] [0 2] [0] >= [2 2] X1 + [0] [0 2] [0] = f(active(X1),X2) active(f(g(X),Y)) = [4 4] X + [4] [0 4] [4] >= [2 0] X + [2] [0 0] [0] = mark(f(X,f(g(X),Y))) active(g(X)) = [2 2] X + [2] [0 2] [2] >= [2 2] X + [0] [0 2] [2] = g(active(X)) f(mark(X1),X2) = [2 0] X1 + [4] [0 0] [0] >= [2 0] X1 + [2] [0 0] [0] = mark(f(X1,X2)) f(ok(X1),ok(X2)) = [2 2] X1 + [4] [0 0] [0] >= [2 2] X1 + [2] [0 0] [0] = ok(f(X1,X2)) g(mark(X)) = [2 0] X + [4] [0 0] [2] >= [2 0] X + [2] [0 0] [0] = mark(g(X)) g(ok(X)) = [2 2] X + [4] [0 0] [2] >= [2 2] X + [4] [0 0] [0] = ok(g(X)) proper(f(X1,X2)) = [0 0] X1 + [0] [0 4] [0] >= [0 0] X1 + [0] [0 4] [0] = f(proper(X1),proper(X2)) proper(g(X)) = [0 0] X + [0] [0 4] [4] >= [0 0] X + [0] [0 4] [2] = g(proper(X)) ****** Step 3.a:1.b:1.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) - Weak DPs: active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) g#(ok(X)) -> c_7(g#(X)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ****** Step 3.a:1.b:1.b:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) - Weak DPs: active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) g#(ok(X)) -> c_7(g#(X)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):4 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):3 -->_2 active#(g(X)) -> c_3(g#(active(X)),active#(X)):2 -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1 2:S:active#(g(X)) -> c_3(g#(active(X)),active#(X)) -->_1 g#(ok(X)) -> c_7(g#(X)):7 -->_1 g#(mark(X)) -> c_6(g#(X)):6 -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):4 -->_2 active#(g(X)) -> c_3(g#(active(X)),active#(X)):2 -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1 3:S:f#(mark(X1),X2) -> c_4(f#(X1,X2)) -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):3 4:W:active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) -->_3 g#(ok(X)) -> c_7(g#(X)):7 -->_3 g#(mark(X)) -> c_6(g#(X)):6 -->_2 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_2 f#(mark(X1),X2) -> c_4(f#(X1,X2)):3 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):3 5:W:f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):3 6:W:g#(mark(X)) -> c_6(g#(X)) -->_1 g#(ok(X)) -> c_7(g#(X)):7 -->_1 g#(mark(X)) -> c_6(g#(X)):6 7:W:g#(ok(X)) -> c_7(g#(X)) -->_1 g#(ok(X)) -> c_7(g#(X)):7 -->_1 g#(mark(X)) -> c_6(g#(X)):6 8:W:proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) -->_3 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9 -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9 -->_3 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8 -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8 -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):3 9:W:proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9 -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8 -->_1 g#(ok(X)) -> c_7(g#(X)):7 -->_1 g#(mark(X)) -> c_6(g#(X)):6 10:W:top#(mark(X)) -> proper#(X) -->_1 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9 -->_1 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8 11:W:top#(mark(X)) -> top#(proper(X)) -->_1 top#(ok(X)) -> top#(active(X)):13 -->_1 top#(ok(X)) -> active#(X):12 -->_1 top#(mark(X)) -> top#(proper(X)):11 -->_1 top#(mark(X)) -> proper#(X):10 12:W:top#(ok(X)) -> active#(X) -->_1 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):4 -->_1 active#(g(X)) -> c_3(g#(active(X)),active#(X)):2 -->_1 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1 13:W:top#(ok(X)) -> top#(active(X)) -->_1 top#(ok(X)) -> top#(active(X)):13 -->_1 top#(ok(X)) -> active#(X):12 -->_1 top#(mark(X)) -> top#(proper(X)):11 -->_1 top#(mark(X)) -> proper#(X):10 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 7: g#(ok(X)) -> c_7(g#(X)) 6: g#(mark(X)) -> c_6(g#(X)) ****** Step 3.a:1.b:1.b:1.b:1.b:2: SimplifyRHS WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) - Weak DPs: active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):4 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):3 -->_2 active#(g(X)) -> c_3(g#(active(X)),active#(X)):2 -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1 2:S:active#(g(X)) -> c_3(g#(active(X)),active#(X)) -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):4 -->_2 active#(g(X)) -> c_3(g#(active(X)),active#(X)):2 -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1 3:S:f#(mark(X1),X2) -> c_4(f#(X1,X2)) -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):3 4:W:active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) -->_2 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_2 f#(mark(X1),X2) -> c_4(f#(X1,X2)):3 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):3 5:W:f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):3 8:W:proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) -->_3 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9 -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9 -->_3 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8 -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8 -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):3 9:W:proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9 -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8 10:W:top#(mark(X)) -> proper#(X) -->_1 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):9 -->_1 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):8 11:W:top#(mark(X)) -> top#(proper(X)) -->_1 top#(ok(X)) -> top#(active(X)):13 -->_1 top#(ok(X)) -> active#(X):12 -->_1 top#(mark(X)) -> top#(proper(X)):11 -->_1 top#(mark(X)) -> proper#(X):10 12:W:top#(ok(X)) -> active#(X) -->_1 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):4 -->_1 active#(g(X)) -> c_3(g#(active(X)),active#(X)):2 -->_1 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):1 13:W:top#(ok(X)) -> top#(active(X)) -->_1 top#(ok(X)) -> top#(active(X)):13 -->_1 top#(ok(X)) -> active#(X):12 -->_1 top#(mark(X)) -> top#(proper(X)):11 -->_1 top#(mark(X)) -> proper#(X):10 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y)) active#(g(X)) -> c_3(active#(X)) proper#(g(X)) -> c_9(proper#(X)) ****** Step 3.a:1.b:1.b:1.b:1.b:3: PredecessorEstimationCP WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(g(X)) -> c_3(active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) - Weak DPs: active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/2,c_3/1 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) 3: f#(mark(X1),X2) -> c_4(f#(X1,X2)) The strictly oriented rules are moved into the weak component. ******* Step 3.a:1.b:1.b:1.b:1.b:3.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(g(X)) -> c_3(active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) - Weak DPs: active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/2,c_3/1 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 1 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_1) = {1,2}, uargs(c_2) = {1}, uargs(c_3) = {1}, uargs(c_4) = {1}, uargs(c_5) = {1}, uargs(c_8) = {1,2,3}, uargs(c_9) = {1} Following symbols are considered usable: {active,f,g,proper,active#,f#,g#,proper#,top#} TcT has computed the following interpretation: p(active) = [1 1] x1 + [0] [0 1] [0] p(f) = [3 0] x1 + [0] [0 3] [1] p(g) = [2 0] x1 + [0] [0 2] [0] p(mark) = [1 0] x1 + [1] [0 0] [0] p(ok) = [1 2] x1 + [1] [0 0] [0] p(proper) = [0 0] x1 + [0] [0 2] [0] p(top) = [2] [0] p(active#) = [1 1] x1 + [1] [0 0] [3] p(f#) = [2 0] x1 + [0] [0 2] [0] p(g#) = [0] [0] p(proper#) = [0] [2] p(top#) = [1 0] x1 + [0] [3 0] [3] p(c_1) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 1] [0] p(c_2) = [2 0] x1 + [2] [0 0] [3] p(c_3) = [1 0] x1 + [0] [0 0] [0] p(c_4) = [1 0] x1 + [0] [0 0] [0] p(c_5) = [1 2] x1 + [2] [0 0] [0] p(c_6) = [0 2] x1 + [0] [1 1] [0] p(c_7) = [1] [0] p(c_8) = [2 0] x1 + [1 0] x2 + [2 0] x3 + [0] [1 0] [2 0] [0 0] [0] p(c_9) = [1 0] x1 + [0] [0 1] [0] p(c_10) = [1 2] x1 + [0] [2 2] [0] p(c_11) = [1 1] x1 + [2] [0 0] [0] Following rules are strictly oriented: active#(f(X1,X2)) = [3 3] X1 + [2] [0 0] [3] > [3 3] X1 + [1] [0 0] [3] = c_1(f#(active(X1),X2),active#(X1)) f#(mark(X1),X2) = [2 0] X1 + [2] [0 0] [0] > [2 0] X1 + [0] [0 0] [0] = c_4(f#(X1,X2)) Following rules are (at-least) weakly oriented: active#(f(g(X),Y)) = [6 6] X + [2] [0 0] [3] >= [4 0] X + [2] [0 0] [3] = c_2(f#(X,f(g(X),Y)),f#(g(X),Y)) active#(g(X)) = [2 2] X + [1] [0 0] [3] >= [1 1] X + [1] [0 0] [0] = c_3(active#(X)) f#(ok(X1),ok(X2)) = [2 4] X1 + [2] [0 0] [0] >= [2 4] X1 + [2] [0 0] [0] = c_5(f#(X1,X2)) proper#(f(X1,X2)) = [0] [2] >= [0] [0] = c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) = [0] [2] >= [0] [2] = c_9(proper#(X)) top#(mark(X)) = [1 0] X + [1] [3 0] [6] >= [0] [2] = proper#(X) top#(mark(X)) = [1 0] X + [1] [3 0] [6] >= [0] [3] = top#(proper(X)) top#(ok(X)) = [1 2] X + [1] [3 6] [6] >= [1 1] X + [1] [0 0] [3] = active#(X) top#(ok(X)) = [1 2] X + [1] [3 6] [6] >= [1 1] X + [0] [3 3] [3] = top#(active(X)) active(f(X1,X2)) = [3 3] X1 + [1] [0 3] [1] >= [3 3] X1 + [0] [0 3] [1] = f(active(X1),X2) active(f(g(X),Y)) = [6 6] X + [1] [0 6] [1] >= [3 0] X + [1] [0 0] [0] = mark(f(X,f(g(X),Y))) active(g(X)) = [2 2] X + [0] [0 2] [0] >= [2 2] X + [0] [0 2] [0] = g(active(X)) f(mark(X1),X2) = [3 0] X1 + [3] [0 0] [1] >= [3 0] X1 + [1] [0 0] [0] = mark(f(X1,X2)) f(ok(X1),ok(X2)) = [3 6] X1 + [3] [0 0] [1] >= [3 6] X1 + [3] [0 0] [0] = ok(f(X1,X2)) g(mark(X)) = [2 0] X + [2] [0 0] [0] >= [2 0] X + [1] [0 0] [0] = mark(g(X)) g(ok(X)) = [2 4] X + [2] [0 0] [0] >= [2 4] X + [1] [0 0] [0] = ok(g(X)) proper(f(X1,X2)) = [0 0] X1 + [0] [0 6] [2] >= [0 0] X1 + [0] [0 6] [1] = f(proper(X1),proper(X2)) proper(g(X)) = [0 0] X + [0] [0 4] [0] >= [0 0] X + [0] [0 4] [0] = g(proper(X)) ******* Step 3.a:1.b:1.b:1.b:1.b:3.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: active#(g(X)) -> c_3(active#(X)) - Weak DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/2,c_3/1 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ******* Step 3.a:1.b:1.b:1.b:1.b:3.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: active#(g(X)) -> c_3(active#(X)) - Weak DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/2,c_3/1 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:active#(g(X)) -> c_3(active#(X)) -->_1 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y)):3 -->_1 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):2 -->_1 active#(g(X)) -> c_3(active#(X)):1 2:W:active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):4 -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y)):3 -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):2 -->_2 active#(g(X)) -> c_3(active#(X)):1 3:W:active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y)) -->_2 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_2 f#(mark(X1),X2) -> c_4(f#(X1,X2)):4 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):4 4:W:f#(mark(X1),X2) -> c_4(f#(X1,X2)) -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):4 5:W:f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):4 6:W:proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) -->_3 proper#(g(X)) -> c_9(proper#(X)):7 -->_2 proper#(g(X)) -> c_9(proper#(X)):7 -->_3 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):6 -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):6 -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):5 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):4 7:W:proper#(g(X)) -> c_9(proper#(X)) -->_1 proper#(g(X)) -> c_9(proper#(X)):7 -->_1 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):6 8:W:top#(mark(X)) -> proper#(X) -->_1 proper#(g(X)) -> c_9(proper#(X)):7 -->_1 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):6 9:W:top#(mark(X)) -> top#(proper(X)) -->_1 top#(ok(X)) -> top#(active(X)):11 -->_1 top#(ok(X)) -> active#(X):10 -->_1 top#(mark(X)) -> top#(proper(X)):9 -->_1 top#(mark(X)) -> proper#(X):8 10:W:top#(ok(X)) -> active#(X) -->_1 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y)):3 -->_1 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):2 -->_1 active#(g(X)) -> c_3(active#(X)):1 11:W:top#(ok(X)) -> top#(active(X)) -->_1 top#(ok(X)) -> top#(active(X)):11 -->_1 top#(ok(X)) -> active#(X):10 -->_1 top#(mark(X)) -> top#(proper(X)):9 -->_1 top#(mark(X)) -> proper#(X):8 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 8: top#(mark(X)) -> proper#(X) 6: proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) 7: proper#(g(X)) -> c_9(proper#(X)) 3: active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y)) 5: f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) 4: f#(mark(X1),X2) -> c_4(f#(X1,X2)) ******* Step 3.a:1.b:1.b:1.b:1.b:3.b:2: SimplifyRHS WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: active#(g(X)) -> c_3(active#(X)) - Weak DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/2,c_3/1 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:active#(g(X)) -> c_3(active#(X)) -->_1 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):2 -->_1 active#(g(X)) -> c_3(active#(X)):1 2:W:active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):2 -->_2 active#(g(X)) -> c_3(active#(X)):1 9:W:top#(mark(X)) -> top#(proper(X)) -->_1 top#(ok(X)) -> top#(active(X)):11 -->_1 top#(ok(X)) -> active#(X):10 -->_1 top#(mark(X)) -> top#(proper(X)):9 10:W:top#(ok(X)) -> active#(X) -->_1 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):2 -->_1 active#(g(X)) -> c_3(active#(X)):1 11:W:top#(ok(X)) -> top#(active(X)) -->_1 top#(ok(X)) -> top#(active(X)):11 -->_1 top#(ok(X)) -> active#(X):10 -->_1 top#(mark(X)) -> top#(proper(X)):9 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: active#(f(X1,X2)) -> c_1(active#(X1)) ******* Step 3.a:1.b:1.b:1.b:1.b:3.b:3: PredecessorEstimationCP WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: active#(g(X)) -> c_3(active#(X)) - Weak DPs: active#(f(X1,X2)) -> c_1(active#(X1)) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/1,c_2/2,c_3/1 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: active#(g(X)) -> c_3(active#(X)) The strictly oriented rules are moved into the weak component. ******** Step 3.a:1.b:1.b:1.b:1.b:3.b:3.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: active#(g(X)) -> c_3(active#(X)) - Weak DPs: active#(f(X1,X2)) -> c_1(active#(X1)) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/1,c_2/2,c_3/1 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_1) = {1}, uargs(c_3) = {1} Following symbols are considered usable: {active,f,g,proper,active#,f#,g#,proper#,top#} TcT has computed the following interpretation: p(active) = [1] x1 + [0] p(f) = [1] x1 + [0] p(g) = [6] x1 + [4] p(mark) = [1] x1 + [2] p(ok) = [1] x1 + [0] p(proper) = [1] x1 + [0] p(top) = [0] p(active#) = [4] x1 + [0] p(f#) = [2] x2 + [0] p(g#) = [2] x1 + [0] p(proper#) = [1] p(top#) = [4] x1 + [1] p(c_1) = [1] x1 + [0] p(c_2) = [1] x1 + [1] p(c_3) = [2] x1 + [7] p(c_4) = [0] p(c_5) = [0] p(c_6) = [1] x1 + [0] p(c_7) = [8] p(c_8) = [2] x1 + [1] x2 + [0] p(c_9) = [4] x1 + [0] p(c_10) = [1] x1 + [0] p(c_11) = [1] x1 + [2] x2 + [8] Following rules are strictly oriented: active#(g(X)) = [24] X + [16] > [8] X + [7] = c_3(active#(X)) Following rules are (at-least) weakly oriented: active#(f(X1,X2)) = [4] X1 + [0] >= [4] X1 + [0] = c_1(active#(X1)) top#(mark(X)) = [4] X + [9] >= [4] X + [1] = top#(proper(X)) top#(ok(X)) = [4] X + [1] >= [4] X + [0] = active#(X) top#(ok(X)) = [4] X + [1] >= [4] X + [1] = top#(active(X)) active(f(X1,X2)) = [1] X1 + [0] >= [1] X1 + [0] = f(active(X1),X2) active(f(g(X),Y)) = [6] X + [4] >= [1] X + [2] = mark(f(X,f(g(X),Y))) active(g(X)) = [6] X + [4] >= [6] X + [4] = g(active(X)) f(mark(X1),X2) = [1] X1 + [2] >= [1] X1 + [2] = mark(f(X1,X2)) f(ok(X1),ok(X2)) = [1] X1 + [0] >= [1] X1 + [0] = ok(f(X1,X2)) g(mark(X)) = [6] X + [16] >= [6] X + [6] = mark(g(X)) g(ok(X)) = [6] X + [4] >= [6] X + [4] = ok(g(X)) proper(f(X1,X2)) = [1] X1 + [0] >= [1] X1 + [0] = f(proper(X1),proper(X2)) proper(g(X)) = [6] X + [4] >= [6] X + [4] = g(proper(X)) ******** Step 3.a:1.b:1.b:1.b:1.b:3.b:3.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: active#(f(X1,X2)) -> c_1(active#(X1)) active#(g(X)) -> c_3(active#(X)) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/1,c_2/2,c_3/1 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ******** Step 3.a:1.b:1.b:1.b:1.b:3.b:3.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: active#(f(X1,X2)) -> c_1(active#(X1)) active#(g(X)) -> c_3(active#(X)) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> active#(X) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/1,c_2/2,c_3/1 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:active#(f(X1,X2)) -> c_1(active#(X1)) -->_1 active#(g(X)) -> c_3(active#(X)):2 -->_1 active#(f(X1,X2)) -> c_1(active#(X1)):1 2:W:active#(g(X)) -> c_3(active#(X)) -->_1 active#(g(X)) -> c_3(active#(X)):2 -->_1 active#(f(X1,X2)) -> c_1(active#(X1)):1 3:W:top#(mark(X)) -> top#(proper(X)) -->_1 top#(ok(X)) -> top#(active(X)):5 -->_1 top#(ok(X)) -> active#(X):4 -->_1 top#(mark(X)) -> top#(proper(X)):3 4:W:top#(ok(X)) -> active#(X) -->_1 active#(g(X)) -> c_3(active#(X)):2 -->_1 active#(f(X1,X2)) -> c_1(active#(X1)):1 5:W:top#(ok(X)) -> top#(active(X)) -->_1 top#(ok(X)) -> top#(active(X)):5 -->_1 top#(ok(X)) -> active#(X):4 -->_1 top#(mark(X)) -> top#(proper(X)):3 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 3: top#(mark(X)) -> top#(proper(X)) 5: top#(ok(X)) -> top#(active(X)) 4: top#(ok(X)) -> active#(X) 1: active#(f(X1,X2)) -> c_1(active#(X1)) 2: active#(g(X)) -> c_3(active#(X)) ******** Step 3.a:1.b:1.b:1.b:1.b:3.b:3.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/1,c_2/2,c_3/1 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/1,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). ** Step 3.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak DPs: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) active#(g(X)) -> c_3(g#(active(X)),active#(X)) f#(mark(X1),X2) -> c_4(f#(X1,X2)) f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) g#(mark(X)) -> c_6(g#(X)) g#(ok(X)) -> c_7(g#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):9 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):8 -->_3 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2 -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2 -->_3 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1 -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1 2:S:proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) -->_1 g#(ok(X)) -> c_7(g#(X)):11 -->_1 g#(mark(X)) -> c_6(g#(X)):10 -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2 -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1 3:S:top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) -->_1 top#(ok(X)) -> c_11(top#(active(X)),active#(X)):4 -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):3 -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2 -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1 4:S:top#(ok(X)) -> c_11(top#(active(X)),active#(X)) -->_2 active#(g(X)) -> c_3(g#(active(X)),active#(X)):7 -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):6 -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):5 -->_1 top#(ok(X)) -> c_11(top#(active(X)),active#(X)):4 -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):3 5:W:active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):9 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):8 -->_2 active#(g(X)) -> c_3(g#(active(X)),active#(X)):7 -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):6 -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):5 6:W:active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) -->_3 g#(ok(X)) -> c_7(g#(X)):11 -->_3 g#(mark(X)) -> c_6(g#(X)):10 -->_2 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):9 -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):9 -->_2 f#(mark(X1),X2) -> c_4(f#(X1,X2)):8 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):8 7:W:active#(g(X)) -> c_3(g#(active(X)),active#(X)) -->_1 g#(ok(X)) -> c_7(g#(X)):11 -->_1 g#(mark(X)) -> c_6(g#(X)):10 -->_2 active#(g(X)) -> c_3(g#(active(X)),active#(X)):7 -->_2 active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)):6 -->_2 active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)):5 8:W:f#(mark(X1),X2) -> c_4(f#(X1,X2)) -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):9 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):8 9:W:f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) -->_1 f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)):9 -->_1 f#(mark(X1),X2) -> c_4(f#(X1,X2)):8 10:W:g#(mark(X)) -> c_6(g#(X)) -->_1 g#(ok(X)) -> c_7(g#(X)):11 -->_1 g#(mark(X)) -> c_6(g#(X)):10 11:W:g#(ok(X)) -> c_7(g#(X)) -->_1 g#(ok(X)) -> c_7(g#(X)):11 -->_1 g#(mark(X)) -> c_6(g#(X)):10 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 7: active#(g(X)) -> c_3(g#(active(X)),active#(X)) 5: active#(f(X1,X2)) -> c_1(f#(active(X1),X2),active#(X1)) 6: active#(f(g(X),Y)) -> c_2(f#(X,f(g(X),Y)),f#(g(X),Y),g#(X)) 11: g#(ok(X)) -> c_7(g#(X)) 10: g#(mark(X)) -> c_6(g#(X)) 9: f#(ok(X1),ok(X2)) -> c_5(f#(X1,X2)) 8: f#(mark(X1),X2) -> c_4(f#(X1,X2)) ** Step 3.b:2: SimplifyRHS WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X)),active#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/3,c_9/2,c_10/2,c_11/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) -->_3 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2 -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2 -->_3 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1 -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1 2:S:proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)) -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2 -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1 3:S:top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) -->_1 top#(ok(X)) -> c_11(top#(active(X)),active#(X)):4 -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):3 -->_2 proper#(g(X)) -> c_9(g#(proper(X)),proper#(X)):2 -->_2 proper#(f(X1,X2)) -> c_8(f#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):1 4:S:top#(ok(X)) -> c_11(top#(active(X)),active#(X)) -->_1 top#(ok(X)) -> c_11(top#(active(X)),active#(X)):4 -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):3 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) top#(ok(X)) -> c_11(top#(active(X))) ** Step 3.b:3: Decompose WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + 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: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) - Weak DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} Problem (S) - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X))) - Weak DPs: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} *** Step 3.b:3.a:1: DecomposeDG WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) - Weak DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: DecomposeDG {onSelection = all below first cut in WDG, onUpper = Just someStrategy, onLower = Nothing} + Details: We decompose the input problem according to the dependency graph into the upper component top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X))) and a lower component proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) Further, following extension rules are added to the lower component. top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> top#(active(X)) **** Step 3.b:3.a:1.a:1: PredecessorEstimationCP WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) - Weak DPs: top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) The strictly oriented rules are moved into the weak component. ***** Step 3.b:3.a:1.a:1.a:1: NaturalMI WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) - Weak DPs: top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 0 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_10) = {1}, uargs(c_11) = {1} Following symbols are considered usable: {active,f,g,proper,active#,f#,g#,proper#,top#} TcT has computed the following interpretation: p(active) = [4] p(f) = [1] x1 + [0] p(g) = [1] x1 + [0] p(mark) = [4] p(ok) = [6] p(proper) = [0] p(top) = [1] p(active#) = [1] p(f#) = [1] x2 + [8] p(g#) = [1] x1 + [8] p(proper#) = [0] p(top#) = [2] x1 + [1] p(c_1) = [1] x1 + [1] p(c_2) = [1] x1 + [4] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [4] p(c_7) = [2] p(c_8) = [1] x1 + [1] x2 + [0] p(c_9) = [8] x1 + [1] p(c_10) = [8] x1 + [4] x2 + [0] p(c_11) = [1] x1 + [4] Following rules are strictly oriented: top#(mark(X)) = [9] > [8] = c_10(top#(proper(X)),proper#(X)) Following rules are (at-least) weakly oriented: top#(ok(X)) = [13] >= [13] = c_11(top#(active(X))) active(f(X1,X2)) = [4] >= [4] = f(active(X1),X2) active(f(g(X),Y)) = [4] >= [4] = mark(f(X,f(g(X),Y))) active(g(X)) = [4] >= [4] = g(active(X)) f(mark(X1),X2) = [4] >= [4] = mark(f(X1,X2)) f(ok(X1),ok(X2)) = [6] >= [6] = ok(f(X1,X2)) g(mark(X)) = [4] >= [4] = mark(g(X)) g(ok(X)) = [6] >= [6] = ok(g(X)) proper(f(X1,X2)) = [0] >= [0] = f(proper(X1),proper(X2)) proper(g(X)) = [0] >= [0] = g(proper(X)) ***** Step 3.b:3.a:1.a:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ***** Step 3.b:3.a:1.a:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) -->_1 top#(ok(X)) -> c_11(top#(active(X))):2 -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1 2:W:top#(ok(X)) -> c_11(top#(active(X))) -->_1 top#(ok(X)) -> c_11(top#(active(X))):2 -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) 2: top#(ok(X)) -> c_11(top#(active(X))) ***** Step 3.b:3.a:1.a:1.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). **** Step 3.b:3.a:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) - Weak DPs: top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 2: proper#(g(X)) -> c_9(proper#(X)) The strictly oriented rules are moved into the weak component. ***** Step 3.b:3.a:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) - Weak DPs: top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_8) = {1,2}, uargs(c_9) = {1} Following symbols are considered usable: {active,f,g,proper,active#,f#,g#,proper#,top#} TcT has computed the following interpretation: p(active) = [1 0] x1 + [0] [0 3] [0] p(f) = [1 0] x1 + [2 0] x2 + [0] [0 1] [0 2] [0] p(g) = [4 0] x1 + [0] [0 4] [1] p(mark) = [0 0] x1 + [0] [0 1] [0] p(ok) = [1 1] x1 + [2] [0 1] [0] p(proper) = [0 0] x1 + [0] [0 1] [0] p(top) = [1 1] x1 + [4] [1 2] [1] p(active#) = [4] [0] p(f#) = [2 0] x2 + [1] [4 0] [1] p(g#) = [1] [0] p(proper#) = [0 1] x1 + [0] [0 0] [0] p(top#) = [2 1] x1 + [0] [0 0] [4] p(c_1) = [0 1] x1 + [2 0] x2 + [0] [1 2] [0 1] [1] p(c_2) = [0 1] x1 + [2 1] x2 + [1 1] x3 + [1] [0 2] [1 1] [0 0] [1] p(c_3) = [1 0] x2 + [0] [0 1] [2] p(c_4) = [1] [2] p(c_5) = [0 0] x1 + [0] [0 1] [2] p(c_6) = [1 1] x1 + [1] [1 0] [1] p(c_7) = [0 0] x1 + [1] [2 1] [4] p(c_8) = [1 0] x1 + [1 0] x2 + [0] [0 1] [0 1] [0] p(c_9) = [4 0] x1 + [0] [0 1] [0] p(c_10) = [1 0] x1 + [0 0] x2 + [2] [1 1] [1 1] [0] p(c_11) = [1] [1] Following rules are strictly oriented: proper#(g(X)) = [0 4] X + [1] [0 0] [0] > [0 4] X + [0] [0 0] [0] = c_9(proper#(X)) Following rules are (at-least) weakly oriented: proper#(f(X1,X2)) = [0 1] X1 + [0 2] X2 + [0] [0 0] [0 0] [0] >= [0 1] X1 + [0 1] X2 + [0] [0 0] [0 0] [0] = c_8(proper#(X1),proper#(X2)) top#(mark(X)) = [0 1] X + [0] [0 0] [4] >= [0 1] X + [0] [0 0] [0] = proper#(X) top#(mark(X)) = [0 1] X + [0] [0 0] [4] >= [0 1] X + [0] [0 0] [4] = top#(proper(X)) top#(ok(X)) = [2 3] X + [4] [0 0] [4] >= [2 3] X + [0] [0 0] [4] = top#(active(X)) active(f(X1,X2)) = [1 0] X1 + [2 0] X2 + [0] [0 3] [0 6] [0] >= [1 0] X1 + [2 0] X2 + [0] [0 3] [0 2] [0] = f(active(X1),X2) active(f(g(X),Y)) = [4 0] X + [2 0] Y + [0] [0 12] [0 6] [3] >= [0 0] X + [0 0] Y + [0] [0 9] [0 4] [2] = mark(f(X,f(g(X),Y))) active(g(X)) = [4 0] X + [0] [0 12] [3] >= [4 0] X + [0] [0 12] [1] = g(active(X)) f(mark(X1),X2) = [0 0] X1 + [2 0] X2 + [0] [0 1] [0 2] [0] >= [0 0] X1 + [0 0] X2 + [0] [0 1] [0 2] [0] = mark(f(X1,X2)) f(ok(X1),ok(X2)) = [1 1] X1 + [2 2] X2 + [6] [0 1] [0 2] [0] >= [1 1] X1 + [2 2] X2 + [2] [0 1] [0 2] [0] = ok(f(X1,X2)) g(mark(X)) = [0 0] X + [0] [0 4] [1] >= [0 0] X + [0] [0 4] [1] = mark(g(X)) g(ok(X)) = [4 4] X + [8] [0 4] [1] >= [4 4] X + [3] [0 4] [1] = ok(g(X)) proper(f(X1,X2)) = [0 0] X1 + [0 0] X2 + [0] [0 1] [0 2] [0] >= [0 0] X1 + [0 0] X2 + [0] [0 1] [0 2] [0] = f(proper(X1),proper(X2)) proper(g(X)) = [0 0] X + [0] [0 4] [1] >= [0 0] X + [0] [0 4] [1] = g(proper(X)) ***** Step 3.b:3.a:1.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) - Weak DPs: proper#(g(X)) -> c_9(proper#(X)) top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ***** Step 3.b:3.a:1.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) - Weak DPs: proper#(g(X)) -> c_9(proper#(X)) top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) The strictly oriented rules are moved into the weak component. ****** Step 3.b:3.a:1.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) - Weak DPs: proper#(g(X)) -> c_9(proper#(X)) top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_8) = {1,2}, uargs(c_9) = {1} Following symbols are considered usable: {active,f,g,proper,active#,f#,g#,proper#,top#} TcT has computed the following interpretation: p(active) = [1 0] x1 + [0] [0 4] [0] p(f) = [2 0] x1 + [1 0] x2 + [0] [0 1] [0 1] [1] p(g) = [1 0] x1 + [0] [0 1] [0] p(mark) = [0 0] x1 + [0] [0 1] [0] p(ok) = [1 4] x1 + [2] [0 0] [4] p(proper) = [0 0] x1 + [0] [0 1] [0] p(top) = [0 0] x1 + [0] [4 1] [1] p(active#) = [1 1] x1 + [1] [2 1] [1] p(f#) = [0 2] x1 + [0 1] x2 + [4] [0 2] [0 0] [0] p(g#) = [1 0] x1 + [0] [1 1] [0] p(proper#) = [0 1] x1 + [0] [0 0] [0] p(top#) = [2 2] x1 + [2] [0 0] [2] p(c_1) = [0 1] x1 + [4] [1 1] [0] p(c_2) = [0 0] x2 + [0 1] x3 + [0] [0 1] [1 1] [2] p(c_3) = [0 0] x1 + [0 4] x2 + [0] [0 1] [1 0] [1] p(c_4) = [0 1] x1 + [1] [4 0] [0] p(c_5) = [1 0] x1 + [0] [4 2] [1] p(c_6) = [0 0] x1 + [4] [4 1] [1] p(c_7) = [2 1] x1 + [4] [0 0] [0] p(c_8) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [0] p(c_9) = [1 1] x1 + [0] [0 0] [0] p(c_10) = [1 2] x1 + [0] [1 0] [1] p(c_11) = [4] [0] Following rules are strictly oriented: proper#(f(X1,X2)) = [0 1] X1 + [0 1] X2 + [1] [0 0] [0 0] [0] > [0 1] X1 + [0 1] X2 + [0] [0 0] [0 0] [0] = c_8(proper#(X1),proper#(X2)) Following rules are (at-least) weakly oriented: proper#(g(X)) = [0 1] X + [0] [0 0] [0] >= [0 1] X + [0] [0 0] [0] = c_9(proper#(X)) top#(mark(X)) = [0 2] X + [2] [0 0] [2] >= [0 1] X + [0] [0 0] [0] = proper#(X) top#(mark(X)) = [0 2] X + [2] [0 0] [2] >= [0 2] X + [2] [0 0] [2] = top#(proper(X)) top#(ok(X)) = [2 8] X + [14] [0 0] [2] >= [2 8] X + [2] [0 0] [2] = top#(active(X)) active(f(X1,X2)) = [2 0] X1 + [1 0] X2 + [0] [0 4] [0 4] [4] >= [2 0] X1 + [1 0] X2 + [0] [0 4] [0 1] [1] = f(active(X1),X2) active(f(g(X),Y)) = [2 0] X + [1 0] Y + [0] [0 4] [0 4] [4] >= [0 0] X + [0 0] Y + [0] [0 2] [0 1] [2] = mark(f(X,f(g(X),Y))) active(g(X)) = [1 0] X + [0] [0 4] [0] >= [1 0] X + [0] [0 4] [0] = g(active(X)) f(mark(X1),X2) = [0 0] X1 + [1 0] X2 + [0] [0 1] [0 1] [1] >= [0 0] X1 + [0 0] X2 + [0] [0 1] [0 1] [1] = mark(f(X1,X2)) f(ok(X1),ok(X2)) = [2 8] X1 + [1 4] X2 + [6] [0 0] [0 0] [9] >= [2 4] X1 + [1 4] X2 + [6] [0 0] [0 0] [4] = ok(f(X1,X2)) g(mark(X)) = [0 0] X + [0] [0 1] [0] >= [0 0] X + [0] [0 1] [0] = mark(g(X)) g(ok(X)) = [1 4] X + [2] [0 0] [4] >= [1 4] X + [2] [0 0] [4] = ok(g(X)) proper(f(X1,X2)) = [0 0] X1 + [0 0] X2 + [0] [0 1] [0 1] [1] >= [0 0] X1 + [0 0] X2 + [0] [0 1] [0 1] [1] = f(proper(X1),proper(X2)) proper(g(X)) = [0 0] X + [0] [0 1] [0] >= [0 0] X + [0] [0 1] [0] = g(proper(X)) ****** Step 3.b:3.a:1.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ****** Step 3.b:3.a:1.b:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) top#(mark(X)) -> proper#(X) top#(mark(X)) -> top#(proper(X)) top#(ok(X)) -> top#(active(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) -->_2 proper#(g(X)) -> c_9(proper#(X)):2 -->_1 proper#(g(X)) -> c_9(proper#(X)):2 -->_2 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):1 -->_1 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):1 2:W:proper#(g(X)) -> c_9(proper#(X)) -->_1 proper#(g(X)) -> c_9(proper#(X)):2 -->_1 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):1 3:W:top#(mark(X)) -> proper#(X) -->_1 proper#(g(X)) -> c_9(proper#(X)):2 -->_1 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):1 4:W:top#(mark(X)) -> top#(proper(X)) -->_1 top#(ok(X)) -> top#(active(X)):5 -->_1 top#(mark(X)) -> top#(proper(X)):4 -->_1 top#(mark(X)) -> proper#(X):3 5:W:top#(ok(X)) -> top#(active(X)) -->_1 top#(ok(X)) -> top#(active(X)):5 -->_1 top#(mark(X)) -> top#(proper(X)):4 -->_1 top#(mark(X)) -> proper#(X):3 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 4: top#(mark(X)) -> top#(proper(X)) 5: top#(ok(X)) -> top#(active(X)) 3: top#(mark(X)) -> proper#(X) 1: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) 2: proper#(g(X)) -> c_9(proper#(X)) ****** Step 3.b:3.a:1.b:1.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). *** Step 3.b:3.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X))) - Weak DPs: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) proper#(g(X)) -> c_9(proper#(X)) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) -->_2 proper#(g(X)) -> c_9(proper#(X)):4 -->_2 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):3 -->_1 top#(ok(X)) -> c_11(top#(active(X))):2 -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1 2:S:top#(ok(X)) -> c_11(top#(active(X))) -->_1 top#(ok(X)) -> c_11(top#(active(X))):2 -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1 3:W:proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) -->_2 proper#(g(X)) -> c_9(proper#(X)):4 -->_1 proper#(g(X)) -> c_9(proper#(X)):4 -->_2 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):3 -->_1 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):3 4:W:proper#(g(X)) -> c_9(proper#(X)) -->_1 proper#(g(X)) -> c_9(proper#(X)):4 -->_1 proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)):3 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 4: proper#(g(X)) -> c_9(proper#(X)) 3: proper#(f(X1,X2)) -> c_8(proper#(X1),proper#(X2)) *** Step 3.b:3.b:2: SimplifyRHS WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/2,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)) -->_1 top#(ok(X)) -> c_11(top#(active(X))):2 -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1 2:S:top#(ok(X)) -> c_11(top#(active(X))) -->_1 top#(ok(X)) -> c_11(top#(active(X))):2 -->_1 top#(mark(X)) -> c_10(top#(proper(X)),proper#(X)):1 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: top#(mark(X)) -> c_10(top#(proper(X))) *** Step 3.b:3.b:3: PredecessorEstimationCP WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X))) top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 2: top#(ok(X)) -> c_11(top#(active(X))) The strictly oriented rules are moved into the weak component. **** Step 3.b:3.b:3.a:1: NaturalMI WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X))) top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_10) = {1}, uargs(c_11) = {1} Following symbols are considered usable: {active,f,g,proper,active#,f#,g#,proper#,top#} TcT has computed the following interpretation: p(active) = [0] p(f) = [4] x1 + [0] p(g) = [2] x1 + [0] p(mark) = [0] p(ok) = [1] p(proper) = [0] p(top) = [2] x1 + [1] p(active#) = [4] p(f#) = [2] x1 + [1] x2 + [1] p(g#) = [4] x1 + [1] p(proper#) = [2] p(top#) = [4] x1 + [0] p(c_1) = [1] x1 + [0] p(c_2) = [1] x2 + [1] x3 + [1] p(c_3) = [1] x1 + [1] x2 + [1] p(c_4) = [1] x1 + [1] p(c_5) = [1] x1 + [4] p(c_6) = [1] p(c_7) = [1] x1 + [0] p(c_8) = [1] x1 + [1] p(c_9) = [1] x1 + [1] p(c_10) = [8] x1 + [0] p(c_11) = [8] x1 + [0] Following rules are strictly oriented: top#(ok(X)) = [4] > [0] = c_11(top#(active(X))) Following rules are (at-least) weakly oriented: top#(mark(X)) = [0] >= [0] = c_10(top#(proper(X))) active(f(X1,X2)) = [0] >= [0] = f(active(X1),X2) active(f(g(X),Y)) = [0] >= [0] = mark(f(X,f(g(X),Y))) active(g(X)) = [0] >= [0] = g(active(X)) f(mark(X1),X2) = [0] >= [0] = mark(f(X1,X2)) f(ok(X1),ok(X2)) = [4] >= [1] = ok(f(X1,X2)) g(mark(X)) = [0] >= [0] = mark(g(X)) g(ok(X)) = [2] >= [1] = ok(g(X)) proper(f(X1,X2)) = [0] >= [0] = f(proper(X1),proper(X2)) proper(g(X)) = [0] >= [0] = g(proper(X)) **** Step 3.b:3.b:3.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X))) - Weak DPs: top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () **** Step 3.b:3.b:3.b:1: PredecessorEstimationCP WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X))) - Weak DPs: top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: top#(mark(X)) -> c_10(top#(proper(X))) The strictly oriented rules are moved into the weak component. ***** Step 3.b:3.b:3.b:1.a:1: NaturalMI WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: top#(mark(X)) -> c_10(top#(proper(X))) - Weak DPs: top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 0, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 0 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_10) = {1}, uargs(c_11) = {1} Following symbols are considered usable: {active,f,g,proper,active#,f#,g#,proper#,top#} TcT has computed the following interpretation: p(active) = [1] p(f) = [1] x1 + [0] p(g) = [1] x1 + [0] p(mark) = [1] p(ok) = [8] p(proper) = [0] p(top) = [0] p(active#) = [0] p(f#) = [1] x1 + [2] x2 + [0] p(g#) = [0] p(proper#) = [2] x1 + [0] p(top#) = [2] x1 + [0] p(c_1) = [1] x2 + [0] p(c_2) = [1] x2 + [4] x3 + [2] p(c_3) = [1] x1 + [1] x2 + [1] p(c_4) = [1] x1 + [1] p(c_5) = [0] p(c_6) = [1] x1 + [2] p(c_7) = [8] x1 + [8] p(c_8) = [1] p(c_9) = [1] p(c_10) = [8] x1 + [1] p(c_11) = [4] x1 + [6] Following rules are strictly oriented: top#(mark(X)) = [2] > [1] = c_10(top#(proper(X))) Following rules are (at-least) weakly oriented: top#(ok(X)) = [16] >= [14] = c_11(top#(active(X))) active(f(X1,X2)) = [1] >= [1] = f(active(X1),X2) active(f(g(X),Y)) = [1] >= [1] = mark(f(X,f(g(X),Y))) active(g(X)) = [1] >= [1] = g(active(X)) f(mark(X1),X2) = [1] >= [1] = mark(f(X1,X2)) f(ok(X1),ok(X2)) = [8] >= [8] = ok(f(X1,X2)) g(mark(X)) = [1] >= [1] = mark(g(X)) g(ok(X)) = [8] >= [8] = ok(g(X)) proper(f(X1,X2)) = [0] >= [0] = f(proper(X1),proper(X2)) proper(g(X)) = [0] >= [0] = g(proper(X)) ***** Step 3.b:3.b:3.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: top#(mark(X)) -> c_10(top#(proper(X))) top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ***** Step 3.b:3.b:3.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: top#(mark(X)) -> c_10(top#(proper(X))) top#(ok(X)) -> c_11(top#(active(X))) - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:top#(mark(X)) -> c_10(top#(proper(X))) -->_1 top#(ok(X)) -> c_11(top#(active(X))):2 -->_1 top#(mark(X)) -> c_10(top#(proper(X))):1 2:W:top#(ok(X)) -> c_11(top#(active(X))) -->_1 top#(ok(X)) -> c_11(top#(active(X))):2 -->_1 top#(mark(X)) -> c_10(top#(proper(X))):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: top#(mark(X)) -> c_10(top#(proper(X))) 2: top#(ok(X)) -> c_11(top#(active(X))) ***** Step 3.b:3.b:3.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: active(f(X1,X2)) -> f(active(X1),X2) active(f(g(X),Y)) -> mark(f(X,f(g(X),Y))) active(g(X)) -> g(active(X)) f(mark(X1),X2) -> mark(f(X1,X2)) f(ok(X1),ok(X2)) -> ok(f(X1,X2)) g(mark(X)) -> mark(g(X)) g(ok(X)) -> ok(g(X)) proper(f(X1,X2)) -> f(proper(X1),proper(X2)) proper(g(X)) -> g(proper(X)) - Signature: {active/1,f/2,g/1,proper/1,top/1,active#/1,f#/2,g#/1,proper#/1,top#/1} / {mark/1,ok/1,c_1/2,c_2/3,c_3/2 ,c_4/1,c_5/1,c_6/1,c_7/1,c_8/2,c_9/1,c_10/1,c_11/1} - Obligation: innermost runtime complexity wrt. defined symbols {active#,f#,g#,proper#,top#} and constructors {mark,ok} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). WORST_CASE(?,O(n^2))