WORST_CASE(?,O(n^4)) * Step 1: DependencyPairs WORST_CASE(?,O(n^4)) + Considered Problem: - Strict TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) if(false(),x,y) -> y if(true(),x,y) -> x ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0} - Obligation: innermost runtime complexity wrt. defined symbols {app,eq,if,ifinter,ifmem,inter,mem} and constructors {0 ,cons,false,nil,s,true} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) app#(nil(),l) -> c_3() eq#(0(),0()) -> c_4() eq#(0(),s(x)) -> c_5() eq#(s(x),0()) -> c_6() eq#(s(x),s(y)) -> c_7(eq#(x,y)) if#(false(),x,y) -> c_8() if#(true(),x,y) -> c_9() ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) ifmem#(true(),x,l) -> c_13() inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(x,nil()) -> c_16() inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) inter#(nil(),x) -> c_19() mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) mem#(x,nil()) -> c_21() Weak DPs and mark the set of starting terms. * Step 2: UsableRules WORST_CASE(?,O(n^4)) + Considered Problem: - Strict DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) app#(nil(),l) -> c_3() eq#(0(),0()) -> c_4() eq#(0(),s(x)) -> c_5() eq#(s(x),0()) -> c_6() eq#(s(x),s(y)) -> c_7(eq#(x,y)) if#(false(),x,y) -> c_8() if#(true(),x,y) -> c_9() ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) ifmem#(true(),x,l) -> c_13() inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(x,nil()) -> c_16() inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) inter#(nil(),x) -> c_19() mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) mem#(x,nil()) -> c_21() - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) if(false(),x,y) -> y if(true(),x,y) -> x ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/2,c_16/0,c_17/3,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) app#(nil(),l) -> c_3() eq#(0(),0()) -> c_4() eq#(0(),s(x)) -> c_5() eq#(s(x),0()) -> c_6() eq#(s(x),s(y)) -> c_7(eq#(x,y)) if#(false(),x,y) -> c_8() if#(true(),x,y) -> c_9() ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) ifmem#(true(),x,l) -> c_13() inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(x,nil()) -> c_16() inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) inter#(nil(),x) -> c_19() mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) mem#(x,nil()) -> c_21() * Step 3: PredecessorEstimation WORST_CASE(?,O(n^4)) + Considered Problem: - Strict DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) app#(nil(),l) -> c_3() eq#(0(),0()) -> c_4() eq#(0(),s(x)) -> c_5() eq#(s(x),0()) -> c_6() eq#(s(x),s(y)) -> c_7(eq#(x,y)) if#(false(),x,y) -> c_8() if#(true(),x,y) -> c_9() ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) ifmem#(true(),x,l) -> c_13() inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(x,nil()) -> c_16() inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) inter#(nil(),x) -> c_19() mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) mem#(x,nil()) -> c_21() - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/2,c_16/0,c_17/3,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {3,4,5,6,8,9,13,16,19,21} by application of Pre({3,4,5,6,8,9,13,16,19,21}) = {1,2,7,10,11,12,14,15,17,18,20}. Here rules are labelled as follows: 1: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) 2: app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) 3: app#(nil(),l) -> c_3() 4: eq#(0(),0()) -> c_4() 5: eq#(0(),s(x)) -> c_5() 6: eq#(s(x),0()) -> c_6() 7: eq#(s(x),s(y)) -> c_7(eq#(x,y)) 8: if#(false(),x,y) -> c_8() 9: if#(true(),x,y) -> c_9() 10: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) 11: ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) 12: ifmem#(false(),x,l) -> c_12(mem#(x,l)) 13: ifmem#(true(),x,l) -> c_13() 14: inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) 15: inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) 16: inter#(x,nil()) -> c_16() 17: inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) 18: inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) 19: inter#(nil(),x) -> c_19() 20: mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) 21: mem#(x,nil()) -> c_21() * Step 4: RemoveWeakSuffixes WORST_CASE(?,O(n^4)) + Considered Problem: - Strict DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) eq#(s(x),s(y)) -> c_7(eq#(x,y)) ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak DPs: app#(nil(),l) -> c_3() eq#(0(),0()) -> c_4() eq#(0(),s(x)) -> c_5() eq#(s(x),0()) -> c_6() if#(false(),x,y) -> c_8() if#(true(),x,y) -> c_9() ifmem#(true(),x,l) -> c_13() inter#(x,nil()) -> c_16() inter#(nil(),x) -> c_19() mem#(x,nil()) -> c_21() - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/2,c_16/0,c_17/3,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) -->_2 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_2 app#(nil(),l) -> c_3():12 -->_1 app#(nil(),l) -> c_3():12 -->_2 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 2:S:app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) -->_1 app#(nil(),l) -> c_3():12 -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 3:S:eq#(s(x),s(y)) -> c_7(eq#(x,y)) -->_1 eq#(s(x),0()) -> c_6():15 -->_1 eq#(0(),s(x)) -> c_5():14 -->_1 eq#(0(),0()) -> c_4():13 -->_1 eq#(s(x),s(y)) -> c_7(eq#(x,y)):3 4:S:ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_1 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_1 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 -->_1 inter#(nil(),x) -> c_19():20 -->_1 inter#(x,nil()) -> c_16():19 5:S:ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_1 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_1 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 -->_1 inter#(nil(),x) -> c_19():20 -->_1 inter#(x,nil()) -> c_16():19 6:S:ifmem#(false(),x,l) -> c_12(mem#(x,l)) -->_1 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):11 -->_1 mem#(x,nil()) -> c_21():21 7:S:inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) -->_3 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_3 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_2 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_3 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_3 inter#(nil(),x) -> c_19():20 -->_2 inter#(nil(),x) -> c_19():20 -->_3 inter#(x,nil()) -> c_16():19 -->_2 inter#(x,nil()) -> c_16():19 -->_1 app#(nil(),l) -> c_3():12 -->_3 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 -->_2 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 8:S:inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):11 -->_2 mem#(x,nil()) -> c_21():21 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):5 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):4 9:S:inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) -->_3 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_3 inter#(nil(),x) -> c_19():20 -->_2 inter#(nil(),x) -> c_19():20 -->_3 inter#(x,nil()) -> c_16():19 -->_2 inter#(x,nil()) -> c_16():19 -->_1 app#(nil(),l) -> c_3():12 -->_3 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_2 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_3 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_3 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 -->_2 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 10:S:inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):11 -->_2 mem#(x,nil()) -> c_21():21 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):5 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):4 11:S:mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) -->_1 ifmem#(true(),x,l) -> c_13():18 -->_2 eq#(s(x),0()) -> c_6():15 -->_2 eq#(0(),s(x)) -> c_5():14 -->_2 eq#(0(),0()) -> c_4():13 -->_1 ifmem#(false(),x,l) -> c_12(mem#(x,l)):6 -->_2 eq#(s(x),s(y)) -> c_7(eq#(x,y)):3 12:W:app#(nil(),l) -> c_3() 13:W:eq#(0(),0()) -> c_4() 14:W:eq#(0(),s(x)) -> c_5() 15:W:eq#(s(x),0()) -> c_6() 16:W:if#(false(),x,y) -> c_8() 17:W:if#(true(),x,y) -> c_9() 18:W:ifmem#(true(),x,l) -> c_13() 19:W:inter#(x,nil()) -> c_16() 20:W:inter#(nil(),x) -> c_19() 21:W:mem#(x,nil()) -> c_21() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 17: if#(true(),x,y) -> c_9() 16: if#(false(),x,y) -> c_8() 19: inter#(x,nil()) -> c_16() 20: inter#(nil(),x) -> c_19() 21: mem#(x,nil()) -> c_21() 18: ifmem#(true(),x,l) -> c_13() 13: eq#(0(),0()) -> c_4() 14: eq#(0(),s(x)) -> c_5() 15: eq#(s(x),0()) -> c_6() 12: app#(nil(),l) -> c_3() * Step 5: Decompose WORST_CASE(?,O(n^4)) + Considered Problem: - Strict DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) eq#(s(x),s(y)) -> c_7(eq#(x,y)) ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/2,c_16/0,c_17/3,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + 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: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) - Weak DPs: eq#(s(x),s(y)) -> c_7(eq#(x,y)) ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0 ,c_10/1,c_11/1,c_12/1,c_13/0,c_14/3,c_15/2,c_16/0,c_17/3,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} Problem (S) - Strict DPs: eq#(s(x),s(y)) -> c_7(eq#(x,y)) ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0 ,c_10/1,c_11/1,c_12/1,c_13/0,c_14/3,c_15/2,c_16/0,c_17/3,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} ** Step 5.a:1: RemoveWeakSuffixes WORST_CASE(?,O(n^4)) + Considered Problem: - Strict DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) - Weak DPs: eq#(s(x),s(y)) -> c_7(eq#(x,y)) ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/2,c_16/0,c_17/3,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) -->_2 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_2 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 2:S:app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 3:W:eq#(s(x),s(y)) -> c_7(eq#(x,y)) -->_1 eq#(s(x),s(y)) -> c_7(eq#(x,y)):3 4:W:ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_1 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_1 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 5:W:ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_1 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_1 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 6:W:ifmem#(false(),x,l) -> c_12(mem#(x,l)) -->_1 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):11 7:W:inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_3 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_3 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_2 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_3 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_3 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 -->_2 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 8:W:inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):4 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):5 -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):11 9:W:inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_3 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 -->_2 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 -->_3 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_3 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_3 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_2 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 10:W:inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):4 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):5 -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):11 11:W:mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) -->_2 eq#(s(x),s(y)) -> c_7(eq#(x,y)):3 -->_1 ifmem#(false(),x,l) -> c_12(mem#(x,l)):6 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 11: mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) 6: ifmem#(false(),x,l) -> c_12(mem#(x,l)) 3: eq#(s(x),s(y)) -> c_7(eq#(x,y)) ** Step 5.a:2: SimplifyRHS WORST_CASE(?,O(n^4)) + Considered Problem: - Strict DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) - Weak DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/2,c_16/0,c_17/3,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) -->_2 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_2 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 2:S:app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 4:W:ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_1 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_1 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 5:W:ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_1 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_1 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 7:W:inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_3 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_3 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_2 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_3 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_3 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 -->_2 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 8:W:inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):4 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):5 9:W:inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_3 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 -->_2 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):7 -->_3 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):8 -->_3 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):10 -->_3 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 -->_2 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):9 10:W:inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):4 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):5 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) ** Step 5.a:3: DecomposeDG WORST_CASE(?,O(n^4)) + Considered Problem: - Strict DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) - Weak DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/1,c_16/0,c_17/3,c_18/1,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + 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 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) and a lower component app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) Further, following extension rules are added to the lower component. ifinter#(false(),x,l1,l2) -> inter#(l1,l2) ifinter#(true(),x,l1,l2) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)) inter#(l1,app(l2,l3)) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> inter#(l1,l3) inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1) inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)) inter#(app(l1,l2),l3) -> inter#(l1,l3) inter#(app(l1,l2),l3) -> inter#(l2,l3) inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2) *** Step 5.a:3.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) - Weak DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/1,c_16/0,c_17/3,c_18/1,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) 2: inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) The strictly oriented rules are moved into the weak component. **** Step 5.a:3.a:1.a:1: NaturalPI WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) - Weak DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/1,c_16/0,c_17/3,c_18/1,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: NaturalPI {shape = Mixed 2, restrict = Restrict, 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 polynomial interpretation of kind constructor-based(mixed(2)): The following argument positions are considered usable: uargs(c_10) = {1}, uargs(c_11) = {1}, uargs(c_14) = {1,2,3}, uargs(c_15) = {1}, uargs(c_17) = {1,2,3}, uargs(c_18) = {1} Following symbols are considered usable: {app#,eq#,if#,ifinter#,ifmem#,inter#,mem#} TcT has computed the following interpretation: p(0) = 0 p(app) = 1 + x1 + x2 p(cons) = x2 p(eq) = 0 p(false) = 1 p(if) = 0 p(ifinter) = 0 p(ifmem) = x1 + x1^2 p(inter) = 1 p(mem) = 0 p(nil) = 1 p(s) = 0 p(true) = 0 p(app#) = 0 p(eq#) = 0 p(if#) = 0 p(ifinter#) = x3 + x3*x4 + x4 p(ifmem#) = 0 p(inter#) = x1 + x1*x2 + x2 p(mem#) = 0 p(c_1) = 0 p(c_2) = 0 p(c_3) = 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) = x1 p(c_11) = x1 p(c_12) = 0 p(c_13) = 0 p(c_14) = x1 + x2 + x3 p(c_15) = x1 p(c_16) = 0 p(c_17) = x1 + x2 + x3 p(c_18) = x1 p(c_19) = 0 p(c_20) = 0 p(c_21) = 0 Following rules are strictly oriented: inter#(l1,app(l2,l3)) = 1 + 2*l1 + l1*l2 + l1*l3 + l2 + l3 > 2*l1 + l1*l2 + l1*l3 + l2 + l3 = c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(app(l1,l2),l3) = 1 + l1 + l1*l3 + l2 + l2*l3 + 2*l3 > l1 + l1*l3 + l2 + l2*l3 + 2*l3 = c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) Following rules are (at-least) weakly oriented: ifinter#(false(),x,l1,l2) = l1 + l1*l2 + l2 >= l1 + l1*l2 + l2 = c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) = l1 + l1*l2 + l2 >= l1 + l1*l2 + l2 = c_11(inter#(l1,l2)) inter#(l1,cons(x,l2)) = l1 + l1*l2 + l2 >= l1 + l1*l2 + l2 = c_15(ifinter#(mem(x,l1),x,l2,l1)) inter#(cons(x,l1),l2) = l1 + l1*l2 + l2 >= l1 + l1*l2 + l2 = c_18(ifinter#(mem(x,l2),x,l1,l2)) **** Step 5.a:3.a:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/1,c_16/0,c_17/3,c_18/1,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () **** Step 5.a:3.a:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/1,c_16/0,c_17/3,c_18/1,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)):6 -->_1 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):5 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)):4 -->_1 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):3 2:W:ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)):6 -->_1 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):5 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)):4 -->_1 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):3 3:W:inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) -->_3 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)):6 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)):6 -->_3 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):5 -->_2 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):5 -->_3 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)):4 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)):4 -->_3 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):3 -->_2 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):3 4:W:inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):2 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):1 5:W:inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) -->_3 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)):6 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)):6 -->_3 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):5 -->_2 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):5 -->_3 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)):4 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)):4 -->_3 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):3 -->_2 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):3 6:W:inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):2 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) 6: inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) 5: inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) 3: inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) 2: ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) 4: inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) **** Step 5.a:3.a:1.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/1,c_16/0,c_17/3,c_18/1,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). *** Step 5.a:3.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) - Weak DPs: ifinter#(false(),x,l1,l2) -> inter#(l1,l2) ifinter#(true(),x,l1,l2) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)) inter#(l1,app(l2,l3)) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> inter#(l1,l3) inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1) inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)) inter#(app(l1,l2),l3) -> inter#(l1,l3) inter#(app(l1,l2),l3) -> inter#(l2,l3) inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/1,c_16/0,c_17/3,c_18/1,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 2: app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) The strictly oriented rules are moved into the weak component. **** Step 5.a:3.b:1.a:1: NaturalPI WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) - Weak DPs: ifinter#(false(),x,l1,l2) -> inter#(l1,l2) ifinter#(true(),x,l1,l2) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)) inter#(l1,app(l2,l3)) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> inter#(l1,l3) inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1) inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)) inter#(app(l1,l2),l3) -> inter#(l1,l3) inter#(app(l1,l2),l3) -> inter#(l2,l3) inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/1,c_16/0,c_17/3,c_18/1,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: NaturalPI {shape = Mixed 2, restrict = Restrict, 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 polynomial interpretation of kind constructor-based(mixed(2)): The following argument positions are considered usable: uargs(c_1) = {1,2}, uargs(c_2) = {1} Following symbols are considered usable: {app,ifinter,ifmem,inter,mem,app#,eq#,if#,ifinter#,ifmem#,inter#,mem#} TcT has computed the following interpretation: p(0) = 0 p(app) = x1 + x2 p(cons) = 1 + x2 p(eq) = 0 p(false) = 0 p(if) = 0 p(ifinter) = x1 + x3*x4 p(ifmem) = 1 + x3 p(inter) = x1*x2 p(mem) = x2 p(nil) = 0 p(s) = 0 p(true) = 1 p(app#) = x1 p(eq#) = 0 p(if#) = 0 p(ifinter#) = x3*x4 p(ifmem#) = 0 p(inter#) = x1*x2 p(mem#) = 0 p(c_1) = x1 + x2 p(c_2) = x1 p(c_3) = 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 p(c_13) = 0 p(c_14) = 0 p(c_15) = 0 p(c_16) = 0 p(c_17) = 0 p(c_18) = 0 p(c_19) = 0 p(c_20) = 0 p(c_21) = 0 Following rules are strictly oriented: app#(cons(x,l1),l2) = 1 + l1 > l1 = c_2(app#(l1,l2)) Following rules are (at-least) weakly oriented: app#(app(l1,l2),l3) = l1 + l2 >= l1 + l2 = c_1(app#(l1,app(l2,l3)),app#(l2,l3)) ifinter#(false(),x,l1,l2) = l1*l2 >= l1*l2 = inter#(l1,l2) ifinter#(true(),x,l1,l2) = l1*l2 >= l1*l2 = inter#(l1,l2) inter#(l1,app(l2,l3)) = l1*l2 + l1*l3 >= l1*l2 = app#(inter(l1,l2),inter(l1,l3)) inter#(l1,app(l2,l3)) = l1*l2 + l1*l3 >= l1*l2 = inter#(l1,l2) inter#(l1,app(l2,l3)) = l1*l2 + l1*l3 >= l1*l3 = inter#(l1,l3) inter#(l1,cons(x,l2)) = l1 + l1*l2 >= l1*l2 = ifinter#(mem(x,l1),x,l2,l1) inter#(app(l1,l2),l3) = l1*l3 + l2*l3 >= l1*l3 = app#(inter(l1,l3),inter(l2,l3)) inter#(app(l1,l2),l3) = l1*l3 + l2*l3 >= l1*l3 = inter#(l1,l3) inter#(app(l1,l2),l3) = l1*l3 + l2*l3 >= l2*l3 = inter#(l2,l3) inter#(cons(x,l1),l2) = l1*l2 + l2 >= l1*l2 = ifinter#(mem(x,l2),x,l1,l2) app(app(l1,l2),l3) = l1 + l2 + l3 >= l1 + l2 + l3 = app(l1,app(l2,l3)) app(cons(x,l1),l2) = 1 + l1 + l2 >= 1 + l1 + l2 = cons(x,app(l1,l2)) app(nil(),l) = l >= l = l ifinter(false(),x,l1,l2) = l1*l2 >= l1*l2 = inter(l1,l2) ifinter(true(),x,l1,l2) = 1 + l1*l2 >= 1 + l1*l2 = cons(x,inter(l1,l2)) ifmem(false(),x,l) = 1 + l >= l = mem(x,l) ifmem(true(),x,l) = 1 + l >= 1 = true() inter(l1,app(l2,l3)) = l1*l2 + l1*l3 >= l1*l2 + l1*l3 = app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) = l1 + l1*l2 >= l1 + l1*l2 = ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) = 0 >= 0 = nil() inter(app(l1,l2),l3) = l1*l3 + l2*l3 >= l1*l3 + l2*l3 = app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) = l1*l2 + l2 >= l1*l2 + l2 = ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) = 0 >= 0 = nil() mem(x,cons(y,l)) = 1 + l >= 1 + l = ifmem(eq(x,y),x,l) mem(x,nil()) = 0 >= 0 = false() **** Step 5.a:3.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) - Weak DPs: app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) ifinter#(false(),x,l1,l2) -> inter#(l1,l2) ifinter#(true(),x,l1,l2) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)) inter#(l1,app(l2,l3)) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> inter#(l1,l3) inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1) inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)) inter#(app(l1,l2),l3) -> inter#(l1,l3) inter#(app(l1,l2),l3) -> inter#(l2,l3) inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/1,c_16/0,c_17/3,c_18/1,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () **** Step 5.a:3.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) - Weak DPs: app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) ifinter#(false(),x,l1,l2) -> inter#(l1,l2) ifinter#(true(),x,l1,l2) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)) inter#(l1,app(l2,l3)) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> inter#(l1,l3) inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1) inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)) inter#(app(l1,l2),l3) -> inter#(l1,l3) inter#(app(l1,l2),l3) -> inter#(l2,l3) inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/1,c_16/0,c_17/3,c_18/1,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) The strictly oriented rules are moved into the weak component. ***** Step 5.a:3.b:1.b:1.a:1: NaturalPI WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) - Weak DPs: app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) ifinter#(false(),x,l1,l2) -> inter#(l1,l2) ifinter#(true(),x,l1,l2) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)) inter#(l1,app(l2,l3)) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> inter#(l1,l3) inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1) inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)) inter#(app(l1,l2),l3) -> inter#(l1,l3) inter#(app(l1,l2),l3) -> inter#(l2,l3) inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/1,c_16/0,c_17/3,c_18/1,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: NaturalPI {shape = Mixed 2, restrict = Restrict, 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 polynomial interpretation of kind constructor-based(mixed(2)): The following argument positions are considered usable: uargs(c_1) = {1,2}, uargs(c_2) = {1} Following symbols are considered usable: {app,ifinter,inter,app#,eq#,if#,ifinter#,ifmem#,inter#,mem#} TcT has computed the following interpretation: p(0) = 1 p(app) = 1 + x1 + x2 p(cons) = x2 p(eq) = 1 + x1 + x1^2 p(false) = 0 p(if) = 0 p(ifinter) = x3 + x3*x4 + x4 p(ifmem) = 1 + x1*x2 + x2^2 + x3^2 p(inter) = x1 + x1*x2 + x2 p(mem) = 0 p(nil) = 0 p(s) = 0 p(true) = 0 p(app#) = x1 p(eq#) = 0 p(if#) = 0 p(ifinter#) = x3 + x3*x4 + x4 p(ifmem#) = 0 p(inter#) = x1 + x1*x2 + x2 p(mem#) = 0 p(c_1) = x1 + x2 p(c_2) = x1 p(c_3) = 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 p(c_13) = 0 p(c_14) = 0 p(c_15) = 0 p(c_16) = 0 p(c_17) = 0 p(c_18) = 0 p(c_19) = 0 p(c_20) = 0 p(c_21) = 0 Following rules are strictly oriented: app#(app(l1,l2),l3) = 1 + l1 + l2 > l1 + l2 = c_1(app#(l1,app(l2,l3)),app#(l2,l3)) Following rules are (at-least) weakly oriented: app#(cons(x,l1),l2) = l1 >= l1 = c_2(app#(l1,l2)) ifinter#(false(),x,l1,l2) = l1 + l1*l2 + l2 >= l1 + l1*l2 + l2 = inter#(l1,l2) ifinter#(true(),x,l1,l2) = l1 + l1*l2 + l2 >= l1 + l1*l2 + l2 = inter#(l1,l2) inter#(l1,app(l2,l3)) = 1 + 2*l1 + l1*l2 + l1*l3 + l2 + l3 >= l1 + l1*l2 + l2 = app#(inter(l1,l2),inter(l1,l3)) inter#(l1,app(l2,l3)) = 1 + 2*l1 + l1*l2 + l1*l3 + l2 + l3 >= l1 + l1*l2 + l2 = inter#(l1,l2) inter#(l1,app(l2,l3)) = 1 + 2*l1 + l1*l2 + l1*l3 + l2 + l3 >= l1 + l1*l3 + l3 = inter#(l1,l3) inter#(l1,cons(x,l2)) = l1 + l1*l2 + l2 >= l1 + l1*l2 + l2 = ifinter#(mem(x,l1),x,l2,l1) inter#(app(l1,l2),l3) = 1 + l1 + l1*l3 + l2 + l2*l3 + 2*l3 >= l1 + l1*l3 + l3 = app#(inter(l1,l3),inter(l2,l3)) inter#(app(l1,l2),l3) = 1 + l1 + l1*l3 + l2 + l2*l3 + 2*l3 >= l1 + l1*l3 + l3 = inter#(l1,l3) inter#(app(l1,l2),l3) = 1 + l1 + l1*l3 + l2 + l2*l3 + 2*l3 >= l2 + l2*l3 + l3 = inter#(l2,l3) inter#(cons(x,l1),l2) = l1 + l1*l2 + l2 >= l1 + l1*l2 + l2 = ifinter#(mem(x,l2),x,l1,l2) app(app(l1,l2),l3) = 2 + l1 + l2 + l3 >= 2 + l1 + l2 + l3 = app(l1,app(l2,l3)) app(cons(x,l1),l2) = 1 + l1 + l2 >= 1 + l1 + l2 = cons(x,app(l1,l2)) app(nil(),l) = 1 + l >= l = l ifinter(false(),x,l1,l2) = l1 + l1*l2 + l2 >= l1 + l1*l2 + l2 = inter(l1,l2) ifinter(true(),x,l1,l2) = l1 + l1*l2 + l2 >= l1 + l1*l2 + l2 = cons(x,inter(l1,l2)) inter(l1,app(l2,l3)) = 1 + 2*l1 + l1*l2 + l1*l3 + l2 + l3 >= 1 + 2*l1 + l1*l2 + l1*l3 + l2 + l3 = app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) = l1 + l1*l2 + l2 >= l1 + l1*l2 + l2 = ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) = x >= 0 = nil() inter(app(l1,l2),l3) = 1 + l1 + l1*l3 + l2 + l2*l3 + 2*l3 >= 1 + l1 + l1*l3 + l2 + l2*l3 + 2*l3 = app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) = l1 + l1*l2 + l2 >= l1 + l1*l2 + l2 = ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) = x >= 0 = nil() ***** Step 5.a:3.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) ifinter#(false(),x,l1,l2) -> inter#(l1,l2) ifinter#(true(),x,l1,l2) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)) inter#(l1,app(l2,l3)) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> inter#(l1,l3) inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1) inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)) inter#(app(l1,l2),l3) -> inter#(l1,l3) inter#(app(l1,l2),l3) -> inter#(l2,l3) inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/1,c_16/0,c_17/3,c_18/1,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ***** Step 5.a:3.b:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) ifinter#(false(),x,l1,l2) -> inter#(l1,l2) ifinter#(true(),x,l1,l2) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)) inter#(l1,app(l2,l3)) -> inter#(l1,l2) inter#(l1,app(l2,l3)) -> inter#(l1,l3) inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1) inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)) inter#(app(l1,l2),l3) -> inter#(l1,l3) inter#(app(l1,l2),l3) -> inter#(l2,l3) inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/1,c_16/0,c_17/3,c_18/1,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) -->_2 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_2 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 2:W:app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 3:W:ifinter#(false(),x,l1,l2) -> inter#(l1,l2) -->_1 inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2):12 -->_1 inter#(app(l1,l2),l3) -> inter#(l2,l3):11 -->_1 inter#(app(l1,l2),l3) -> inter#(l1,l3):10 -->_1 inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)):9 -->_1 inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1):8 -->_1 inter#(l1,app(l2,l3)) -> inter#(l1,l3):7 -->_1 inter#(l1,app(l2,l3)) -> inter#(l1,l2):6 -->_1 inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)):5 4:W:ifinter#(true(),x,l1,l2) -> inter#(l1,l2) -->_1 inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2):12 -->_1 inter#(app(l1,l2),l3) -> inter#(l2,l3):11 -->_1 inter#(app(l1,l2),l3) -> inter#(l1,l3):10 -->_1 inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)):9 -->_1 inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1):8 -->_1 inter#(l1,app(l2,l3)) -> inter#(l1,l3):7 -->_1 inter#(l1,app(l2,l3)) -> inter#(l1,l2):6 -->_1 inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)):5 5:W:inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)) -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 6:W:inter#(l1,app(l2,l3)) -> inter#(l1,l2) -->_1 inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2):12 -->_1 inter#(app(l1,l2),l3) -> inter#(l2,l3):11 -->_1 inter#(app(l1,l2),l3) -> inter#(l1,l3):10 -->_1 inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)):9 -->_1 inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1):8 -->_1 inter#(l1,app(l2,l3)) -> inter#(l1,l3):7 -->_1 inter#(l1,app(l2,l3)) -> inter#(l1,l2):6 -->_1 inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)):5 7:W:inter#(l1,app(l2,l3)) -> inter#(l1,l3) -->_1 inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2):12 -->_1 inter#(app(l1,l2),l3) -> inter#(l2,l3):11 -->_1 inter#(app(l1,l2),l3) -> inter#(l1,l3):10 -->_1 inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)):9 -->_1 inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1):8 -->_1 inter#(l1,app(l2,l3)) -> inter#(l1,l3):7 -->_1 inter#(l1,app(l2,l3)) -> inter#(l1,l2):6 -->_1 inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)):5 8:W:inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1) -->_1 ifinter#(true(),x,l1,l2) -> inter#(l1,l2):4 -->_1 ifinter#(false(),x,l1,l2) -> inter#(l1,l2):3 9:W:inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)) -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):2 -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):1 10:W:inter#(app(l1,l2),l3) -> inter#(l1,l3) -->_1 inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2):12 -->_1 inter#(app(l1,l2),l3) -> inter#(l2,l3):11 -->_1 inter#(app(l1,l2),l3) -> inter#(l1,l3):10 -->_1 inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)):9 -->_1 inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1):8 -->_1 inter#(l1,app(l2,l3)) -> inter#(l1,l3):7 -->_1 inter#(l1,app(l2,l3)) -> inter#(l1,l2):6 -->_1 inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)):5 11:W:inter#(app(l1,l2),l3) -> inter#(l2,l3) -->_1 inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2):12 -->_1 inter#(app(l1,l2),l3) -> inter#(l2,l3):11 -->_1 inter#(app(l1,l2),l3) -> inter#(l1,l3):10 -->_1 inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)):9 -->_1 inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1):8 -->_1 inter#(l1,app(l2,l3)) -> inter#(l1,l3):7 -->_1 inter#(l1,app(l2,l3)) -> inter#(l1,l2):6 -->_1 inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)):5 12:W:inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2) -->_1 ifinter#(true(),x,l1,l2) -> inter#(l1,l2):4 -->_1 ifinter#(false(),x,l1,l2) -> inter#(l1,l2):3 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 3: ifinter#(false(),x,l1,l2) -> inter#(l1,l2) 12: inter#(cons(x,l1),l2) -> ifinter#(mem(x,l2),x,l1,l2) 11: inter#(app(l1,l2),l3) -> inter#(l2,l3) 10: inter#(app(l1,l2),l3) -> inter#(l1,l3) 7: inter#(l1,app(l2,l3)) -> inter#(l1,l3) 6: inter#(l1,app(l2,l3)) -> inter#(l1,l2) 4: ifinter#(true(),x,l1,l2) -> inter#(l1,l2) 8: inter#(l1,cons(x,l2)) -> ifinter#(mem(x,l1),x,l2,l1) 5: inter#(l1,app(l2,l3)) -> app#(inter(l1,l2),inter(l1,l3)) 9: inter#(app(l1,l2),l3) -> app#(inter(l1,l3),inter(l2,l3)) 1: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) 2: app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) ***** Step 5.a:3.b:1.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/1,c_16/0,c_17/3,c_18/1,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). ** Step 5.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: eq#(s(x),s(y)) -> c_7(eq#(x,y)) ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak DPs: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/2,c_16/0,c_17/3,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:eq#(s(x),s(y)) -> c_7(eq#(x,y)) -->_1 eq#(s(x),s(y)) -> c_7(eq#(x,y)):1 2:S:ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_1 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_1 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):5 3:S:ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_1 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_1 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):5 4:S:ifmem#(false(),x,l) -> c_12(mem#(x,l)) -->_1 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):9 5:S:inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):11 -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):10 -->_3 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_3 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):7 -->_2 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):7 -->_3 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_3 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):5 -->_2 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):5 6:S:inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):9 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):3 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):2 7:S:inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):11 -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):10 -->_3 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_3 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):7 -->_2 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):7 -->_3 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_3 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):5 -->_2 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):5 8:S:inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):9 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):3 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):2 9:S:mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) -->_1 ifmem#(false(),x,l) -> c_12(mem#(x,l)):4 -->_2 eq#(s(x),s(y)) -> c_7(eq#(x,y)):1 10:W:app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) -->_2 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):11 -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):11 -->_2 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):10 -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):10 11:W:app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) -->_1 app#(cons(x,l1),l2) -> c_2(app#(l1,l2)):11 -->_1 app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)):10 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 11: app#(cons(x,l1),l2) -> c_2(app#(l1,l2)) 10: app#(app(l1,l2),l3) -> c_1(app#(l1,app(l2,l3)),app#(l2,l3)) ** Step 5.b:2: SimplifyRHS WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: eq#(s(x),s(y)) -> c_7(eq#(x,y)) ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/3,c_15/2,c_16/0,c_17/3,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:eq#(s(x),s(y)) -> c_7(eq#(x,y)) -->_1 eq#(s(x),s(y)) -> c_7(eq#(x,y)):1 2:S:ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_1 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_1 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):5 3:S:ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_1 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_1 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):5 4:S:ifmem#(false(),x,l) -> c_12(mem#(x,l)) -->_1 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):9 5:S:inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)) -->_3 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_3 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):7 -->_2 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):7 -->_3 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_3 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):5 -->_2 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):5 6:S:inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):9 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):3 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):2 7:S:inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)) -->_3 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_3 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):7 -->_2 inter#(app(l1,l2),l3) -> c_17(app#(inter(l1,l3),inter(l2,l3)),inter#(l1,l3),inter#(l2,l3)):7 -->_3 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_3 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):5 -->_2 inter#(l1,app(l2,l3)) -> c_14(app#(inter(l1,l2),inter(l1,l3)),inter#(l1,l2),inter#(l1,l3)):5 8:S:inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):9 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):3 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):2 9:S:mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) -->_1 ifmem#(false(),x,l) -> c_12(mem#(x,l)):4 -->_2 eq#(s(x),s(y)) -> c_7(eq#(x,y)):1 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) ** Step 5.b:3: UsableRules WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: eq#(s(x),s(y)) -> c_7(eq#(x,y)) ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak TRS: app(app(l1,l2),l3) -> app(l1,app(l2,l3)) app(cons(x,l1),l2) -> cons(x,app(l1,l2)) app(nil(),l) -> l eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifinter(false(),x,l1,l2) -> inter(l1,l2) ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2)) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() inter(l1,app(l2,l3)) -> app(inter(l1,l2),inter(l1,l3)) inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1) inter(x,nil()) -> nil() inter(app(l1,l2),l3) -> app(inter(l1,l3),inter(l2,l3)) inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2) inter(nil(),x) -> nil() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,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) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() eq#(s(x),s(y)) -> c_7(eq#(x,y)) ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) ** Step 5.b:4: Decompose WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: eq#(s(x),s(y)) -> c_7(eq#(x,y)) ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + 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: eq#(s(x),s(y)) -> c_7(eq#(x,y)) - Weak DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0 ,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} Problem (S) - Strict DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak DPs: eq#(s(x),s(y)) -> c_7(eq#(x,y)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0 ,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} *** Step 5.b:4.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: eq#(s(x),s(y)) -> c_7(eq#(x,y)) - Weak DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: eq#(s(x),s(y)) -> c_7(eq#(x,y)) The strictly oriented rules are moved into the weak component. **** Step 5.b:4.a:1.a:1: NaturalPI WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: eq#(s(x),s(y)) -> c_7(eq#(x,y)) - Weak DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: NaturalPI {shape = Mixed 2, restrict = Restrict, 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 polynomial interpretation of kind constructor-based(mixed(2)): The following argument positions are considered usable: uargs(c_7) = {1}, uargs(c_10) = {1}, uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_14) = {1,2}, uargs(c_15) = {1,2}, uargs(c_17) = {1,2}, uargs(c_18) = {1,2}, uargs(c_20) = {1,2} Following symbols are considered usable: {eq,app#,eq#,if#,ifinter#,ifmem#,inter#,mem#} TcT has computed the following interpretation: p(0) = 0 p(app) = 2 + x1 + x1*x2 + x2 + x2^2 p(cons) = 2 + x1 + x2 p(eq) = 2 + x1*x2 p(false) = 0 p(if) = x2*x3 + 2*x2^2 + x3^2 p(ifinter) = 1 + 2*x1*x3 + 2*x1^2 + 2*x2*x3 + 2*x2*x4 + 2*x2^2 + x4^2 p(ifmem) = 3*x1 + 2*x2*x3 + 3*x2^2 + 2*x3 p(inter) = x1^2 p(mem) = 0 p(nil) = 0 p(s) = 2 + x1 p(true) = 0 p(app#) = x1*x2 + x2 p(eq#) = x1 p(if#) = 1 + x1*x2 + 2*x2 + x3^2 p(ifinter#) = 2 + 2*x2 + 2*x3 + 2*x3*x4 + 2*x4 p(ifmem#) = x1 + 2*x2*x3 + x3 p(inter#) = 1 + 2*x1 + 2*x1*x2 + 2*x2 p(mem#) = 2*x1*x2 + x2 p(c_1) = x1 p(c_2) = 1 p(c_3) = 1 p(c_4) = 2 p(c_5) = 0 p(c_6) = 0 p(c_7) = x1 p(c_8) = 1 p(c_9) = 1 p(c_10) = x1 p(c_11) = x1 p(c_12) = x1 p(c_13) = 0 p(c_14) = 2 + x1 + x2 p(c_15) = 3 + x1 + x2 p(c_16) = 0 p(c_17) = 3 + x1 + x2 p(c_18) = 2 + x1 + x2 p(c_19) = 0 p(c_20) = x1 + x2 p(c_21) = 1 Following rules are strictly oriented: eq#(s(x),s(y)) = 2 + x > x = c_7(eq#(x,y)) Following rules are (at-least) weakly oriented: ifinter#(false(),x,l1,l2) = 2 + 2*l1 + 2*l1*l2 + 2*l2 + 2*x >= 1 + 2*l1 + 2*l1*l2 + 2*l2 = c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) = 2 + 2*l1 + 2*l1*l2 + 2*l2 + 2*x >= 1 + 2*l1 + 2*l1*l2 + 2*l2 = c_11(inter#(l1,l2)) ifmem#(false(),x,l) = l + 2*l*x >= l + 2*l*x = c_12(mem#(x,l)) inter#(l1,app(l2,l3)) = 5 + 6*l1 + 2*l1*l2 + 2*l1*l2*l3 + 2*l1*l3 + 2*l1*l3^2 + 2*l2 + 2*l2*l3 + 2*l3 + 2*l3^2 >= 4 + 4*l1 + 2*l1*l2 + 2*l1*l3 + 2*l2 + 2*l3 = c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) = 5 + 6*l1 + 2*l1*l2 + 2*l1*x + 2*l2 + 2*x >= 5 + 3*l1 + 2*l1*l2 + 2*l1*x + 2*l2 + 2*x = c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) = 5 + 2*l1 + 2*l1*l2 + 2*l1*l2*l3 + 2*l1*l3 + 2*l2 + 2*l2*l3 + 2*l2^2 + 2*l2^2*l3 + 6*l3 >= 5 + 2*l1 + 2*l1*l3 + 2*l2 + 2*l2*l3 + 4*l3 = c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) = 5 + 2*l1 + 2*l1*l2 + 6*l2 + 2*l2*x + 2*x >= 4 + 2*l1 + 2*l1*l2 + 3*l2 + 2*l2*x + 2*x = c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) = 2 + l + 2*l*x + 4*x + 2*x*y + y >= 2 + l + 2*l*x + x + x*y = c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) eq(0(),0()) = 2 >= 0 = true() eq(0(),s(x)) = 2 >= 0 = false() eq(s(x),0()) = 2 >= 0 = false() eq(s(x),s(y)) = 6 + 2*x + x*y + 2*y >= 2 + x*y = eq(x,y) **** Step 5.b:4.a:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: eq#(s(x),s(y)) -> c_7(eq#(x,y)) ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () **** Step 5.b:4.a:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: eq#(s(x),s(y)) -> c_7(eq#(x,y)) ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:eq#(s(x),s(y)) -> c_7(eq#(x,y)) -->_1 eq#(s(x),s(y)) -> c_7(eq#(x,y)):1 2:W:ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):5 3:W:ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):5 4:W:ifmem#(false(),x,l) -> c_12(mem#(x,l)) -->_1 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):9 5:W:inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_2 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_2 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):5 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):5 6:W:inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):9 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):3 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):2 7:W:inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):8 -->_2 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):6 -->_2 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):5 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):5 8:W:inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):9 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):3 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):2 9:W:mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) -->_1 ifmem#(false(),x,l) -> c_12(mem#(x,l)):4 -->_2 eq#(s(x),s(y)) -> c_7(eq#(x,y)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 2: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) 8: inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) 7: inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) 5: inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) 3: ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) 6: inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) 9: mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) 4: ifmem#(false(),x,l) -> c_12(mem#(x,l)) 1: eq#(s(x),s(y)) -> c_7(eq#(x,y)) **** Step 5.b:4.a:1.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). *** Step 5.b:4.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak DPs: eq#(s(x),s(y)) -> c_7(eq#(x,y)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):7 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):6 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):5 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):4 2:S:ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):7 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):6 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):5 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):4 3:S:ifmem#(false(),x,l) -> c_12(mem#(x,l)) -->_1 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):8 4:S:inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):7 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):7 -->_2 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):6 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):6 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):5 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):5 -->_2 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):4 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):4 5:S:inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):8 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):2 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):1 6:S:inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):7 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):7 -->_2 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):6 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):6 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):5 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):5 -->_2 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):4 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):4 7:S:inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):8 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):2 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):1 8:S:mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) -->_2 eq#(s(x),s(y)) -> c_7(eq#(x,y)):9 -->_1 ifmem#(false(),x,l) -> c_12(mem#(x,l)):3 9:W:eq#(s(x),s(y)) -> c_7(eq#(x,y)) -->_1 eq#(s(x),s(y)) -> c_7(eq#(x,y)):9 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 9: eq#(s(x),s(y)) -> c_7(eq#(x,y)) *** Step 5.b:4.b:2: SimplifyRHS WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/2,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):7 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):6 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):5 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):4 2:S:ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):7 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):6 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):5 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):4 3:S:ifmem#(false(),x,l) -> c_12(mem#(x,l)) -->_1 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):8 4:S:inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):7 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):7 -->_2 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):6 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):6 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):5 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):5 -->_2 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):4 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):4 5:S:inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):8 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):2 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):1 6:S:inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):7 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):7 -->_2 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):6 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):6 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):5 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):5 -->_2 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):4 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):4 7:S:inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)):8 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):2 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):1 8:S:mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l),eq#(x,y)) -->_1 ifmem#(false(),x,l) -> c_12(mem#(x,l)):3 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l)) *** Step 5.b:4.b:3: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/1,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 2: ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) 4: inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) 6: inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) 8: mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l)) Consider the set of all dependency pairs 1: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) 2: ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) 3: ifmem#(false(),x,l) -> c_12(mem#(x,l)) 4: inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) 5: inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) 6: inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) 7: inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) 8: mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l)) Processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2)) SPACE(?,?)on application of the dependency pairs {2,4,6,8} These cover all (indirect) predecessors of dependency pairs {2,3,4,6,8} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. **** Step 5.b:4.b:3.a:1: NaturalPI WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/1,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: NaturalPI {shape = Mixed 2, restrict = Restrict, 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 polynomial interpretation of kind constructor-based(mixed(2)): The following argument positions are considered usable: uargs(c_10) = {1}, uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_14) = {1,2}, uargs(c_15) = {1,2}, uargs(c_17) = {1,2}, uargs(c_18) = {1,2}, uargs(c_20) = {1} Following symbols are considered usable: {eq,ifmem,mem,app#,eq#,if#,ifinter#,ifmem#,inter#,mem#} TcT has computed the following interpretation: p(0) = 0 p(app) = 2 + x1 + x2 p(cons) = 2 + x1 + x2 p(eq) = 1 p(false) = 1 p(if) = x3 + 2*x3^2 p(ifinter) = x1*x2 + x1*x4 + 2*x1^2 + 2*x3^2 p(ifmem) = 2*x1 p(inter) = 2 + x2^2 p(mem) = 2 p(nil) = 0 p(s) = 0 p(true) = 0 p(app#) = 1 p(eq#) = 1 + 2*x1 + x1*x2 + 2*x2 + x2^2 p(if#) = 2 + x3 p(ifinter#) = 2 + 2*x1 + x1*x2 + 3*x3 + 2*x3*x4 + 3*x4 p(ifmem#) = x1*x2 + 2*x1^2 + x2*x3 + 2*x3 p(inter#) = 1 + 3*x1 + 2*x1*x2 + 3*x2 p(mem#) = 1 + x1*x2 + 2*x2 p(c_1) = 2 p(c_2) = 2 + x1 p(c_3) = 0 p(c_4) = 2 p(c_5) = 2 p(c_6) = 0 p(c_7) = 0 p(c_8) = 1 p(c_9) = 0 p(c_10) = 3 + x1 p(c_11) = x1 p(c_12) = 1 + x1 p(c_13) = 2 p(c_14) = 2 + x1 + x2 p(c_15) = x1 + x2 p(c_16) = 1 p(c_17) = 2 + x1 + x2 p(c_18) = x1 + x2 p(c_19) = 0 p(c_20) = 2 + x1 p(c_21) = 0 Following rules are strictly oriented: ifinter#(true(),x,l1,l2) = 2 + 3*l1 + 2*l1*l2 + 3*l2 > 1 + 3*l1 + 2*l1*l2 + 3*l2 = c_11(inter#(l1,l2)) inter#(l1,app(l2,l3)) = 7 + 7*l1 + 2*l1*l2 + 2*l1*l3 + 3*l2 + 3*l3 > 4 + 6*l1 + 2*l1*l2 + 2*l1*l3 + 3*l2 + 3*l3 = c_14(inter#(l1,l2),inter#(l1,l3)) inter#(app(l1,l2),l3) = 7 + 3*l1 + 2*l1*l3 + 3*l2 + 2*l2*l3 + 7*l3 > 4 + 3*l1 + 2*l1*l3 + 3*l2 + 2*l2*l3 + 6*l3 = c_17(inter#(l1,l3),inter#(l2,l3)) mem#(x,cons(y,l)) = 5 + 2*l + l*x + 2*x + x*y + 2*y > 4 + 2*l + l*x + x = c_20(ifmem#(eq(x,y),x,l)) Following rules are (at-least) weakly oriented: ifinter#(false(),x,l1,l2) = 4 + 3*l1 + 2*l1*l2 + 3*l2 + x >= 4 + 3*l1 + 2*l1*l2 + 3*l2 = c_10(inter#(l1,l2)) ifmem#(false(),x,l) = 2 + 2*l + l*x + x >= 2 + 2*l + l*x = c_12(mem#(x,l)) inter#(l1,cons(x,l2)) = 7 + 7*l1 + 2*l1*l2 + 2*l1*x + 3*l2 + 3*x >= 7 + 5*l1 + 2*l1*l2 + l1*x + 3*l2 + 2*x = c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(cons(x,l1),l2) = 7 + 3*l1 + 2*l1*l2 + 7*l2 + 2*l2*x + 3*x >= 7 + 3*l1 + 2*l1*l2 + 5*l2 + l2*x + 2*x = c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) eq(0(),0()) = 1 >= 0 = true() eq(0(),s(x)) = 1 >= 1 = false() eq(s(x),0()) = 1 >= 1 = false() eq(s(x),s(y)) = 1 >= 1 = eq(x,y) ifmem(false(),x,l) = 2 >= 2 = mem(x,l) ifmem(true(),x,l) = 0 >= 0 = true() mem(x,cons(y,l)) = 2 >= 2 = ifmem(eq(x,y),x,l) mem(x,nil()) = 2 >= 1 = false() **** Step 5.b:4.b:3.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) - Weak DPs: ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/1,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () **** Step 5.b:4.b:3.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) - Weak DPs: ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) ifmem#(false(),x,l) -> c_12(mem#(x,l)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/1,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):6 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):3 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):2 2:S:inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l)):8 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):4 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):1 3:S:inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) -->_2 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l)):8 -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):4 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):1 4:W:ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):6 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):3 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):2 5:W:ifmem#(false(),x,l) -> c_12(mem#(x,l)) -->_1 mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l)):8 6:W:inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) -->_2 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_2 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):6 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):6 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):3 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):3 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):2 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):2 7:W:inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) -->_2 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_2 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):6 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):6 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):3 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):3 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):2 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):2 8:W:mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l)) -->_1 ifmem#(false(),x,l) -> c_12(mem#(x,l)):5 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 8: mem#(x,cons(y,l)) -> c_20(ifmem#(eq(x,y),x,l)) 5: ifmem#(false(),x,l) -> c_12(mem#(x,l)) **** Step 5.b:4.b:3.b:2: SimplifyRHS WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) - Weak DPs: ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/2,c_16/0,c_17/2,c_18/2,c_19/0,c_20/1,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):6 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):3 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):2 2:S:inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)) -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):4 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):1 3:S:inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)) -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):4 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):1 4:W:ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):6 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):3 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):2 6:W:inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) -->_2 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_2 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):6 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):6 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):3 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):3 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):2 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):2 7:W:inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) -->_2 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):7 -->_2 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):6 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):6 -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):3 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2),mem#(x,l2)):3 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):2 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1),mem#(x,l1)):2 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) **** Step 5.b:4.b:3.b:3: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) - Weak DPs: ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/0,c_17/2,c_18/1,c_19/0,c_20/1,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 2: inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) 3: inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) Consider the set of all dependency pairs 1: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) 2: inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) 3: inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) 4: ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) 5: inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) 6: inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) Processor NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2)) SPACE(?,?)on application of the dependency pairs {2,3} These cover all (indirect) predecessors of dependency pairs {1,2,3,4} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. ***** Step 5.b:4.b:3.b:3.a:1: NaturalPI WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) - Weak DPs: ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/0,c_17/2,c_18/1,c_19/0,c_20/1,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: NaturalPI {shape = Mixed 2, restrict = Restrict, 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 polynomial interpretation of kind constructor-based(mixed(2)): The following argument positions are considered usable: uargs(c_10) = {1}, uargs(c_11) = {1}, uargs(c_14) = {1,2}, uargs(c_15) = {1}, uargs(c_17) = {1,2}, uargs(c_18) = {1} Following symbols are considered usable: {app#,eq#,if#,ifinter#,ifmem#,inter#,mem#} TcT has computed the following interpretation: p(0) = 1 p(app) = 2 + x1 + x1*x2 + x2 + x2^2 p(cons) = 2 + x2 p(eq) = 1 + x1 + x2^2 p(false) = 0 p(if) = 0 p(ifinter) = 0 p(ifmem) = x1*x2 + 2*x1^2 + x2 + 3*x2^2 + 3*x3 + 2*x3^2 p(inter) = 0 p(mem) = 1 + x1 + 2*x1*x2 + x1^2 + x2^2 p(nil) = 1 p(s) = x1 p(true) = 0 p(app#) = 0 p(eq#) = 0 p(if#) = 0 p(ifinter#) = 2*x3 + 2*x3*x4 + 3*x4 p(ifmem#) = 2*x1 + x1^2 + 2*x3^2 p(inter#) = 2*x1 + 2*x1*x2 + 2*x2 p(mem#) = 1 + x1 + 2*x2^2 p(c_1) = 2 p(c_2) = 1 p(c_3) = 0 p(c_4) = 1 p(c_5) = 1 p(c_6) = 0 p(c_7) = 0 p(c_8) = 0 p(c_9) = 1 p(c_10) = x1 p(c_11) = x1 p(c_12) = 2 p(c_13) = 0 p(c_14) = x1 + x2 p(c_15) = x1 p(c_16) = 0 p(c_17) = x1 + x2 p(c_18) = x1 p(c_19) = 0 p(c_20) = 0 p(c_21) = 2 Following rules are strictly oriented: inter#(l1,cons(x,l2)) = 4 + 6*l1 + 2*l1*l2 + 2*l2 > 3*l1 + 2*l1*l2 + 2*l2 = c_15(ifinter#(mem(x,l1),x,l2,l1)) inter#(cons(x,l1),l2) = 4 + 2*l1 + 2*l1*l2 + 6*l2 > 2*l1 + 2*l1*l2 + 3*l2 = c_18(ifinter#(mem(x,l2),x,l1,l2)) Following rules are (at-least) weakly oriented: ifinter#(false(),x,l1,l2) = 2*l1 + 2*l1*l2 + 3*l2 >= 2*l1 + 2*l1*l2 + 2*l2 = c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) = 2*l1 + 2*l1*l2 + 3*l2 >= 2*l1 + 2*l1*l2 + 2*l2 = c_11(inter#(l1,l2)) inter#(l1,app(l2,l3)) = 4 + 6*l1 + 2*l1*l2 + 2*l1*l2*l3 + 2*l1*l3 + 2*l1*l3^2 + 2*l2 + 2*l2*l3 + 2*l3 + 2*l3^2 >= 4*l1 + 2*l1*l2 + 2*l1*l3 + 2*l2 + 2*l3 = c_14(inter#(l1,l2),inter#(l1,l3)) inter#(app(l1,l2),l3) = 4 + 2*l1 + 2*l1*l2 + 2*l1*l2*l3 + 2*l1*l3 + 2*l2 + 2*l2*l3 + 2*l2^2 + 2*l2^2*l3 + 6*l3 >= 2*l1 + 2*l1*l3 + 2*l2 + 2*l2*l3 + 4*l3 = c_17(inter#(l1,l3),inter#(l2,l3)) ***** Step 5.b:4.b:3.b:3.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) - Weak DPs: ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/0,c_17/2,c_18/1,c_19/0,c_20/1,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ***** Step 5.b:4.b:3.b:3.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/0,c_17/2,c_18/1,c_19/0,c_20/1,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)):6 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):5 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)):4 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):3 2:W:ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)):6 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):5 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)):4 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):3 3:W:inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)):6 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)):6 -->_2 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):5 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):5 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)):4 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)):4 -->_2 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):3 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):3 4:W:inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):2 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):1 5:W:inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) -->_2 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)):6 -->_1 inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)):6 -->_2 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):5 -->_1 inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)):5 -->_2 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)):4 -->_1 inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)):4 -->_2 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):3 -->_1 inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)):3 6:W:inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) -->_1 ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)):2 -->_1 ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: ifinter#(false(),x,l1,l2) -> c_10(inter#(l1,l2)) 6: inter#(cons(x,l1),l2) -> c_18(ifinter#(mem(x,l2),x,l1,l2)) 5: inter#(app(l1,l2),l3) -> c_17(inter#(l1,l3),inter#(l2,l3)) 3: inter#(l1,app(l2,l3)) -> c_14(inter#(l1,l2),inter#(l1,l3)) 2: ifinter#(true(),x,l1,l2) -> c_11(inter#(l1,l2)) 4: inter#(l1,cons(x,l2)) -> c_15(ifinter#(mem(x,l1),x,l2,l1)) ***** Step 5.b:4.b:3.b:3.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: eq(0(),0()) -> true() eq(0(),s(x)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ifmem(false(),x,l) -> mem(x,l) ifmem(true(),x,l) -> true() mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l) mem(x,nil()) -> false() - Signature: {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2,app#/2,eq#/2,if#/3,ifinter#/4,ifmem#/3,inter#/2 ,mem#/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0,c_1/2,c_2/1,c_3/0,c_4/0,c_5/0,c_6/0,c_7/1,c_8/0,c_9/0,c_10/1 ,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/0,c_17/2,c_18/1,c_19/0,c_20/1,c_21/0} - Obligation: innermost runtime complexity wrt. defined symbols {app#,eq#,if#,ifinter#,ifmem#,inter# ,mem#} and constructors {0,cons,false,nil,s,true} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). WORST_CASE(?,O(n^4))