WORST_CASE(?,O(n^3)) * Step 1: DependencyPairs WORST_CASE(?,O(n^3)) + Considered Problem: - Strict TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) purge(add(N,X)) -> add(N,purge(rm(N,X))) purge(nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2} / {0/0,add/2,false/0,nil/0,s/1,true/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq,ifrm,purge,rm} and constructors {0,add,false,nil,s ,true} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs eq#(0(),0()) -> c_1() eq#(0(),s(X)) -> c_2() eq#(s(X),0()) -> c_3() eq#(s(X),s(Y)) -> c_4(eq#(X,Y)) ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)) purge#(nil()) -> c_8() rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)) rm#(N,nil()) -> c_10() Weak DPs and mark the set of starting terms. * Step 2: PredecessorEstimation WORST_CASE(?,O(n^3)) + Considered Problem: - Strict DPs: eq#(0(),0()) -> c_1() eq#(0(),s(X)) -> c_2() eq#(s(X),0()) -> c_3() eq#(s(X),s(Y)) -> c_4(eq#(X,Y)) ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)) purge#(nil()) -> c_8() rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)) rm#(N,nil()) -> c_10() - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) purge(add(N,X)) -> add(N,purge(rm(N,X))) purge(nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,2,3,8,10} by application of Pre({1,2,3,8,10}) = {4,5,6,7,9}. Here rules are labelled as follows: 1: eq#(0(),0()) -> c_1() 2: eq#(0(),s(X)) -> c_2() 3: eq#(s(X),0()) -> c_3() 4: eq#(s(X),s(Y)) -> c_4(eq#(X,Y)) 5: ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) 6: ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) 7: purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)) 8: purge#(nil()) -> c_8() 9: rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)) 10: rm#(N,nil()) -> c_10() * Step 3: RemoveWeakSuffixes WORST_CASE(?,O(n^3)) + Considered Problem: - Strict DPs: eq#(s(X),s(Y)) -> c_4(eq#(X,Y)) ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)) rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)) - Weak DPs: eq#(0(),0()) -> c_1() eq#(0(),s(X)) -> c_2() eq#(s(X),0()) -> c_3() purge#(nil()) -> c_8() rm#(N,nil()) -> c_10() - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) purge(add(N,X)) -> add(N,purge(rm(N,X))) purge(nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:eq#(s(X),s(Y)) -> c_4(eq#(X,Y)) -->_1 eq#(s(X),0()) -> c_3():8 -->_1 eq#(0(),s(X)) -> c_2():7 -->_1 eq#(0(),0()) -> c_1():6 -->_1 eq#(s(X),s(Y)) -> c_4(eq#(X,Y)):1 2:S:ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) -->_1 rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)):5 -->_1 rm#(N,nil()) -> c_10():10 3:S:ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) -->_1 rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)):5 -->_1 rm#(N,nil()) -> c_10():10 4:S:purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)) -->_2 rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)):5 -->_2 rm#(N,nil()) -> c_10():10 -->_1 purge#(nil()) -> c_8():9 -->_1 purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)):4 5:S:rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)) -->_2 eq#(s(X),0()) -> c_3():8 -->_2 eq#(0(),s(X)) -> c_2():7 -->_2 eq#(0(),0()) -> c_1():6 -->_1 ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)):3 -->_1 ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)):2 -->_2 eq#(s(X),s(Y)) -> c_4(eq#(X,Y)):1 6:W:eq#(0(),0()) -> c_1() 7:W:eq#(0(),s(X)) -> c_2() 8:W:eq#(s(X),0()) -> c_3() 9:W:purge#(nil()) -> c_8() 10:W:rm#(N,nil()) -> c_10() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 9: purge#(nil()) -> c_8() 10: rm#(N,nil()) -> c_10() 6: eq#(0(),0()) -> c_1() 7: eq#(0(),s(X)) -> c_2() 8: eq#(s(X),0()) -> c_3() * Step 4: UsableRules WORST_CASE(?,O(n^3)) + Considered Problem: - Strict DPs: eq#(s(X),s(Y)) -> c_4(eq#(X,Y)) ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)) rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) purge(add(N,X)) -> add(N,purge(rm(N,X))) purge(nil()) -> nil() rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() eq#(s(X),s(Y)) -> c_4(eq#(X,Y)) ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)) rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)) * Step 5: DecomposeDG WORST_CASE(?,O(n^3)) + Considered Problem: - Strict DPs: eq#(s(X),s(Y)) -> c_4(eq#(X,Y)) ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)) rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + Applied Processor: DecomposeDG {onSelection = all below first cut in WDG, onUpper = Nothing, onLower = Nothing} + Details: We decompose the input problem according to the dependency graph into the upper component purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)) and a lower component eq#(s(X),s(Y)) -> c_4(eq#(X,Y)) ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)) Further, following extension rules are added to the lower component. purge#(add(N,X)) -> purge#(rm(N,X)) purge#(add(N,X)) -> rm#(N,X) ** Step 5.a:1: SimplifyRHS WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)) -->_1 purge#(add(N,X)) -> c_7(purge#(rm(N,X)),rm#(N,X)):1 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: purge#(add(N,X)) -> c_7(purge#(rm(N,X))) ** Step 5.a:2: WeightGap WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: purge#(add(N,X)) -> c_7(purge#(rm(N,X))) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/1,c_8/0,c_9/2,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + 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(add) = {2}, uargs(ifrm) = {1}, uargs(purge#) = {1}, uargs(c_7) = {1} Following symbols are considered usable: all TcT has computed the following interpretation: p(0) = [4] p(add) = [1] x2 + [1] p(eq) = [0] p(false) = [0] p(ifrm) = [1] x1 + [1] x3 + [0] p(nil) = [1] p(purge) = [4] x1 + [4] p(rm) = [1] x2 + [0] p(s) = [2] p(true) = [0] p(eq#) = [0] p(ifrm#) = [1] x3 + [0] p(purge#) = [1] x1 + [0] p(rm#) = [1] x1 + [0] p(c_1) = [4] p(c_2) = [0] p(c_3) = [0] p(c_4) = [1] x1 + [0] p(c_5) = [1] x1 + [0] p(c_6) = [4] x1 + [1] p(c_7) = [1] x1 + [0] p(c_8) = [1] p(c_9) = [4] x1 + [1] x2 + [0] p(c_10) = [1] Following rules are strictly oriented: purge#(add(N,X)) = [1] X + [1] > [1] X + [0] = c_7(purge#(rm(N,X))) Following rules are (at-least) weakly oriented: eq(0(),0()) = [0] >= [0] = true() eq(0(),s(X)) = [0] >= [0] = false() eq(s(X),0()) = [0] >= [0] = false() eq(s(X),s(Y)) = [0] >= [0] = eq(X,Y) ifrm(false(),N,add(M,X)) = [1] X + [1] >= [1] X + [1] = add(M,rm(N,X)) ifrm(true(),N,add(M,X)) = [1] X + [1] >= [1] X + [0] = rm(N,X) rm(N,add(M,X)) = [1] X + [1] >= [1] X + [1] = ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) = [1] >= [1] = nil() Further, it can be verified that all rules not oriented are covered by the weightgap condition. ** Step 5.a:3: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: purge#(add(N,X)) -> c_7(purge#(rm(N,X))) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/1,c_8/0,c_9/2,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). ** Step 5.b:1: DecomposeDG WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: eq#(s(X),s(Y)) -> c_4(eq#(X,Y)) ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)) - Weak DPs: purge#(add(N,X)) -> purge#(rm(N,X)) purge#(add(N,X)) -> rm#(N,X) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + Applied Processor: DecomposeDG {onSelection = all below first cut in WDG, onUpper = Nothing, onLower = Nothing} + Details: We decompose the input problem according to the dependency graph into the upper component ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) purge#(add(N,X)) -> purge#(rm(N,X)) purge#(add(N,X)) -> rm#(N,X) rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)) and a lower component eq#(s(X),s(Y)) -> c_4(eq#(X,Y)) Further, following extension rules are added to the lower component. ifrm#(false(),N,add(M,X)) -> rm#(N,X) ifrm#(true(),N,add(M,X)) -> rm#(N,X) purge#(add(N,X)) -> purge#(rm(N,X)) purge#(add(N,X)) -> rm#(N,X) rm#(N,add(M,X)) -> eq#(N,M) rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X)) *** Step 5.b:1.a:1: SimplifyRHS WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)) - Weak DPs: purge#(add(N,X)) -> purge#(rm(N,X)) purge#(add(N,X)) -> rm#(N,X) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) -->_1 rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)):3 2:S:ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) -->_1 rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)):3 3:S:rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)) -->_1 ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)):2 -->_1 ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)):1 4:W:purge#(add(N,X)) -> purge#(rm(N,X)) -->_1 purge#(add(N,X)) -> rm#(N,X):5 -->_1 purge#(add(N,X)) -> purge#(rm(N,X)):4 5:W:purge#(add(N,X)) -> rm#(N,X) -->_1 rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X)),eq#(N,M)):3 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X))) *** Step 5.b:1.a:2: WeightGap WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X))) - Weak DPs: purge#(add(N,X)) -> purge#(rm(N,X)) purge#(add(N,X)) -> rm#(N,X) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/1,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + 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(add) = {2}, uargs(ifrm) = {1}, uargs(ifrm#) = {1}, uargs(purge#) = {1}, uargs(c_5) = {1}, uargs(c_6) = {1}, uargs(c_9) = {1} Following symbols are considered usable: all TcT has computed the following interpretation: p(0) = [0] p(add) = [1] x1 + [1] x2 + [0] p(eq) = [0] p(false) = [0] p(ifrm) = [1] x1 + [1] x2 + [1] x3 + [0] p(nil) = [5] p(purge) = [0] p(rm) = [1] x1 + [1] x2 + [0] p(s) = [1] x1 + [0] p(true) = [0] p(eq#) = [0] p(ifrm#) = [1] x1 + [0] p(purge#) = [1] x1 + [4] p(rm#) = [1] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [1] x1 + [0] p(c_6) = [1] x1 + [0] p(c_7) = [1] x1 + [1] p(c_8) = [0] p(c_9) = [1] x1 + [0] p(c_10) = [1] Following rules are strictly oriented: rm#(N,add(M,X)) = [1] > [0] = c_9(ifrm#(eq(N,M),N,add(M,X))) Following rules are (at-least) weakly oriented: ifrm#(false(),N,add(M,X)) = [0] >= [1] = c_5(rm#(N,X)) ifrm#(true(),N,add(M,X)) = [0] >= [1] = c_6(rm#(N,X)) purge#(add(N,X)) = [1] N + [1] X + [4] >= [1] N + [1] X + [4] = purge#(rm(N,X)) purge#(add(N,X)) = [1] N + [1] X + [4] >= [1] = rm#(N,X) eq(0(),0()) = [0] >= [0] = true() eq(0(),s(X)) = [0] >= [0] = false() eq(s(X),0()) = [0] >= [0] = false() eq(s(X),s(Y)) = [0] >= [0] = eq(X,Y) ifrm(false(),N,add(M,X)) = [1] M + [1] N + [1] X + [0] >= [1] M + [1] N + [1] X + [0] = add(M,rm(N,X)) ifrm(true(),N,add(M,X)) = [1] M + [1] N + [1] X + [0] >= [1] N + [1] X + [0] = rm(N,X) rm(N,add(M,X)) = [1] M + [1] N + [1] X + [0] >= [1] M + [1] N + [1] X + [0] = ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) = [1] N + [5] >= [5] = nil() Further, it can be verified that all rules not oriented are covered by the weightgap condition. *** Step 5.b:1.a:3: WeightGap WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) - Weak DPs: purge#(add(N,X)) -> purge#(rm(N,X)) purge#(add(N,X)) -> rm#(N,X) rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X))) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/1,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + 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(add) = {2}, uargs(ifrm) = {1}, uargs(ifrm#) = {1}, uargs(purge#) = {1}, uargs(c_5) = {1}, uargs(c_6) = {1}, uargs(c_9) = {1} Following symbols are considered usable: all TcT has computed the following interpretation: p(0) = [0] p(add) = [1] x2 + [1] p(eq) = [0] p(false) = [0] p(ifrm) = [1] x1 + [1] x3 + [0] p(nil) = [1] p(purge) = [1] x1 + [1] p(rm) = [1] x2 + [0] p(s) = [1] x1 + [1] p(true) = [0] p(eq#) = [4] x2 + [0] p(ifrm#) = [1] x1 + [1] x3 + [0] p(purge#) = [1] x1 + [0] p(rm#) = [1] x2 + [0] p(c_1) = [1] p(c_2) = [2] p(c_3) = [0] p(c_4) = [0] p(c_5) = [1] x1 + [0] p(c_6) = [1] x1 + [2] p(c_7) = [2] x1 + [4] x2 + [1] p(c_8) = [0] p(c_9) = [1] x1 + [0] p(c_10) = [0] Following rules are strictly oriented: ifrm#(false(),N,add(M,X)) = [1] X + [1] > [1] X + [0] = c_5(rm#(N,X)) Following rules are (at-least) weakly oriented: ifrm#(true(),N,add(M,X)) = [1] X + [1] >= [1] X + [2] = c_6(rm#(N,X)) purge#(add(N,X)) = [1] X + [1] >= [1] X + [0] = purge#(rm(N,X)) purge#(add(N,X)) = [1] X + [1] >= [1] X + [0] = rm#(N,X) rm#(N,add(M,X)) = [1] X + [1] >= [1] X + [1] = c_9(ifrm#(eq(N,M),N,add(M,X))) eq(0(),0()) = [0] >= [0] = true() eq(0(),s(X)) = [0] >= [0] = false() eq(s(X),0()) = [0] >= [0] = false() eq(s(X),s(Y)) = [0] >= [0] = eq(X,Y) ifrm(false(),N,add(M,X)) = [1] X + [1] >= [1] X + [1] = add(M,rm(N,X)) ifrm(true(),N,add(M,X)) = [1] X + [1] >= [1] X + [0] = rm(N,X) rm(N,add(M,X)) = [1] X + [1] >= [1] X + [1] = ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) = [1] >= [1] = nil() Further, it can be verified that all rules not oriented are covered by the weightgap condition. *** Step 5.b:1.a:4: WeightGap WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) - Weak DPs: ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) purge#(add(N,X)) -> purge#(rm(N,X)) purge#(add(N,X)) -> rm#(N,X) rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X))) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/1,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + 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(add) = {2}, uargs(ifrm) = {1}, uargs(ifrm#) = {1}, uargs(purge#) = {1}, uargs(c_5) = {1}, uargs(c_6) = {1}, uargs(c_9) = {1} Following symbols are considered usable: all TcT has computed the following interpretation: p(0) = [0] p(add) = [1] x2 + [4] p(eq) = [0] p(false) = [0] p(ifrm) = [1] x1 + [1] x3 + [2] p(nil) = [5] p(purge) = [1] x1 + [0] p(rm) = [1] x2 + [2] p(s) = [1] x1 + [1] p(true) = [0] p(eq#) = [1] x1 + [0] p(ifrm#) = [1] x1 + [1] x3 + [5] p(purge#) = [1] x1 + [5] p(rm#) = [1] x2 + [6] p(c_1) = [1] p(c_2) = [1] p(c_3) = [1] p(c_4) = [1] x1 + [1] p(c_5) = [1] x1 + [1] p(c_6) = [1] x1 + [1] p(c_7) = [4] x2 + [1] p(c_8) = [0] p(c_9) = [1] x1 + [1] p(c_10) = [2] Following rules are strictly oriented: ifrm#(true(),N,add(M,X)) = [1] X + [9] > [1] X + [7] = c_6(rm#(N,X)) Following rules are (at-least) weakly oriented: ifrm#(false(),N,add(M,X)) = [1] X + [9] >= [1] X + [7] = c_5(rm#(N,X)) purge#(add(N,X)) = [1] X + [9] >= [1] X + [7] = purge#(rm(N,X)) purge#(add(N,X)) = [1] X + [9] >= [1] X + [6] = rm#(N,X) rm#(N,add(M,X)) = [1] X + [10] >= [1] X + [10] = c_9(ifrm#(eq(N,M),N,add(M,X))) eq(0(),0()) = [0] >= [0] = true() eq(0(),s(X)) = [0] >= [0] = false() eq(s(X),0()) = [0] >= [0] = false() eq(s(X),s(Y)) = [0] >= [0] = eq(X,Y) ifrm(false(),N,add(M,X)) = [1] X + [6] >= [1] X + [6] = add(M,rm(N,X)) ifrm(true(),N,add(M,X)) = [1] X + [6] >= [1] X + [2] = rm(N,X) rm(N,add(M,X)) = [1] X + [6] >= [1] X + [6] = ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) = [7] >= [5] = nil() Further, it can be verified that all rules not oriented are covered by the weightgap condition. *** Step 5.b:1.a:5: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: ifrm#(false(),N,add(M,X)) -> c_5(rm#(N,X)) ifrm#(true(),N,add(M,X)) -> c_6(rm#(N,X)) purge#(add(N,X)) -> purge#(rm(N,X)) purge#(add(N,X)) -> rm#(N,X) rm#(N,add(M,X)) -> c_9(ifrm#(eq(N,M),N,add(M,X))) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/1,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). *** Step 5.b:1.b:1: WeightGap WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: eq#(s(X),s(Y)) -> c_4(eq#(X,Y)) - Weak DPs: ifrm#(false(),N,add(M,X)) -> rm#(N,X) ifrm#(true(),N,add(M,X)) -> rm#(N,X) purge#(add(N,X)) -> purge#(rm(N,X)) purge#(add(N,X)) -> rm#(N,X) rm#(N,add(M,X)) -> eq#(N,M) rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + 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(add) = {2}, uargs(ifrm) = {1}, uargs(ifrm#) = {1}, uargs(purge#) = {1}, uargs(c_4) = {1} Following symbols are considered usable: all TcT has computed the following interpretation: p(0) = [0] p(add) = [1] x1 + [1] x2 + [0] p(eq) = [0] p(false) = [0] p(ifrm) = [1] x1 + [1] x2 + [1] x3 + [0] p(nil) = [4] p(purge) = [2] x1 + [0] p(rm) = [1] x1 + [1] x2 + [0] p(s) = [1] x1 + [6] p(true) = [0] p(eq#) = [1] x2 + [0] p(ifrm#) = [1] x1 + [1] x3 + [0] p(purge#) = [1] x1 + [2] p(rm#) = [1] x2 + [0] p(c_1) = [2] p(c_2) = [0] p(c_3) = [4] p(c_4) = [1] x1 + [0] p(c_5) = [1] p(c_6) = [1] x1 + [0] p(c_7) = [0] p(c_8) = [1] p(c_9) = [2] p(c_10) = [0] Following rules are strictly oriented: eq#(s(X),s(Y)) = [1] Y + [6] > [1] Y + [0] = c_4(eq#(X,Y)) Following rules are (at-least) weakly oriented: ifrm#(false(),N,add(M,X)) = [1] M + [1] X + [0] >= [1] X + [0] = rm#(N,X) ifrm#(true(),N,add(M,X)) = [1] M + [1] X + [0] >= [1] X + [0] = rm#(N,X) purge#(add(N,X)) = [1] N + [1] X + [2] >= [1] N + [1] X + [2] = purge#(rm(N,X)) purge#(add(N,X)) = [1] N + [1] X + [2] >= [1] X + [0] = rm#(N,X) rm#(N,add(M,X)) = [1] M + [1] X + [0] >= [1] M + [0] = eq#(N,M) rm#(N,add(M,X)) = [1] M + [1] X + [0] >= [1] M + [1] X + [0] = ifrm#(eq(N,M),N,add(M,X)) eq(0(),0()) = [0] >= [0] = true() eq(0(),s(X)) = [0] >= [0] = false() eq(s(X),0()) = [0] >= [0] = false() eq(s(X),s(Y)) = [0] >= [0] = eq(X,Y) ifrm(false(),N,add(M,X)) = [1] M + [1] N + [1] X + [0] >= [1] M + [1] N + [1] X + [0] = add(M,rm(N,X)) ifrm(true(),N,add(M,X)) = [1] M + [1] N + [1] X + [0] >= [1] N + [1] X + [0] = rm(N,X) rm(N,add(M,X)) = [1] M + [1] N + [1] X + [0] >= [1] M + [1] N + [1] X + [0] = ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) = [1] N + [4] >= [4] = nil() Further, it can be verified that all rules not oriented are covered by the weightgap condition. *** Step 5.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: eq#(s(X),s(Y)) -> c_4(eq#(X,Y)) ifrm#(false(),N,add(M,X)) -> rm#(N,X) ifrm#(true(),N,add(M,X)) -> rm#(N,X) purge#(add(N,X)) -> purge#(rm(N,X)) purge#(add(N,X)) -> rm#(N,X) rm#(N,add(M,X)) -> eq#(N,M) rm#(N,add(M,X)) -> ifrm#(eq(N,M),N,add(M,X)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(X)) -> false() eq(s(X),0()) -> false() eq(s(X),s(Y)) -> eq(X,Y) ifrm(false(),N,add(M,X)) -> add(M,rm(N,X)) ifrm(true(),N,add(M,X)) -> rm(N,X) rm(N,add(M,X)) -> ifrm(eq(N,M),N,add(M,X)) rm(N,nil()) -> nil() - Signature: {eq/2,ifrm/3,purge/1,rm/2,eq#/2,ifrm#/3,purge#/1,rm#/2} / {0/0,add/2,false/0,nil/0,s/1,true/0,c_1/0,c_2/0 ,c_3/0,c_4/1,c_5/1,c_6/1,c_7/2,c_8/0,c_9/2,c_10/0} - Obligation: innermost runtime complexity wrt. defined symbols {eq#,ifrm#,purge#,rm#} and constructors {0,add,false,nil,s ,true} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). WORST_CASE(?,O(n^3))