WORST_CASE(?,O(n^1)) * Step 1: DependencyPairs WORST_CASE(?,O(n^1)) + Considered Problem: - Strict TRS: a(C(x1,x2),y,z) -> C(a(x1,y,z),a(x2,y,y)) a(Z(),y,z) -> Z() eqZList(C(x1,x2),C(y1,y2)) -> and(eqZList(x1,y1),eqZList(x2,y2)) eqZList(C(x1,x2),Z()) -> False() eqZList(Z(),C(y1,y2)) -> False() eqZList(Z(),Z()) -> True() first(C(x1,x2)) -> x1 second(C(x1,x2)) -> x2 - Weak TRS: and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() - Signature: {a/3,and/2,eqZList/2,first/1,second/1} / {C/2,False/0,True/0,Z/0} - Obligation: innermost runtime complexity wrt. defined symbols {a,and,eqZList,first,second} and constructors {C,False ,True,Z} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)) a#(Z(),y,z) -> c_2() eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2)),eqZList#(x1,y1),eqZList#(x2,y2)) eqZList#(C(x1,x2),Z()) -> c_4() eqZList#(Z(),C(y1,y2)) -> c_5() eqZList#(Z(),Z()) -> c_6() first#(C(x1,x2)) -> c_7() second#(C(x1,x2)) -> c_8() Weak DPs and#(False(),False()) -> c_9() and#(False(),True()) -> c_10() and#(True(),False()) -> c_11() and#(True(),True()) -> c_12() and mark the set of starting terms. * Step 2: PredecessorEstimation WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)) a#(Z(),y,z) -> c_2() eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2)),eqZList#(x1,y1),eqZList#(x2,y2)) eqZList#(C(x1,x2),Z()) -> c_4() eqZList#(Z(),C(y1,y2)) -> c_5() eqZList#(Z(),Z()) -> c_6() first#(C(x1,x2)) -> c_7() second#(C(x1,x2)) -> c_8() - Weak DPs: and#(False(),False()) -> c_9() and#(False(),True()) -> c_10() and#(True(),False()) -> c_11() and#(True(),True()) -> c_12() - Weak TRS: a(C(x1,x2),y,z) -> C(a(x1,y,z),a(x2,y,y)) a(Z(),y,z) -> Z() and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() eqZList(C(x1,x2),C(y1,y2)) -> and(eqZList(x1,y1),eqZList(x2,y2)) eqZList(C(x1,x2),Z()) -> False() eqZList(Z(),C(y1,y2)) -> False() eqZList(Z(),Z()) -> True() first(C(x1,x2)) -> x1 second(C(x1,x2)) -> x2 - Signature: {a/3,and/2,eqZList/2,first/1,second/1,a#/3,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/3,c_4/0,c_5/0,c_6/0,c_7/0,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0} - Obligation: innermost runtime complexity wrt. defined symbols {a#,and#,eqZList#,first#,second#} and constructors {C ,False,True,Z} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {2,4,5,6,7,8} by application of Pre({2,4,5,6,7,8}) = {1,3}. Here rules are labelled as follows: 1: a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)) 2: a#(Z(),y,z) -> c_2() 3: eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2)),eqZList#(x1,y1),eqZList#(x2,y2)) 4: eqZList#(C(x1,x2),Z()) -> c_4() 5: eqZList#(Z(),C(y1,y2)) -> c_5() 6: eqZList#(Z(),Z()) -> c_6() 7: first#(C(x1,x2)) -> c_7() 8: second#(C(x1,x2)) -> c_8() 9: and#(False(),False()) -> c_9() 10: and#(False(),True()) -> c_10() 11: and#(True(),False()) -> c_11() 12: and#(True(),True()) -> c_12() * Step 3: RemoveWeakSuffixes WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)) eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2)),eqZList#(x1,y1),eqZList#(x2,y2)) - Weak DPs: a#(Z(),y,z) -> c_2() and#(False(),False()) -> c_9() and#(False(),True()) -> c_10() and#(True(),False()) -> c_11() and#(True(),True()) -> c_12() eqZList#(C(x1,x2),Z()) -> c_4() eqZList#(Z(),C(y1,y2)) -> c_5() eqZList#(Z(),Z()) -> c_6() first#(C(x1,x2)) -> c_7() second#(C(x1,x2)) -> c_8() - Weak TRS: a(C(x1,x2),y,z) -> C(a(x1,y,z),a(x2,y,y)) a(Z(),y,z) -> Z() and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() eqZList(C(x1,x2),C(y1,y2)) -> and(eqZList(x1,y1),eqZList(x2,y2)) eqZList(C(x1,x2),Z()) -> False() eqZList(Z(),C(y1,y2)) -> False() eqZList(Z(),Z()) -> True() first(C(x1,x2)) -> x1 second(C(x1,x2)) -> x2 - Signature: {a/3,and/2,eqZList/2,first/1,second/1,a#/3,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/3,c_4/0,c_5/0,c_6/0,c_7/0,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0} - Obligation: innermost runtime complexity wrt. defined symbols {a#,and#,eqZList#,first#,second#} and constructors {C ,False,True,Z} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)) -->_2 a#(Z(),y,z) -> c_2():3 -->_1 a#(Z(),y,z) -> c_2():3 -->_2 a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)):1 -->_1 a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)):1 2:S:eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2)),eqZList#(x1,y1),eqZList#(x2,y2)) -->_3 eqZList#(Z(),Z()) -> c_6():10 -->_2 eqZList#(Z(),Z()) -> c_6():10 -->_3 eqZList#(Z(),C(y1,y2)) -> c_5():9 -->_2 eqZList#(Z(),C(y1,y2)) -> c_5():9 -->_3 eqZList#(C(x1,x2),Z()) -> c_4():8 -->_2 eqZList#(C(x1,x2),Z()) -> c_4():8 -->_1 and#(True(),True()) -> c_12():7 -->_1 and#(True(),False()) -> c_11():6 -->_1 and#(False(),True()) -> c_10():5 -->_1 and#(False(),False()) -> c_9():4 -->_3 eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2)) ,eqZList#(x1,y1) ,eqZList#(x2,y2)):2 -->_2 eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2)) ,eqZList#(x1,y1) ,eqZList#(x2,y2)):2 3:W:a#(Z(),y,z) -> c_2() 4:W:and#(False(),False()) -> c_9() 5:W:and#(False(),True()) -> c_10() 6:W:and#(True(),False()) -> c_11() 7:W:and#(True(),True()) -> c_12() 8:W:eqZList#(C(x1,x2),Z()) -> c_4() 9:W:eqZList#(Z(),C(y1,y2)) -> c_5() 10:W:eqZList#(Z(),Z()) -> c_6() 11:W:first#(C(x1,x2)) -> c_7() 12:W:second#(C(x1,x2)) -> c_8() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 12: second#(C(x1,x2)) -> c_8() 11: first#(C(x1,x2)) -> c_7() 4: and#(False(),False()) -> c_9() 5: and#(False(),True()) -> c_10() 6: and#(True(),False()) -> c_11() 7: and#(True(),True()) -> c_12() 8: eqZList#(C(x1,x2),Z()) -> c_4() 9: eqZList#(Z(),C(y1,y2)) -> c_5() 10: eqZList#(Z(),Z()) -> c_6() 3: a#(Z(),y,z) -> c_2() * Step 4: SimplifyRHS WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)) eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2)),eqZList#(x1,y1),eqZList#(x2,y2)) - Weak TRS: a(C(x1,x2),y,z) -> C(a(x1,y,z),a(x2,y,y)) a(Z(),y,z) -> Z() and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() eqZList(C(x1,x2),C(y1,y2)) -> and(eqZList(x1,y1),eqZList(x2,y2)) eqZList(C(x1,x2),Z()) -> False() eqZList(Z(),C(y1,y2)) -> False() eqZList(Z(),Z()) -> True() first(C(x1,x2)) -> x1 second(C(x1,x2)) -> x2 - Signature: {a/3,and/2,eqZList/2,first/1,second/1,a#/3,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/3,c_4/0,c_5/0,c_6/0,c_7/0,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0} - Obligation: innermost runtime complexity wrt. defined symbols {a#,and#,eqZList#,first#,second#} and constructors {C ,False,True,Z} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)) -->_2 a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)):1 -->_1 a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)):1 2:S:eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2)),eqZList#(x1,y1),eqZList#(x2,y2)) -->_3 eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2)) ,eqZList#(x1,y1) ,eqZList#(x2,y2)):2 -->_2 eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2)) ,eqZList#(x1,y1) ,eqZList#(x2,y2)):2 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: eqZList#(C(x1,x2),C(y1,y2)) -> c_3(eqZList#(x1,y1),eqZList#(x2,y2)) * Step 5: UsableRules WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)) eqZList#(C(x1,x2),C(y1,y2)) -> c_3(eqZList#(x1,y1),eqZList#(x2,y2)) - Weak TRS: a(C(x1,x2),y,z) -> C(a(x1,y,z),a(x2,y,y)) a(Z(),y,z) -> Z() and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() eqZList(C(x1,x2),C(y1,y2)) -> and(eqZList(x1,y1),eqZList(x2,y2)) eqZList(C(x1,x2),Z()) -> False() eqZList(Z(),C(y1,y2)) -> False() eqZList(Z(),Z()) -> True() first(C(x1,x2)) -> x1 second(C(x1,x2)) -> x2 - Signature: {a/3,and/2,eqZList/2,first/1,second/1,a#/3,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/2,c_4/0,c_5/0,c_6/0,c_7/0,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0} - Obligation: innermost runtime complexity wrt. defined symbols {a#,and#,eqZList#,first#,second#} and constructors {C ,False,True,Z} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)) eqZList#(C(x1,x2),C(y1,y2)) -> c_3(eqZList#(x1,y1),eqZList#(x2,y2)) * Step 6: WeightGap WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)) eqZList#(C(x1,x2),C(y1,y2)) -> c_3(eqZList#(x1,y1),eqZList#(x2,y2)) - Signature: {a/3,and/2,eqZList/2,first/1,second/1,a#/3,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/2,c_4/0,c_5/0,c_6/0,c_7/0,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0} - Obligation: innermost runtime complexity wrt. defined symbols {a#,and#,eqZList#,first#,second#} and constructors {C ,False,True,Z} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following constant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_1) = {1,2}, uargs(c_3) = {1,2} Following symbols are considered usable: all TcT has computed the following interpretation: p(C) = [1] x1 + [1] x2 + [8] p(False) = [2] p(True) = [1] p(Z) = [1] p(a) = [2] x1 + [8] x2 + [0] p(and) = [1] x1 + [1] x2 + [0] p(eqZList) = [2] x1 + [2] p(first) = [8] x1 + [4] p(second) = [1] x1 + [1] p(a#) = [0] p(and#) = [2] x2 + [0] p(eqZList#) = [2] x2 + [4] p(first#) = [1] x1 + [4] p(second#) = [1] p(c_1) = [1] x1 + [1] x2 + [6] p(c_2) = [1] p(c_3) = [1] x1 + [1] x2 + [6] p(c_4) = [1] p(c_5) = [2] p(c_6) = [8] p(c_7) = [1] p(c_8) = [0] p(c_9) = [1] p(c_10) = [1] p(c_11) = [4] p(c_12) = [4] Following rules are strictly oriented: eqZList#(C(x1,x2),C(y1,y2)) = [2] y1 + [2] y2 + [20] > [2] y1 + [2] y2 + [14] = c_3(eqZList#(x1,y1),eqZList#(x2,y2)) Following rules are (at-least) weakly oriented: a#(C(x1,x2),y,z) = [0] >= [6] = c_1(a#(x1,y,z),a#(x2,y,y)) Further, it can be verified that all rules not oriented are covered by the weightgap condition. * Step 7: WeightGap WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)) - Weak DPs: eqZList#(C(x1,x2),C(y1,y2)) -> c_3(eqZList#(x1,y1),eqZList#(x2,y2)) - Signature: {a/3,and/2,eqZList/2,first/1,second/1,a#/3,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/2,c_4/0,c_5/0,c_6/0,c_7/0,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0} - Obligation: innermost runtime complexity wrt. defined symbols {a#,and#,eqZList#,first#,second#} and constructors {C ,False,True,Z} + Applied Processor: WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny} + Details: The weightgap principle applies using the following constant growth matrix-interpretation: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_1) = {1,2}, uargs(c_3) = {1,2} Following symbols are considered usable: all TcT has computed the following interpretation: p(C) = [1] x1 + [1] x2 + [8] p(False) = [1] p(True) = [1] p(Z) = [1] p(a) = [1] x1 + [2] x2 + [2] x3 + [1] p(and) = [2] x1 + [1] x2 + [1] p(eqZList) = [2] x1 + [1] x2 + [1] p(first) = [8] p(second) = [1] p(a#) = [2] x1 + [1] p(and#) = [1] x1 + [8] x2 + [1] p(eqZList#) = [1] x1 + [0] p(first#) = [1] x1 + [8] p(second#) = [1] x1 + [1] p(c_1) = [1] x1 + [1] x2 + [14] p(c_2) = [0] p(c_3) = [1] x1 + [1] x2 + [8] p(c_4) = [0] p(c_5) = [2] p(c_6) = [0] p(c_7) = [0] p(c_8) = [1] p(c_9) = [0] p(c_10) = [1] p(c_11) = [4] p(c_12) = [0] Following rules are strictly oriented: a#(C(x1,x2),y,z) = [2] x1 + [2] x2 + [17] > [2] x1 + [2] x2 + [16] = c_1(a#(x1,y,z),a#(x2,y,y)) Following rules are (at-least) weakly oriented: eqZList#(C(x1,x2),C(y1,y2)) = [1] x1 + [1] x2 + [8] >= [1] x1 + [1] x2 + [8] = c_3(eqZList#(x1,y1),eqZList#(x2,y2)) Further, it can be verified that all rules not oriented are covered by the weightgap condition. * Step 8: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: a#(C(x1,x2),y,z) -> c_1(a#(x1,y,z),a#(x2,y,y)) eqZList#(C(x1,x2),C(y1,y2)) -> c_3(eqZList#(x1,y1),eqZList#(x2,y2)) - Signature: {a/3,and/2,eqZList/2,first/1,second/1,a#/3,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/2,c_4/0,c_5/0,c_6/0,c_7/0,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0} - Obligation: innermost runtime complexity wrt. defined symbols {a#,and#,eqZList#,first#,second#} and constructors {C ,False,True,Z} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). WORST_CASE(?,O(n^1))