WORST_CASE(?,O(n^1)) * Step 1: DependencyPairs WORST_CASE(?,O(n^1)) + Considered Problem: - Strict TRS: a(C(x1,x2),y) -> C(a(x1,y),a(x2,C(x1,x2))) a(Z(),y) -> 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/2,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_ = WIDP} + Details: We add the following weak innermost dependency pairs: Strict DPs a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) a#(Z(),y) -> c_2() eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(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: UsableRules WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) a#(Z(),y) -> c_2() eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(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() - Strict TRS: a(C(x1,x2),y) -> C(a(x1,y),a(x2,C(x1,x2))) a(Z(),y) -> 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 DPs: and#(False(),False()) -> c_9() and#(False(),True()) -> c_10() and#(True(),False()) -> c_11() and#(True(),True()) -> c_12() - Weak TRS: and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() - Signature: {a/2,and/2,eqZList/2,first/1,second/1,a#/2,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/1,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: 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() a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) a#(Z(),y) -> 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),C(y1,y2)) -> c_3(and#(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() * Step 3: WeightGap WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) a#(Z(),y) -> c_2() eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(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() - Strict TRS: 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() - Weak DPs: and#(False(),False()) -> c_9() and#(False(),True()) -> c_10() and#(True(),False()) -> c_11() and#(True(),True()) -> c_12() - Weak TRS: and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() - Signature: {a/2,and/2,eqZList/2,first/1,second/1,a#/2,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/1,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 = WgOnTrs} + 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(and) = {1,2}, uargs(and#) = {1,2}, uargs(c_1) = {1,2}, uargs(c_3) = {1} Following symbols are considered usable: all TcT has computed the following interpretation: p(C) = [1] x1 + [1] x2 + [2] p(False) = [0] p(True) = [0] p(Z) = [0] p(a) = [0] p(and) = [1] x1 + [1] x2 + [0] p(eqZList) = [1] x1 + [1] x2 + [3] p(first) = [0] p(second) = [0] p(a#) = [1] x1 + [6] p(and#) = [1] x1 + [1] x2 + [0] p(eqZList#) = [1] x1 + [1] x2 + [2] p(first#) = [0] p(second#) = [0] p(c_1) = [1] x1 + [1] x2 + [0] p(c_2) = [0] p(c_3) = [1] x1 + [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] Following rules are strictly oriented: a#(Z(),y) = [6] > [0] = c_2() eqZList#(C(x1,x2),Z()) = [1] x1 + [1] x2 + [4] > [0] = c_4() eqZList#(Z(),C(y1,y2)) = [1] y1 + [1] y2 + [4] > [0] = c_5() eqZList#(Z(),Z()) = [2] > [0] = c_6() eqZList(C(x1,x2),C(y1,y2)) = [1] x1 + [1] x2 + [1] y1 + [1] y2 + [7] > [1] x1 + [1] x2 + [1] y1 + [1] y2 + [6] = and(eqZList(x1,y1),eqZList(x2,y2)) eqZList(C(x1,x2),Z()) = [1] x1 + [1] x2 + [5] > [0] = False() eqZList(Z(),C(y1,y2)) = [1] y1 + [1] y2 + [5] > [0] = False() eqZList(Z(),Z()) = [3] > [0] = True() Following rules are (at-least) weakly oriented: a#(C(x1,x2),y) = [1] x1 + [1] x2 + [8] >= [1] x1 + [1] x2 + [12] = c_1(a#(x1,y),a#(x2,C(x1,x2))) and#(False(),False()) = [0] >= [0] = c_9() and#(False(),True()) = [0] >= [0] = c_10() and#(True(),False()) = [0] >= [0] = c_11() and#(True(),True()) = [0] >= [0] = c_12() eqZList#(C(x1,x2),C(y1,y2)) = [1] x1 + [1] x2 + [1] y1 + [1] y2 + [6] >= [1] x1 + [1] x2 + [1] y1 + [1] y2 + [6] = c_3(and#(eqZList(x1,y1),eqZList(x2,y2))) first#(C(x1,x2)) = [0] >= [0] = c_7() second#(C(x1,x2)) = [0] >= [0] = c_8() and(False(),False()) = [0] >= [0] = False() and(False(),True()) = [0] >= [0] = False() and(True(),False()) = [0] >= [0] = False() and(True(),True()) = [0] >= [0] = True() Further, it can be verified that all rules not oriented are covered by the weightgap condition. * Step 4: PredecessorEstimation WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2))) first#(C(x1,x2)) -> c_7() second#(C(x1,x2)) -> c_8() - Weak DPs: a#(Z(),y) -> 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() - Weak TRS: 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() - Signature: {a/2,and/2,eqZList/2,first/1,second/1,a#/2,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/1,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,3,4} by application of Pre({2,3,4}) = {}. Here rules are labelled as follows: 1: a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) 2: eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2))) 3: first#(C(x1,x2)) -> c_7() 4: second#(C(x1,x2)) -> c_8() 5: a#(Z(),y) -> c_2() 6: and#(False(),False()) -> c_9() 7: and#(False(),True()) -> c_10() 8: and#(True(),False()) -> c_11() 9: and#(True(),True()) -> c_12() 10: eqZList#(C(x1,x2),Z()) -> c_4() 11: eqZList#(Z(),C(y1,y2)) -> c_5() 12: eqZList#(Z(),Z()) -> c_6() * Step 5: RemoveWeakSuffixes WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) - Weak DPs: a#(Z(),y) -> 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),C(y1,y2)) -> c_3(and#(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 TRS: 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() - Signature: {a/2,and/2,eqZList/2,first/1,second/1,a#/2,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/1,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) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) -->_2 a#(Z(),y) -> c_2():2 -->_1 a#(Z(),y) -> c_2():2 -->_2 a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))):1 -->_1 a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))):1 2:W:a#(Z(),y) -> c_2() 3:W:and#(False(),False()) -> c_9() 4:W:and#(False(),True()) -> c_10() 5:W:and#(True(),False()) -> c_11() 6:W:and#(True(),True()) -> c_12() 7:W:eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2))) -->_1 and#(True(),True()) -> c_12():6 -->_1 and#(True(),False()) -> c_11():5 -->_1 and#(False(),True()) -> c_10():4 -->_1 and#(False(),False()) -> c_9():3 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() 10: eqZList#(Z(),Z()) -> c_6() 9: eqZList#(Z(),C(y1,y2)) -> c_5() 8: eqZList#(C(x1,x2),Z()) -> c_4() 7: eqZList#(C(x1,x2),C(y1,y2)) -> c_3(and#(eqZList(x1,y1),eqZList(x2,y2))) 6: and#(True(),True()) -> c_12() 5: and#(True(),False()) -> c_11() 4: and#(False(),True()) -> c_10() 3: and#(False(),False()) -> c_9() 2: a#(Z(),y) -> c_2() * Step 6: UsableRules WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) - Weak TRS: 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() - Signature: {a/2,and/2,eqZList/2,first/1,second/1,a#/2,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/1,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) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) * Step 7: PredecessorEstimationCP WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) - Signature: {a/2,and/2,eqZList/2,first/1,second/1,a#/2,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/1,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: 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: a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) The strictly oriented rules are moved into the weak component. ** Step 7.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) - Signature: {a/2,and/2,eqZList/2,first/1,second/1,a#/2,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/1,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: 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,2} Following symbols are considered usable: {a#,and#,eqZList#,first#,second#} TcT has computed the following interpretation: p(C) = [1] x1 + [1] x2 + [2] p(False) = [1] p(True) = [8] p(Z) = [8] p(a) = [1] x1 + [1] x2 + [1] p(and) = [1] x1 + [1] x2 + [2] p(eqZList) = [0] p(first) = [8] x1 + [0] p(second) = [2] x1 + [1] p(a#) = [8] x1 + [0] p(and#) = [1] x1 + [4] x2 + [2] p(eqZList#) = [2] x1 + [1] p(first#) = [0] p(second#) = [1] x1 + [0] p(c_1) = [1] x1 + [1] x2 + [8] p(c_2) = [0] p(c_3) = [1] x1 + [1] p(c_4) = [1] p(c_5) = [1] p(c_6) = [0] p(c_7) = [0] p(c_8) = [1] p(c_9) = [4] p(c_10) = [1] p(c_11) = [4] p(c_12) = [0] Following rules are strictly oriented: a#(C(x1,x2),y) = [8] x1 + [8] x2 + [16] > [8] x1 + [8] x2 + [8] = c_1(a#(x1,y),a#(x2,C(x1,x2))) Following rules are (at-least) weakly oriented: ** Step 7.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) - Signature: {a/2,and/2,eqZList/2,first/1,second/1,a#/2,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/1,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: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ** Step 7.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) - Signature: {a/2,and/2,eqZList/2,first/1,second/1,a#/2,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/1,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:W:a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) -->_2 a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))):1 -->_1 a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: a#(C(x1,x2),y) -> c_1(a#(x1,y),a#(x2,C(x1,x2))) ** Step 7.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Signature: {a/2,and/2,eqZList/2,first/1,second/1,a#/2,and#/2,eqZList#/2,first#/1,second#/1} / {C/2,False/0,True/0,Z/0 ,c_1/2,c_2/0,c_3/1,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))