WORST_CASE(Omega(n^1),O(n^1)) * Step 1: Sum. WORST_CASE(Omega(n^1),O(n^1)) + Considered Problem: - Strict TRS: PURGE(.(z0,z1)) -> c1(PURGE(remove(z0,z1)),REMOVE(z0,z1)) PURGE(nil()) -> c() REMOVE(z0,.(z1,z2)) -> c3(REMOVE(z0,z2)) REMOVE(z0,.(z1,z2)) -> c4(REMOVE(z0,z2)) REMOVE(z0,nil()) -> c2() - Weak TRS: purge(.(z0,z1)) -> .(z0,purge(remove(z0,z1))) purge(nil()) -> nil() remove(z0,.(z1,z2)) -> if(=(z0,z1),remove(z0,z2),.(z1,remove(z0,z2))) remove(z0,nil()) -> nil() - Signature: {PURGE/1,REMOVE/2,purge/1,remove/2} / {./2,=/2,c/0,c1/2,c2/0,c3/1,c4/1,if/3,nil/0} - Obligation: innermost runtime complexity wrt. defined symbols {PURGE,REMOVE,purge,remove} and constructors {.,=,c,c1,c2 ,c3,c4,if,nil} + Applied Processor: Sum {left = someStrategy, right = someStrategy} + Details: () ** Step 1.a:1: Sum. WORST_CASE(Omega(n^1),?) + Considered Problem: - Strict TRS: PURGE(.(z0,z1)) -> c1(PURGE(remove(z0,z1)),REMOVE(z0,z1)) PURGE(nil()) -> c() REMOVE(z0,.(z1,z2)) -> c3(REMOVE(z0,z2)) REMOVE(z0,.(z1,z2)) -> c4(REMOVE(z0,z2)) REMOVE(z0,nil()) -> c2() - Weak TRS: purge(.(z0,z1)) -> .(z0,purge(remove(z0,z1))) purge(nil()) -> nil() remove(z0,.(z1,z2)) -> if(=(z0,z1),remove(z0,z2),.(z1,remove(z0,z2))) remove(z0,nil()) -> nil() - Signature: {PURGE/1,REMOVE/2,purge/1,remove/2} / {./2,=/2,c/0,c1/2,c2/0,c3/1,c4/1,if/3,nil/0} - Obligation: innermost runtime complexity wrt. defined symbols {PURGE,REMOVE,purge,remove} and constructors {.,=,c,c1,c2 ,c3,c4,if,nil} + Applied Processor: Sum {left = someStrategy, right = someStrategy} + Details: () ** Step 1.a:2: DecreasingLoops. WORST_CASE(Omega(n^1),?) + Considered Problem: - Strict TRS: PURGE(.(z0,z1)) -> c1(PURGE(remove(z0,z1)),REMOVE(z0,z1)) PURGE(nil()) -> c() REMOVE(z0,.(z1,z2)) -> c3(REMOVE(z0,z2)) REMOVE(z0,.(z1,z2)) -> c4(REMOVE(z0,z2)) REMOVE(z0,nil()) -> c2() - Weak TRS: purge(.(z0,z1)) -> .(z0,purge(remove(z0,z1))) purge(nil()) -> nil() remove(z0,.(z1,z2)) -> if(=(z0,z1),remove(z0,z2),.(z1,remove(z0,z2))) remove(z0,nil()) -> nil() - Signature: {PURGE/1,REMOVE/2,purge/1,remove/2} / {./2,=/2,c/0,c1/2,c2/0,c3/1,c4/1,if/3,nil/0} - Obligation: innermost runtime complexity wrt. defined symbols {PURGE,REMOVE,purge,remove} and constructors {.,=,c,c1,c2 ,c3,c4,if,nil} + Applied Processor: DecreasingLoops {bound = AnyLoop, narrow = 10} + Details: The system has following decreasing Loops: REMOVE(x,z){z -> .(y,z)} = REMOVE(x,.(y,z)) ->^+ c3(REMOVE(x,z)) = C[REMOVE(x,z) = REMOVE(x,z){}] ** Step 1.b:1: DependencyPairs. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict TRS: PURGE(.(z0,z1)) -> c1(PURGE(remove(z0,z1)),REMOVE(z0,z1)) PURGE(nil()) -> c() REMOVE(z0,.(z1,z2)) -> c3(REMOVE(z0,z2)) REMOVE(z0,.(z1,z2)) -> c4(REMOVE(z0,z2)) REMOVE(z0,nil()) -> c2() - Weak TRS: purge(.(z0,z1)) -> .(z0,purge(remove(z0,z1))) purge(nil()) -> nil() remove(z0,.(z1,z2)) -> if(=(z0,z1),remove(z0,z2),.(z1,remove(z0,z2))) remove(z0,nil()) -> nil() - Signature: {PURGE/1,REMOVE/2,purge/1,remove/2} / {./2,=/2,c/0,c1/2,c2/0,c3/1,c4/1,if/3,nil/0} - Obligation: innermost runtime complexity wrt. defined symbols {PURGE,REMOVE,purge,remove} and constructors {.,=,c,c1,c2 ,c3,c4,if,nil} + Applied Processor: DependencyPairs {dpKind_ = WIDP} + Details: We add the following weak innermost dependency pairs: Strict DPs PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) PURGE#(nil()) -> c_2() REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)) REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)) REMOVE#(z0,nil()) -> c_5() Weak DPs purge#(.(z0,z1)) -> c_6(purge#(remove(z0,z1))) purge#(nil()) -> c_7() remove#(z0,.(z1,z2)) -> c_8(remove#(z0,z2),remove#(z0,z2)) remove#(z0,nil()) -> c_9() and mark the set of starting terms. ** Step 1.b:2: UsableRules. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) PURGE#(nil()) -> c_2() REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)) REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)) REMOVE#(z0,nil()) -> c_5() - Strict TRS: PURGE(.(z0,z1)) -> c1(PURGE(remove(z0,z1)),REMOVE(z0,z1)) PURGE(nil()) -> c() REMOVE(z0,.(z1,z2)) -> c3(REMOVE(z0,z2)) REMOVE(z0,.(z1,z2)) -> c4(REMOVE(z0,z2)) REMOVE(z0,nil()) -> c2() - Weak DPs: purge#(.(z0,z1)) -> c_6(purge#(remove(z0,z1))) purge#(nil()) -> c_7() remove#(z0,.(z1,z2)) -> c_8(remove#(z0,z2),remove#(z0,z2)) remove#(z0,nil()) -> c_9() - Weak TRS: purge(.(z0,z1)) -> .(z0,purge(remove(z0,z1))) purge(nil()) -> nil() remove(z0,.(z1,z2)) -> if(=(z0,z1),remove(z0,z2),.(z1,remove(z0,z2))) remove(z0,nil()) -> nil() - Signature: {PURGE/1,REMOVE/2,purge/1,remove/2,PURGE#/1,REMOVE#/2,purge#/1,remove#/2} / {./2,=/2,c/0,c1/2,c2/0,c3/1,c4/1 ,if/3,nil/0,c_1/2,c_2/0,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/2,c_9/0} - Obligation: innermost runtime complexity wrt. defined symbols {PURGE#,REMOVE#,purge#,remove#} and constructors {.,=,c,c1 ,c2,c3,c4,if,nil} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: remove(z0,.(z1,z2)) -> if(=(z0,z1),remove(z0,z2),.(z1,remove(z0,z2))) remove(z0,nil()) -> nil() PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) PURGE#(nil()) -> c_2() REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)) REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)) REMOVE#(z0,nil()) -> c_5() purge#(.(z0,z1)) -> c_6(purge#(remove(z0,z1))) purge#(nil()) -> c_7() remove#(z0,.(z1,z2)) -> c_8(remove#(z0,z2),remove#(z0,z2)) remove#(z0,nil()) -> c_9() ** Step 1.b:3: PredecessorEstimation. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) PURGE#(nil()) -> c_2() REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)) REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)) REMOVE#(z0,nil()) -> c_5() - Weak DPs: purge#(.(z0,z1)) -> c_6(purge#(remove(z0,z1))) purge#(nil()) -> c_7() remove#(z0,.(z1,z2)) -> c_8(remove#(z0,z2),remove#(z0,z2)) remove#(z0,nil()) -> c_9() - Weak TRS: remove(z0,.(z1,z2)) -> if(=(z0,z1),remove(z0,z2),.(z1,remove(z0,z2))) remove(z0,nil()) -> nil() - Signature: {PURGE/1,REMOVE/2,purge/1,remove/2,PURGE#/1,REMOVE#/2,purge#/1,remove#/2} / {./2,=/2,c/0,c1/2,c2/0,c3/1,c4/1 ,if/3,nil/0,c_1/2,c_2/0,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/2,c_9/0} - Obligation: innermost runtime complexity wrt. defined symbols {PURGE#,REMOVE#,purge#,remove#} and constructors {.,=,c,c1 ,c2,c3,c4,if,nil} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {2,5} by application of Pre({2,5}) = {1,3,4}. Here rules are labelled as follows: 1: PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) 2: PURGE#(nil()) -> c_2() 3: REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)) 4: REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)) 5: REMOVE#(z0,nil()) -> c_5() 6: purge#(.(z0,z1)) -> c_6(purge#(remove(z0,z1))) 7: purge#(nil()) -> c_7() 8: remove#(z0,.(z1,z2)) -> c_8(remove#(z0,z2),remove#(z0,z2)) 9: remove#(z0,nil()) -> c_9() ** Step 1.b:4: RemoveWeakSuffixes. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)) REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)) - Weak DPs: PURGE#(nil()) -> c_2() REMOVE#(z0,nil()) -> c_5() purge#(.(z0,z1)) -> c_6(purge#(remove(z0,z1))) purge#(nil()) -> c_7() remove#(z0,.(z1,z2)) -> c_8(remove#(z0,z2),remove#(z0,z2)) remove#(z0,nil()) -> c_9() - Weak TRS: remove(z0,.(z1,z2)) -> if(=(z0,z1),remove(z0,z2),.(z1,remove(z0,z2))) remove(z0,nil()) -> nil() - Signature: {PURGE/1,REMOVE/2,purge/1,remove/2,PURGE#/1,REMOVE#/2,purge#/1,remove#/2} / {./2,=/2,c/0,c1/2,c2/0,c3/1,c4/1 ,if/3,nil/0,c_1/2,c_2/0,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/2,c_9/0} - Obligation: innermost runtime complexity wrt. defined symbols {PURGE#,REMOVE#,purge#,remove#} and constructors {.,=,c,c1 ,c2,c3,c4,if,nil} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) -->_2 REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)):3 -->_2 REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)):2 -->_2 REMOVE#(z0,nil()) -> c_5():5 -->_1 PURGE#(nil()) -> c_2():4 -->_1 PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)):1 2:S:REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)) -->_1 REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)):3 -->_1 REMOVE#(z0,nil()) -> c_5():5 -->_1 REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)):2 3:S:REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)) -->_1 REMOVE#(z0,nil()) -> c_5():5 -->_1 REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)):3 -->_1 REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)):2 4:W:PURGE#(nil()) -> c_2() 5:W:REMOVE#(z0,nil()) -> c_5() 6:W:purge#(.(z0,z1)) -> c_6(purge#(remove(z0,z1))) -->_1 purge#(nil()) -> c_7():7 -->_1 purge#(.(z0,z1)) -> c_6(purge#(remove(z0,z1))):6 7:W:purge#(nil()) -> c_7() 8:W:remove#(z0,.(z1,z2)) -> c_8(remove#(z0,z2),remove#(z0,z2)) -->_2 remove#(z0,nil()) -> c_9():9 -->_1 remove#(z0,nil()) -> c_9():9 -->_2 remove#(z0,.(z1,z2)) -> c_8(remove#(z0,z2),remove#(z0,z2)):8 -->_1 remove#(z0,.(z1,z2)) -> c_8(remove#(z0,z2),remove#(z0,z2)):8 9:W:remove#(z0,nil()) -> c_9() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 8: remove#(z0,.(z1,z2)) -> c_8(remove#(z0,z2),remove#(z0,z2)) 9: remove#(z0,nil()) -> c_9() 6: purge#(.(z0,z1)) -> c_6(purge#(remove(z0,z1))) 7: purge#(nil()) -> c_7() 4: PURGE#(nil()) -> c_2() 5: REMOVE#(z0,nil()) -> c_5() ** Step 1.b:5: PredecessorEstimationCP. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)) REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)) - Weak TRS: remove(z0,.(z1,z2)) -> if(=(z0,z1),remove(z0,z2),.(z1,remove(z0,z2))) remove(z0,nil()) -> nil() - Signature: {PURGE/1,REMOVE/2,purge/1,remove/2,PURGE#/1,REMOVE#/2,purge#/1,remove#/2} / {./2,=/2,c/0,c1/2,c2/0,c3/1,c4/1 ,if/3,nil/0,c_1/2,c_2/0,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/2,c_9/0} - Obligation: innermost runtime complexity wrt. defined symbols {PURGE#,REMOVE#,purge#,remove#} and constructors {.,=,c,c1 ,c2,c3,c4,if,nil} + 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: PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) 2: REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)) 3: REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)) The strictly oriented rules are moved into the weak component. *** Step 1.b:5.a:1: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)) REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)) - Weak TRS: remove(z0,.(z1,z2)) -> if(=(z0,z1),remove(z0,z2),.(z1,remove(z0,z2))) remove(z0,nil()) -> nil() - Signature: {PURGE/1,REMOVE/2,purge/1,remove/2,PURGE#/1,REMOVE#/2,purge#/1,remove#/2} / {./2,=/2,c/0,c1/2,c2/0,c3/1,c4/1 ,if/3,nil/0,c_1/2,c_2/0,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/2,c_9/0} - Obligation: innermost runtime complexity wrt. defined symbols {PURGE#,REMOVE#,purge#,remove#} and constructors {.,=,c,c1 ,c2,c3,c4,if,nil} + 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}, uargs(c_3) = {1}, uargs(c_4) = {1} Following symbols are considered usable: {remove,PURGE#,REMOVE#,purge#,remove#} TcT has computed the following interpretation: p(.) = [1] x2 + [2] p(=) = [1] x2 + [8] p(PURGE) = [2] x1 + [0] p(REMOVE) = [1] x1 + [2] p(c) = [1] p(c1) = [1] x1 + [0] p(c2) = [2] p(c3) = [1] p(c4) = [0] p(if) = [1] x2 + [0] p(nil) = [0] p(purge) = [1] x1 + [0] p(remove) = [0] p(PURGE#) = [9] x1 + [0] p(REMOVE#) = [1] x2 + [0] p(purge#) = [1] x1 + [2] p(remove#) = [0] p(c_1) = [8] x1 + [4] x2 + [9] p(c_2) = [0] p(c_3) = [1] x1 + [0] p(c_4) = [1] x1 + [0] p(c_5) = [2] p(c_6) = [1] x1 + [1] p(c_7) = [8] p(c_8) = [2] x2 + [8] p(c_9) = [0] Following rules are strictly oriented: PURGE#(.(z0,z1)) = [9] z1 + [18] > [4] z1 + [9] = c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) REMOVE#(z0,.(z1,z2)) = [1] z2 + [2] > [1] z2 + [0] = c_3(REMOVE#(z0,z2)) REMOVE#(z0,.(z1,z2)) = [1] z2 + [2] > [1] z2 + [0] = c_4(REMOVE#(z0,z2)) Following rules are (at-least) weakly oriented: remove(z0,.(z1,z2)) = [0] >= [0] = if(=(z0,z1),remove(z0,z2),.(z1,remove(z0,z2))) remove(z0,nil()) = [0] >= [0] = nil() *** Step 1.b:5.a:2: Assumption. WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)) REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)) - Weak TRS: remove(z0,.(z1,z2)) -> if(=(z0,z1),remove(z0,z2),.(z1,remove(z0,z2))) remove(z0,nil()) -> nil() - Signature: {PURGE/1,REMOVE/2,purge/1,remove/2,PURGE#/1,REMOVE#/2,purge#/1,remove#/2} / {./2,=/2,c/0,c1/2,c2/0,c3/1,c4/1 ,if/3,nil/0,c_1/2,c_2/0,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/2,c_9/0} - Obligation: innermost runtime complexity wrt. defined symbols {PURGE#,REMOVE#,purge#,remove#} and constructors {.,=,c,c1 ,c2,c3,c4,if,nil} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown, timeBCUB = Unknown, timeBCLB = Unknown}} + Details: () *** Step 1.b:5.b:1: RemoveWeakSuffixes. WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)) REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)) - Weak TRS: remove(z0,.(z1,z2)) -> if(=(z0,z1),remove(z0,z2),.(z1,remove(z0,z2))) remove(z0,nil()) -> nil() - Signature: {PURGE/1,REMOVE/2,purge/1,remove/2,PURGE#/1,REMOVE#/2,purge#/1,remove#/2} / {./2,=/2,c/0,c1/2,c2/0,c3/1,c4/1 ,if/3,nil/0,c_1/2,c_2/0,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/2,c_9/0} - Obligation: innermost runtime complexity wrt. defined symbols {PURGE#,REMOVE#,purge#,remove#} and constructors {.,=,c,c1 ,c2,c3,c4,if,nil} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) -->_2 REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)):3 -->_2 REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)):2 -->_1 PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)):1 2:W:REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)) -->_1 REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)):3 -->_1 REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)):2 3:W:REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)) -->_1 REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)):3 -->_1 REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)):2 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: PURGE#(.(z0,z1)) -> c_1(PURGE#(remove(z0,z1)),REMOVE#(z0,z1)) 3: REMOVE#(z0,.(z1,z2)) -> c_4(REMOVE#(z0,z2)) 2: REMOVE#(z0,.(z1,z2)) -> c_3(REMOVE#(z0,z2)) *** Step 1.b:5.b:2: EmptyProcessor. WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: remove(z0,.(z1,z2)) -> if(=(z0,z1),remove(z0,z2),.(z1,remove(z0,z2))) remove(z0,nil()) -> nil() - Signature: {PURGE/1,REMOVE/2,purge/1,remove/2,PURGE#/1,REMOVE#/2,purge#/1,remove#/2} / {./2,=/2,c/0,c1/2,c2/0,c3/1,c4/1 ,if/3,nil/0,c_1/2,c_2/0,c_3/1,c_4/1,c_5/0,c_6/1,c_7/0,c_8/2,c_9/0} - Obligation: innermost runtime complexity wrt. defined symbols {PURGE#,REMOVE#,purge#,remove#} and constructors {.,=,c,c1 ,c2,c3,c4,if,nil} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). WORST_CASE(Omega(n^1),O(n^1))