* Step 1: Sum WORST_CASE(?,O(n^3)) + Considered Problem: - Strict TRS: #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) bfs2(@t,@x) -> bfs2#1(dobfs(@t,@x),@x) bfs2#1(@t',@x) -> dobfs(@t',@x) dfs(@queue,@x) -> dfs#1(@queue,@x) dfs#1(::(@t,@ts),@x) -> dfs#2(@t,@t,@ts,@x) dfs#1(nil(),@x) -> leaf() dfs#2(leaf(),@t,@ts,@x) -> dfs(@ts,@x) dfs#2(node(@a,@t1,@t2),@t,@ts,@x) -> dfs#3(#equal(@a,@x),@t,@t1,@t2,@ts,@x) dfs#3(#false(),@t,@t1,@t2,@ts,@x) -> dfs(::(@t1,::(@t2,@ts)),@x) dfs#3(#true(),@t,@t1,@t2,@ts,@x) -> @t dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) dodfs(@t,@x) -> dfs(::(@t,nil()),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1 ,#true/0,::/2,leaf/0,nil/0,node/3} - Obligation: innermost runtime complexity wrt. defined symbols {#and,#eq,#equal,appendreverse,appendreverse#1,bfs,bfs#1 ,bfs#2,bfs#3,bfs#4,bfs2,bfs2#1,dfs,dfs#1,dfs#2,dfs#3,dobfs,dodfs,reverse} and constructors {#0,#false,#neg ,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: Sum {left = someStrategy, right = someStrategy} + Details: () * Step 2: DependencyPairs WORST_CASE(?,O(n^3)) + Considered Problem: - Strict TRS: #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) bfs2(@t,@x) -> bfs2#1(dobfs(@t,@x),@x) bfs2#1(@t',@x) -> dobfs(@t',@x) dfs(@queue,@x) -> dfs#1(@queue,@x) dfs#1(::(@t,@ts),@x) -> dfs#2(@t,@t,@ts,@x) dfs#1(nil(),@x) -> leaf() dfs#2(leaf(),@t,@ts,@x) -> dfs(@ts,@x) dfs#2(node(@a,@t1,@t2),@t,@ts,@x) -> dfs#3(#equal(@a,@x),@t,@t1,@t2,@ts,@x) dfs#3(#false(),@t,@t1,@t2,@ts,@x) -> dfs(::(@t1,::(@t2,@ts)),@x) dfs#3(#true(),@t,@t1,@t2,@ts,@x) -> @t dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) dodfs(@t,@x) -> dfs(::(@t,nil()),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1 ,#true/0,::/2,leaf/0,nil/0,node/3} - Obligation: innermost runtime complexity wrt. defined symbols {#and,#eq,#equal,appendreverse,appendreverse#1,bfs,bfs#1 ,bfs#2,bfs#3,bfs#4,bfs2,bfs2#1,dfs,dfs#1,dfs#2,dfs#3,dobfs,dodfs,reverse} and constructors {#0,#false,#neg ,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs #equal#(@x,@y) -> c_1(#eq#(@x,@y)) appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) appendreverse#1#(nil(),@sofar) -> c_4() bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#2#(nil(),@x) -> c_9() bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) ,#equal#(@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13() bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#1#(nil(),@x) -> c_18() dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22() dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x)) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) Weak DPs #and#(#false(),#false()) -> c_26() #and#(#false(),#true()) -> c_27() #and#(#true(),#false()) -> c_28() #and#(#true(),#true()) -> c_29() #eq#(#0(),#0()) -> c_30() #eq#(#0(),#neg(@y)) -> c_31() #eq#(#0(),#pos(@y)) -> c_32() #eq#(#0(),#s(@y)) -> c_33() #eq#(#neg(@x),#0()) -> c_34() #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_36() #eq#(#pos(@x),#0()) -> c_37() #eq#(#pos(@x),#neg(@y)) -> c_38() #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_40() #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),leaf()) -> c_43() #eq#(::(@x_1,@x_2),nil()) -> c_44() #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45() #eq#(leaf(),::(@y_1,@y_2)) -> c_46() #eq#(leaf(),leaf()) -> c_47() #eq#(leaf(),nil()) -> c_48() #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49() #eq#(nil(),::(@y_1,@y_2)) -> c_50() #eq#(nil(),leaf()) -> c_51() #eq#(nil(),nil()) -> c_52() #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53() #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54() #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55() #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56() #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)) and mark the set of starting terms. * Step 3: UsableRules WORST_CASE(?,O(n^3)) + Considered Problem: - Strict DPs: #equal#(@x,@y) -> c_1(#eq#(@x,@y)) appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) appendreverse#1#(nil(),@sofar) -> c_4() bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#2#(nil(),@x) -> c_9() bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) ,#equal#(@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13() bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#1#(nil(),@x) -> c_18() dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22() dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x)) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak DPs: #and#(#false(),#false()) -> c_26() #and#(#false(),#true()) -> c_27() #and#(#true(),#false()) -> c_28() #and#(#true(),#true()) -> c_29() #eq#(#0(),#0()) -> c_30() #eq#(#0(),#neg(@y)) -> c_31() #eq#(#0(),#pos(@y)) -> c_32() #eq#(#0(),#s(@y)) -> c_33() #eq#(#neg(@x),#0()) -> c_34() #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_36() #eq#(#pos(@x),#0()) -> c_37() #eq#(#pos(@x),#neg(@y)) -> c_38() #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_40() #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),leaf()) -> c_43() #eq#(::(@x_1,@x_2),nil()) -> c_44() #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45() #eq#(leaf(),::(@y_1,@y_2)) -> c_46() #eq#(leaf(),leaf()) -> c_47() #eq#(leaf(),nil()) -> c_48() #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49() #eq#(nil(),::(@y_1,@y_2)) -> c_50() #eq#(nil(),leaf()) -> c_51() #eq#(nil(),nil()) -> c_52() #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53() #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54() #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55() #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56() #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) bfs2(@t,@x) -> bfs2#1(dobfs(@t,@x),@x) bfs2#1(@t',@x) -> dobfs(@t',@x) dfs(@queue,@x) -> dfs#1(@queue,@x) dfs#1(::(@t,@ts),@x) -> dfs#2(@t,@t,@ts,@x) dfs#1(nil(),@x) -> leaf() dfs#2(leaf(),@t,@ts,@x) -> dfs(@ts,@x) dfs#2(node(@a,@t1,@t2),@t,@ts,@x) -> dfs#3(#equal(@a,@x),@t,@t1,@t2,@ts,@x) dfs#3(#false(),@t,@t1,@t2,@ts,@x) -> dfs(::(@t1,::(@t2,@ts)),@x) dfs#3(#true(),@t,@t1,@t2,@ts,@x) -> @t dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) dodfs(@t,@x) -> dfs(::(@t,nil()),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/2,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/2,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) #and#(#false(),#false()) -> c_26() #and#(#false(),#true()) -> c_27() #and#(#true(),#false()) -> c_28() #and#(#true(),#true()) -> c_29() #eq#(#0(),#0()) -> c_30() #eq#(#0(),#neg(@y)) -> c_31() #eq#(#0(),#pos(@y)) -> c_32() #eq#(#0(),#s(@y)) -> c_33() #eq#(#neg(@x),#0()) -> c_34() #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_36() #eq#(#pos(@x),#0()) -> c_37() #eq#(#pos(@x),#neg(@y)) -> c_38() #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_40() #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),leaf()) -> c_43() #eq#(::(@x_1,@x_2),nil()) -> c_44() #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45() #eq#(leaf(),::(@y_1,@y_2)) -> c_46() #eq#(leaf(),leaf()) -> c_47() #eq#(leaf(),nil()) -> c_48() #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49() #eq#(nil(),::(@y_1,@y_2)) -> c_50() #eq#(nil(),leaf()) -> c_51() #eq#(nil(),nil()) -> c_52() #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53() #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54() #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55() #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56() #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)) #equal#(@x,@y) -> c_1(#eq#(@x,@y)) appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) appendreverse#1#(nil(),@sofar) -> c_4() bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#2#(nil(),@x) -> c_9() bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) ,#equal#(@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13() bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#1#(nil(),@x) -> c_18() dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22() dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x)) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) * Step 4: PredecessorEstimation WORST_CASE(?,O(n^3)) + Considered Problem: - Strict DPs: #equal#(@x,@y) -> c_1(#eq#(@x,@y)) appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) appendreverse#1#(nil(),@sofar) -> c_4() bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#2#(nil(),@x) -> c_9() bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) ,#equal#(@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13() bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#1#(nil(),@x) -> c_18() dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22() dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x)) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak DPs: #and#(#false(),#false()) -> c_26() #and#(#false(),#true()) -> c_27() #and#(#true(),#false()) -> c_28() #and#(#true(),#true()) -> c_29() #eq#(#0(),#0()) -> c_30() #eq#(#0(),#neg(@y)) -> c_31() #eq#(#0(),#pos(@y)) -> c_32() #eq#(#0(),#s(@y)) -> c_33() #eq#(#neg(@x),#0()) -> c_34() #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_36() #eq#(#pos(@x),#0()) -> c_37() #eq#(#pos(@x),#neg(@y)) -> c_38() #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_40() #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),leaf()) -> c_43() #eq#(::(@x_1,@x_2),nil()) -> c_44() #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45() #eq#(leaf(),::(@y_1,@y_2)) -> c_46() #eq#(leaf(),leaf()) -> c_47() #eq#(leaf(),nil()) -> c_48() #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49() #eq#(nil(),::(@y_1,@y_2)) -> c_50() #eq#(nil(),leaf()) -> c_51() #eq#(nil(),nil()) -> c_52() #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53() #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54() #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55() #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56() #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/2,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/2,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,4,9,13,18,22} by application of Pre({1,4,9,13,18,22}) = {2,7,11,16,20}. Here rules are labelled as follows: 1: #equal#(@x,@y) -> c_1(#eq#(@x,@y)) 2: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) 3: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) 4: appendreverse#1#(nil(),@sofar) -> c_4() 5: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) 6: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) 7: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) 8: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) 9: bfs#2#(nil(),@x) -> c_9() 10: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) 11: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y) ,#equal#(@x,@y)) 12: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) 13: bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13() 14: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) 15: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) 16: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) 17: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) 18: dfs#1#(nil(),@x) -> c_18() 19: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) 20: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x)) 21: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) 22: dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22() 23: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) 24: dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x)) 25: reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) 26: #and#(#false(),#false()) -> c_26() 27: #and#(#false(),#true()) -> c_27() 28: #and#(#true(),#false()) -> c_28() 29: #and#(#true(),#true()) -> c_29() 30: #eq#(#0(),#0()) -> c_30() 31: #eq#(#0(),#neg(@y)) -> c_31() 32: #eq#(#0(),#pos(@y)) -> c_32() 33: #eq#(#0(),#s(@y)) -> c_33() 34: #eq#(#neg(@x),#0()) -> c_34() 35: #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)) 36: #eq#(#neg(@x),#pos(@y)) -> c_36() 37: #eq#(#pos(@x),#0()) -> c_37() 38: #eq#(#pos(@x),#neg(@y)) -> c_38() 39: #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)) 40: #eq#(#s(@x),#0()) -> c_40() 41: #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)) 42: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 43: #eq#(::(@x_1,@x_2),leaf()) -> c_43() 44: #eq#(::(@x_1,@x_2),nil()) -> c_44() 45: #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45() 46: #eq#(leaf(),::(@y_1,@y_2)) -> c_46() 47: #eq#(leaf(),leaf()) -> c_47() 48: #eq#(leaf(),nil()) -> c_48() 49: #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49() 50: #eq#(nil(),::(@y_1,@y_2)) -> c_50() 51: #eq#(nil(),leaf()) -> c_51() 52: #eq#(nil(),nil()) -> c_52() 53: #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53() 54: #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54() 55: #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55() 56: #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56() 57: #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)) * Step 5: RemoveWeakSuffixes WORST_CASE(?,O(n^3)) + Considered Problem: - Strict DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) ,#equal#(@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x)) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak DPs: #and#(#false(),#false()) -> c_26() #and#(#false(),#true()) -> c_27() #and#(#true(),#false()) -> c_28() #and#(#true(),#true()) -> c_29() #eq#(#0(),#0()) -> c_30() #eq#(#0(),#neg(@y)) -> c_31() #eq#(#0(),#pos(@y)) -> c_32() #eq#(#0(),#s(@y)) -> c_33() #eq#(#neg(@x),#0()) -> c_34() #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_36() #eq#(#pos(@x),#0()) -> c_37() #eq#(#pos(@x),#neg(@y)) -> c_38() #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_40() #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),leaf()) -> c_43() #eq#(::(@x_1,@x_2),nil()) -> c_44() #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45() #eq#(leaf(),::(@y_1,@y_2)) -> c_46() #eq#(leaf(),leaf()) -> c_47() #eq#(leaf(),nil()) -> c_48() #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49() #eq#(nil(),::(@y_1,@y_2)) -> c_50() #eq#(nil(),leaf()) -> c_51() #eq#(nil(),nil()) -> c_52() #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53() #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54() #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55() #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56() #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)) #equal#(@x,@y) -> c_1(#eq#(@x,@y)) appendreverse#1#(nil(),@sofar) -> c_4() bfs#2#(nil(),@x) -> c_9() bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13() dfs#1#(nil(),@x) -> c_18() dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22() - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/2,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/2,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))):2 -->_1 appendreverse#1#(nil(),@sofar) -> c_4():53 2:S:appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1 3:S:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):5 -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):4 4:S:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y) ,#equal#(@x,@y)):8 -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):7 5:S:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))):6 -->_1 bfs#2#(nil(),@x) -> c_9():54 6:S:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) -->_2 reverse#(@xs) -> c_25(appendreverse#(@xs,nil())):19 -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 7:S:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 8:S:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y) ,#equal#(@x,@y)) -->_2 #equal#(@x,@y) -> c_1(#eq#(@x,@y)):52 -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)):9 -->_1 bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13():55 9:S:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 10:S:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17 -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):11 11:S:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17 12:S:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):13 -->_1 dfs#1#(nil(),@x) -> c_18():56 13:S:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x) ,#equal#(@a,@x)):15 -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):14 14:S:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12 15:S:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x)) -->_2 #equal#(@x,@y) -> c_1(#eq#(@x,@y)):52 -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):16 -->_1 dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22():57 16:S:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12 17:S:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 18:S:dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12 19:S:reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1 20:W:#and#(#false(),#false()) -> c_26() 21:W:#and#(#false(),#true()) -> c_27() 22:W:#and#(#true(),#false()) -> c_28() 23:W:#and#(#true(),#true()) -> c_29() 24:W:#eq#(#0(),#0()) -> c_30() 25:W:#eq#(#0(),#neg(@y)) -> c_31() 26:W:#eq#(#0(),#pos(@y)) -> c_32() 27:W:#eq#(#0(),#s(@y)) -> c_33() 28:W:#eq#(#neg(@x),#0()) -> c_34() 29:W:#eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)) -->_1 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)):51 -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):36 -->_1 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33 -->_1 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50 -->_1 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49 -->_1 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48 -->_1 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47 -->_1 #eq#(nil(),nil()) -> c_52():46 -->_1 #eq#(nil(),leaf()) -> c_51():45 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44 -->_1 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43 -->_1 #eq#(leaf(),nil()) -> c_48():42 -->_1 #eq#(leaf(),leaf()) -> c_47():41 -->_1 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40 -->_1 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_44():38 -->_1 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37 -->_1 #eq#(#s(@x),#0()) -> c_40():34 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_38():32 -->_1 #eq#(#pos(@x),#0()) -> c_37():31 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_36():30 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29 -->_1 #eq#(#neg(@x),#0()) -> c_34():28 -->_1 #eq#(#0(),#s(@y)) -> c_33():27 -->_1 #eq#(#0(),#pos(@y)) -> c_32():26 -->_1 #eq#(#0(),#neg(@y)) -> c_31():25 -->_1 #eq#(#0(),#0()) -> c_30():24 30:W:#eq#(#neg(@x),#pos(@y)) -> c_36() 31:W:#eq#(#pos(@x),#0()) -> c_37() 32:W:#eq#(#pos(@x),#neg(@y)) -> c_38() 33:W:#eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)) -->_1 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)):51 -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):36 -->_1 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35 -->_1 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50 -->_1 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49 -->_1 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48 -->_1 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47 -->_1 #eq#(nil(),nil()) -> c_52():46 -->_1 #eq#(nil(),leaf()) -> c_51():45 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44 -->_1 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43 -->_1 #eq#(leaf(),nil()) -> c_48():42 -->_1 #eq#(leaf(),leaf()) -> c_47():41 -->_1 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40 -->_1 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_44():38 -->_1 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37 -->_1 #eq#(#s(@x),#0()) -> c_40():34 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_38():32 -->_1 #eq#(#pos(@x),#0()) -> c_37():31 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_36():30 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29 -->_1 #eq#(#neg(@x),#0()) -> c_34():28 -->_1 #eq#(#0(),#s(@y)) -> c_33():27 -->_1 #eq#(#0(),#pos(@y)) -> c_32():26 -->_1 #eq#(#0(),#neg(@y)) -> c_31():25 -->_1 #eq#(#0(),#0()) -> c_30():24 34:W:#eq#(#s(@x),#0()) -> c_40() 35:W:#eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)) -->_1 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)):51 -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):36 -->_1 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50 -->_1 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49 -->_1 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48 -->_1 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47 -->_1 #eq#(nil(),nil()) -> c_52():46 -->_1 #eq#(nil(),leaf()) -> c_51():45 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44 -->_1 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43 -->_1 #eq#(leaf(),nil()) -> c_48():42 -->_1 #eq#(leaf(),leaf()) -> c_47():41 -->_1 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40 -->_1 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_44():38 -->_1 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37 -->_1 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35 -->_1 #eq#(#s(@x),#0()) -> c_40():34 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_38():32 -->_1 #eq#(#pos(@x),#0()) -> c_37():31 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_36():30 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29 -->_1 #eq#(#neg(@x),#0()) -> c_34():28 -->_1 #eq#(#0(),#s(@y)) -> c_33():27 -->_1 #eq#(#0(),#pos(@y)) -> c_32():26 -->_1 #eq#(#0(),#neg(@y)) -> c_31():25 -->_1 #eq#(#0(),#0()) -> c_30():24 36:W:#eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) -->_3 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)):51 -->_2 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)):51 -->_3 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50 -->_2 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50 -->_3 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49 -->_2 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49 -->_3 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48 -->_2 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48 -->_3 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47 -->_2 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47 -->_3 #eq#(nil(),nil()) -> c_52():46 -->_2 #eq#(nil(),nil()) -> c_52():46 -->_3 #eq#(nil(),leaf()) -> c_51():45 -->_2 #eq#(nil(),leaf()) -> c_51():45 -->_3 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44 -->_2 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44 -->_3 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43 -->_2 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43 -->_3 #eq#(leaf(),nil()) -> c_48():42 -->_2 #eq#(leaf(),nil()) -> c_48():42 -->_3 #eq#(leaf(),leaf()) -> c_47():41 -->_2 #eq#(leaf(),leaf()) -> c_47():41 -->_3 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40 -->_2 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40 -->_3 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39 -->_2 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39 -->_3 #eq#(::(@x_1,@x_2),nil()) -> c_44():38 -->_2 #eq#(::(@x_1,@x_2),nil()) -> c_44():38 -->_3 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37 -->_2 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37 -->_3 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):36 -->_2 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):36 -->_3 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35 -->_2 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35 -->_3 #eq#(#s(@x),#0()) -> c_40():34 -->_2 #eq#(#s(@x),#0()) -> c_40():34 -->_3 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33 -->_2 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33 -->_3 #eq#(#pos(@x),#neg(@y)) -> c_38():32 -->_2 #eq#(#pos(@x),#neg(@y)) -> c_38():32 -->_3 #eq#(#pos(@x),#0()) -> c_37():31 -->_2 #eq#(#pos(@x),#0()) -> c_37():31 -->_3 #eq#(#neg(@x),#pos(@y)) -> c_36():30 -->_2 #eq#(#neg(@x),#pos(@y)) -> c_36():30 -->_3 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29 -->_2 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29 -->_3 #eq#(#neg(@x),#0()) -> c_34():28 -->_2 #eq#(#neg(@x),#0()) -> c_34():28 -->_3 #eq#(#0(),#s(@y)) -> c_33():27 -->_2 #eq#(#0(),#s(@y)) -> c_33():27 -->_3 #eq#(#0(),#pos(@y)) -> c_32():26 -->_2 #eq#(#0(),#pos(@y)) -> c_32():26 -->_3 #eq#(#0(),#neg(@y)) -> c_31():25 -->_2 #eq#(#0(),#neg(@y)) -> c_31():25 -->_3 #eq#(#0(),#0()) -> c_30():24 -->_2 #eq#(#0(),#0()) -> c_30():24 -->_1 #and#(#true(),#true()) -> c_29():23 -->_1 #and#(#true(),#false()) -> c_28():22 -->_1 #and#(#false(),#true()) -> c_27():21 -->_1 #and#(#false(),#false()) -> c_26():20 37:W:#eq#(::(@x_1,@x_2),leaf()) -> c_43() 38:W:#eq#(::(@x_1,@x_2),nil()) -> c_44() 39:W:#eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45() 40:W:#eq#(leaf(),::(@y_1,@y_2)) -> c_46() 41:W:#eq#(leaf(),leaf()) -> c_47() 42:W:#eq#(leaf(),nil()) -> c_48() 43:W:#eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49() 44:W:#eq#(nil(),::(@y_1,@y_2)) -> c_50() 45:W:#eq#(nil(),leaf()) -> c_51() 46:W:#eq#(nil(),nil()) -> c_52() 47:W:#eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53() 48:W:#eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54() 49:W:#eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55() 50:W:#eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56() 51:W:#eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)) -->_5 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)):51 -->_4 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)):51 -->_2 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)):51 -->_5 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50 -->_4 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50 -->_2 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50 -->_5 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49 -->_4 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49 -->_2 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49 -->_5 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48 -->_4 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48 -->_2 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48 -->_5 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47 -->_4 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47 -->_2 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47 -->_5 #eq#(nil(),nil()) -> c_52():46 -->_4 #eq#(nil(),nil()) -> c_52():46 -->_2 #eq#(nil(),nil()) -> c_52():46 -->_5 #eq#(nil(),leaf()) -> c_51():45 -->_4 #eq#(nil(),leaf()) -> c_51():45 -->_2 #eq#(nil(),leaf()) -> c_51():45 -->_5 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44 -->_4 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44 -->_2 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44 -->_5 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43 -->_4 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43 -->_2 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43 -->_5 #eq#(leaf(),nil()) -> c_48():42 -->_4 #eq#(leaf(),nil()) -> c_48():42 -->_2 #eq#(leaf(),nil()) -> c_48():42 -->_5 #eq#(leaf(),leaf()) -> c_47():41 -->_4 #eq#(leaf(),leaf()) -> c_47():41 -->_2 #eq#(leaf(),leaf()) -> c_47():41 -->_5 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40 -->_4 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40 -->_2 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40 -->_5 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39 -->_4 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39 -->_2 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39 -->_5 #eq#(::(@x_1,@x_2),nil()) -> c_44():38 -->_4 #eq#(::(@x_1,@x_2),nil()) -> c_44():38 -->_2 #eq#(::(@x_1,@x_2),nil()) -> c_44():38 -->_5 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37 -->_4 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37 -->_2 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37 -->_5 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):36 -->_4 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):36 -->_2 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):36 -->_5 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35 -->_4 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35 -->_2 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35 -->_5 #eq#(#s(@x),#0()) -> c_40():34 -->_4 #eq#(#s(@x),#0()) -> c_40():34 -->_2 #eq#(#s(@x),#0()) -> c_40():34 -->_5 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33 -->_4 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33 -->_2 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33 -->_5 #eq#(#pos(@x),#neg(@y)) -> c_38():32 -->_4 #eq#(#pos(@x),#neg(@y)) -> c_38():32 -->_2 #eq#(#pos(@x),#neg(@y)) -> c_38():32 -->_5 #eq#(#pos(@x),#0()) -> c_37():31 -->_4 #eq#(#pos(@x),#0()) -> c_37():31 -->_2 #eq#(#pos(@x),#0()) -> c_37():31 -->_5 #eq#(#neg(@x),#pos(@y)) -> c_36():30 -->_4 #eq#(#neg(@x),#pos(@y)) -> c_36():30 -->_2 #eq#(#neg(@x),#pos(@y)) -> c_36():30 -->_5 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29 -->_4 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29 -->_2 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29 -->_5 #eq#(#neg(@x),#0()) -> c_34():28 -->_4 #eq#(#neg(@x),#0()) -> c_34():28 -->_2 #eq#(#neg(@x),#0()) -> c_34():28 -->_5 #eq#(#0(),#s(@y)) -> c_33():27 -->_4 #eq#(#0(),#s(@y)) -> c_33():27 -->_2 #eq#(#0(),#s(@y)) -> c_33():27 -->_5 #eq#(#0(),#pos(@y)) -> c_32():26 -->_4 #eq#(#0(),#pos(@y)) -> c_32():26 -->_2 #eq#(#0(),#pos(@y)) -> c_32():26 -->_5 #eq#(#0(),#neg(@y)) -> c_31():25 -->_4 #eq#(#0(),#neg(@y)) -> c_31():25 -->_2 #eq#(#0(),#neg(@y)) -> c_31():25 -->_5 #eq#(#0(),#0()) -> c_30():24 -->_4 #eq#(#0(),#0()) -> c_30():24 -->_2 #eq#(#0(),#0()) -> c_30():24 -->_3 #and#(#true(),#true()) -> c_29():23 -->_1 #and#(#true(),#true()) -> c_29():23 -->_3 #and#(#true(),#false()) -> c_28():22 -->_1 #and#(#true(),#false()) -> c_28():22 -->_3 #and#(#false(),#true()) -> c_27():21 -->_1 #and#(#false(),#true()) -> c_27():21 -->_3 #and#(#false(),#false()) -> c_26():20 -->_1 #and#(#false(),#false()) -> c_26():20 52:W:#equal#(@x,@y) -> c_1(#eq#(@x,@y)) -->_1 #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)):51 -->_1 #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56():50 -->_1 #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55():49 -->_1 #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54():48 -->_1 #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53():47 -->_1 #eq#(nil(),nil()) -> c_52():46 -->_1 #eq#(nil(),leaf()) -> c_51():45 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_50():44 -->_1 #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49():43 -->_1 #eq#(leaf(),nil()) -> c_48():42 -->_1 #eq#(leaf(),leaf()) -> c_47():41 -->_1 #eq#(leaf(),::(@y_1,@y_2)) -> c_46():40 -->_1 #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45():39 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_44():38 -->_1 #eq#(::(@x_1,@x_2),leaf()) -> c_43():37 -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):36 -->_1 #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)):35 -->_1 #eq#(#s(@x),#0()) -> c_40():34 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)):33 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_38():32 -->_1 #eq#(#pos(@x),#0()) -> c_37():31 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_36():30 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)):29 -->_1 #eq#(#neg(@x),#0()) -> c_34():28 -->_1 #eq#(#0(),#s(@y)) -> c_33():27 -->_1 #eq#(#0(),#pos(@y)) -> c_32():26 -->_1 #eq#(#0(),#neg(@y)) -> c_31():25 -->_1 #eq#(#0(),#0()) -> c_30():24 53:W:appendreverse#1#(nil(),@sofar) -> c_4() 54:W:bfs#2#(nil(),@x) -> c_9() 55:W:bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13() 56:W:dfs#1#(nil(),@x) -> c_18() 57:W:dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 56: dfs#1#(nil(),@x) -> c_18() 57: dfs#3#(#true(),@t,@t1,@t2,@ts,@x) -> c_22() 55: bfs#4#(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_13() 52: #equal#(@x,@y) -> c_1(#eq#(@x,@y)) 51: #eq#(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> c_57(#and#(#eq(@x_1,@y_1) ,#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) ,#eq#(@x_1,@y_1) ,#and#(#eq(@x_2,@y_2),#eq(@x_3,@y_3)) ,#eq#(@x_2,@y_2) ,#eq#(@x_3,@y_3)) 36: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_42(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 35: #eq#(#s(@x),#s(@y)) -> c_41(#eq#(@x,@y)) 33: #eq#(#pos(@x),#pos(@y)) -> c_39(#eq#(@x,@y)) 29: #eq#(#neg(@x),#neg(@y)) -> c_35(#eq#(@x,@y)) 20: #and#(#false(),#false()) -> c_26() 21: #and#(#false(),#true()) -> c_27() 22: #and#(#true(),#false()) -> c_28() 23: #and#(#true(),#true()) -> c_29() 24: #eq#(#0(),#0()) -> c_30() 25: #eq#(#0(),#neg(@y)) -> c_31() 26: #eq#(#0(),#pos(@y)) -> c_32() 27: #eq#(#0(),#s(@y)) -> c_33() 28: #eq#(#neg(@x),#0()) -> c_34() 30: #eq#(#neg(@x),#pos(@y)) -> c_36() 31: #eq#(#pos(@x),#0()) -> c_37() 32: #eq#(#pos(@x),#neg(@y)) -> c_38() 34: #eq#(#s(@x),#0()) -> c_40() 37: #eq#(::(@x_1,@x_2),leaf()) -> c_43() 38: #eq#(::(@x_1,@x_2),nil()) -> c_44() 39: #eq#(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> c_45() 40: #eq#(leaf(),::(@y_1,@y_2)) -> c_46() 41: #eq#(leaf(),leaf()) -> c_47() 42: #eq#(leaf(),nil()) -> c_48() 43: #eq#(leaf(),node(@y_1,@y_2,@y_3)) -> c_49() 44: #eq#(nil(),::(@y_1,@y_2)) -> c_50() 45: #eq#(nil(),leaf()) -> c_51() 46: #eq#(nil(),nil()) -> c_52() 47: #eq#(nil(),node(@y_1,@y_2,@y_3)) -> c_53() 48: #eq#(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> c_54() 49: #eq#(node(@x_1,@x_2,@x_3),leaf()) -> c_55() 50: #eq#(node(@x_1,@x_2,@x_3),nil()) -> c_56() 54: bfs#2#(nil(),@x) -> c_9() 53: appendreverse#1#(nil(),@sofar) -> c_4() * Step 6: SimplifyRHS WORST_CASE(?,O(n^3)) + Considered Problem: - Strict DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) ,#equal#(@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x)) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/2,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/2,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))):2 2:S:appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1 3:S:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):5 -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):4 4:S:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y) ,#equal#(@x,@y)):8 -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):7 5:S:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))):6 6:S:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) -->_2 reverse#(@xs) -> c_25(appendreverse#(@xs,nil())):19 -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 7:S:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 8:S:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y) ,#equal#(@x,@y)) -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts ,::(@t2,::(@t1,@futurequeue)) ,@x)):9 9:S:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 10:S:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17 -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):11 11:S:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17 12:S:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):13 13:S:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x) ,#equal#(@a,@x)):15 -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):14 14:S:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12 15:S:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x),#equal#(@a,@x)) -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):16 16:S:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12 17:S:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 18:S:dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12 19:S:reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) * Step 7: RemoveHeads WORST_CASE(?,O(n^3)) + Considered Problem: - Strict DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x)) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: RemoveHeads + Details: Consider the dependency graph 1:S:appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))):2 2:S:appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1 3:S:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):5 -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):4 4:S:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)):8 -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):7 5:S:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))):6 6:S:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) -->_2 reverse#(@xs) -> c_25(appendreverse#(@xs,nil())):19 -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 7:S:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 8:S:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts ,::(@t2,::(@t1,@futurequeue)) ,@x)):9 9:S:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 10:S:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17 -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):11 11:S:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17 12:S:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):13 13:S:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)):15 -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):14 14:S:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12 15:S:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):16 16:S:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12 17:S:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 18:S:dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12 19:S:reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1 Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts). [(18,dodfs#(@t,@x) -> c_24(dfs#(::(@t,nil()),@x)))] * Step 8: Decompose WORST_CASE(?,O(n^3)) + Considered Problem: - Strict DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + 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: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) - Weak DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2 ,appendreverse#/2,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2 ,dfs#1#/2,dfs#2#/4,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2 ,leaf/0,nil/0,node/3,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0 ,c_14/2,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0 ,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0 ,c_44/0,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} Problem (S) - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2 ,appendreverse#/2,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2 ,dfs#1#/2,dfs#2#/4,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2 ,leaf/0,nil/0,node/3,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0 ,c_14/2,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0 ,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0 ,c_44/0,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} ** Step 8.a:1: RemoveWeakSuffixes WORST_CASE(?,O(n^3)) + Considered Problem: - Strict DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) - Weak DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))):2 2:S:appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1 3:W:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):5 -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):4 4:W:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)):8 -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):7 5:W:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))):6 6:W:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 -->_2 reverse#(@xs) -> c_25(appendreverse#(@xs,nil())):19 7:W:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 8:W:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts ,::(@t2,::(@t1,@futurequeue)) ,@x)):9 9:W:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 10:W:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17 -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):11 11:W:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):17 12:W:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):13 13:W:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)):15 -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):14 14:W:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12 15:W:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):16 16:W:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):12 17:W:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):3 19:W:reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 12: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) 16: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) 15: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) 13: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) 14: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) ** Step 8.a:2: DecomposeDG WORST_CASE(?,O(n^3)) + Considered Problem: - Strict DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) - Weak DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + 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 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) and a lower component appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) Further, following extension rules are added to the lower component. bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x) bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x) bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x) bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x) bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x) bfs2#(@t,@x) -> dobfs#(@t,@x) bfs2#1#(@t',@x) -> dobfs#(@t',@x) dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x) *** Step 8.a:2.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) - Weak DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) Consider the set of all dependency pairs 1: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) 2: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) 3: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) 4: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) 5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) 6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) 7: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) 8: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) 9: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) 10: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) Processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2)) SPACE(?,?)on application of the dependency pairs {1} These cover all (indirect) predecessors of dependency pairs {1,8,9,10} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. **** Step 8.a:2.a:1.a:1: NaturalMI WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) - Weak DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 2 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_5) = {1}, uargs(c_6) = {1}, uargs(c_7) = {1}, uargs(c_8) = {1}, uargs(c_10) = {1}, uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_14) = {1,2}, uargs(c_15) = {1}, uargs(c_23) = {1} Following symbols are considered usable: {#and,#eq,#equal,appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq# ,#equal#,appendreverse#,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2# ,dfs#3#,dobfs#,dodfs#,reverse#} TcT has computed the following interpretation: p(#0) = [0] [0] [0] p(#and) = [0] [0] [1] p(#eq) = [0] [0] [1] p(#equal) = [0 1 1] [0 0 0] [0] [1 1 0] x1 + [0 1 0] x2 + [0] [0 0 0] [0 0 0] [1] p(#false) = [0] [0] [1] p(#neg) = [0] [0] [0] p(#pos) = [0] [0] [0] p(#s) = [0] [0] [0] p(#true) = [0] [0] [0] p(::) = [0 0 0] [0 0 0] [1] [0 1 0] x1 + [0 1 0] x2 + [1] [0 0 1] [0 0 1] [0] p(appendreverse) = [0 1 0] [1 0 0] [0] [0 1 0] x1 + [0 1 0] x2 + [0] [0 0 1] [0 0 1] [0] p(appendreverse#1) = [0 1 0] [1 0 0] [0] [0 1 0] x1 + [0 1 0] x2 + [0] [0 0 1] [0 0 1] [0] p(bfs) = [0 1 0] [0 1 0] [0] [0 1 0] x1 + [0 1 0] x2 + [0] [0 1 0] [0 1 0] [0] p(bfs#1) = [0 1 0] [0 1 0] [0] [0 1 0] x1 + [0 1 0] x2 + [0] [0 1 0] [0 1 0] [0] p(bfs#2) = [0 1 0] [0] [0 1 0] x1 + [0] [0 1 0] [0] p(bfs#3) = [0 1 0] [0 1 0] [0 1 0] [1] [0 1 0] x1 + [0 1 0] x2 + [0 1 0] x3 + [1] [0 1 0] [0 1 0] [0 1 0] [1] p(bfs#4) = [0 0 1] [0 1 0] [0 1 1] [0 1 0] [0 1 0] [0 0 0] [1] [0 0 1] x1 + [0 1 0] x2 + [0 1 1] x3 + [0 1 1] x4 + [0 1 0] x5 + [0 1 0] x7 + [1] [0 0 1] [0 1 0] [0 1 1] [0 1 1] [0 1 0] [0 1 0] [1] p(bfs2) = [0] [0] [0] p(bfs2#1) = [0] [0] [0] p(dfs) = [0] [0] [0] p(dfs#1) = [0] [0] [0] p(dfs#2) = [0] [0] [0] p(dfs#3) = [0] [0] [0] p(dobfs) = [0 1 0] [0 0 0] [1] [1 1 0] x1 + [0 0 0] x2 + [1] [1 1 0] [1 0 0] [1] p(dodfs) = [0] [0] [0] p(leaf) = [0] [0] [0] p(nil) = [0] [0] [0] p(node) = [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] x1 + [0 1 1] x2 + [0 1 1] x3 + [1] [0 0 0] [0 0 1] [0 0 1] [1] p(reverse) = [0 1 0] [1] [0 1 0] x1 + [0] [0 0 1] [0] p(#and#) = [0] [0] [0] p(#eq#) = [0] [0] [0] p(#equal#) = [0] [0] [0] p(appendreverse#) = [0] [0] [0] p(appendreverse#1#) = [0] [0] [0] p(bfs#) = [0 0 1] [1 0 1] [0 0 0] [0] [0 0 0] x1 + [0 0 0] x2 + [1 0 0] x3 + [1] [0 1 0] [0 0 0] [1 1 0] [0] p(bfs#1#) = [0 0 1] [1 0 1] [0 0 0] [0] [0 1 1] x1 + [1 1 1] x2 + [0 1 1] x3 + [0] [0 1 0] [0 0 0] [0 0 0] [0] p(bfs#2#) = [1 0 1] [0 0 0] [0] [0 0 0] x1 + [0 0 0] x2 + [1] [0 0 1] [0 1 0] [0] p(bfs#3#) = [0 0 1] [1 0 1] [0 0 1] [0 0 0] [0] [0 0 0] x1 + [0 1 0] x2 + [0 0 0] x3 + [0 1 1] x4 + [1] [0 0 0] [1 1 1] [1 0 1] [0 1 0] [1] p(bfs#4#) = [0 0 1] [0 0 1] [0 0 1] [0 0 1] [0 0 0] [0 0 0] [1] [1 0 1] x2 + [0 0 1] x3 + [1 1 1] x4 + [0 0 1] x5 + [0 0 0] x6 + [1 1 1] x7 + [1] [0 0 0] [0 0 0] [0 0 0] [1 0 0] [0 1 0] [0 0 0] [1] p(bfs2#) = [1 1 1] [1 1 1] [1] [1 0 1] x1 + [1 1 1] x2 + [1] [1 1 1] [1 1 1] [1] p(bfs2#1#) = [0 0 1] [0 1 0] [0] [0 0 1] x1 + [0 0 0] x2 + [1] [0 1 1] [0 0 0] [0] p(dfs#) = [0] [0] [0] p(dfs#1#) = [0] [0] [0] p(dfs#2#) = [0] [0] [0] p(dfs#3#) = [0] [0] [0] p(dobfs#) = [0 0 1] [0 0 0] [0] [0 0 0] x1 + [1 1 1] x2 + [1] [0 0 0] [0 1 0] [0] p(dodfs#) = [0] [0] [0] p(reverse#) = [0 1 0] [1] [0 0 0] x1 + [1] [0 0 0] [0] p(c_1) = [0] [0] [0] p(c_2) = [0] [0] [0] p(c_3) = [0] [0] [0] p(c_4) = [0] [0] [0] p(c_5) = [1 0 0] [0] [0 0 0] x1 + [0] [0 0 1] [0] p(c_6) = [1 0 0] [0] [0 1 0] x1 + [0] [0 0 0] [0] p(c_7) = [1 0 0] [0] [0 0 1] x1 + [0] [0 0 0] [0] p(c_8) = [1 0 0] [0] [0 0 0] x1 + [0] [0 0 0] [0] p(c_9) = [0] [0] [0] p(c_10) = [1 0 0] [0] [0 0 0] x1 + [0] [1 0 0] [0] p(c_11) = [1 0 0] [0] [0 0 0] x1 + [0] [0 0 1] [0] p(c_12) = [1 0 0] [0] [1 0 0] x1 + [0] [0 0 0] [1] p(c_13) = [0] [0] [0] p(c_14) = [1 0 0] [1 0 0] [0] [0 0 0] x1 + [0 1 0] x2 + [0] [1 0 0] [0 0 0] [0] p(c_15) = [1 0 1] [0] [1 0 0] x1 + [1] [0 0 0] [0] p(c_16) = [0] [0] [0] p(c_17) = [0] [0] [0] p(c_18) = [0] [0] [0] p(c_19) = [0] [0] [0] p(c_20) = [0] [0] [0] p(c_21) = [0] [0] [0] p(c_22) = [0] [0] [0] p(c_23) = [1 0 0] [0] [0 1 0] x1 + [0] [0 0 0] [0] p(c_24) = [0] [0] [0] p(c_25) = [0] [0] [0] p(c_26) = [0] [0] [0] p(c_27) = [0] [0] [0] p(c_28) = [0] [0] [0] p(c_29) = [0] [0] [0] p(c_30) = [0] [0] [0] p(c_31) = [0] [0] [0] p(c_32) = [0] [0] [0] p(c_33) = [0] [0] [0] p(c_34) = [0] [0] [0] p(c_35) = [0] [0] [0] p(c_36) = [0] [0] [0] p(c_37) = [0] [0] [0] p(c_38) = [0] [0] [0] p(c_39) = [0] [0] [0] p(c_40) = [0] [0] [0] p(c_41) = [0] [0] [0] p(c_42) = [0] [0] [0] p(c_43) = [0] [0] [0] p(c_44) = [0] [0] [0] p(c_45) = [0] [0] [0] p(c_46) = [0] [0] [0] p(c_47) = [0] [0] [0] p(c_48) = [0] [0] [0] p(c_49) = [0] [0] [0] p(c_50) = [0] [0] [0] p(c_51) = [0] [0] [0] p(c_52) = [0] [0] [0] p(c_53) = [0] [0] [0] p(c_54) = [0] [0] [0] p(c_55) = [0] [0] [0] p(c_56) = [0] [0] [0] p(c_57) = [0] [0] [0] Following rules are strictly oriented: bfs#2#(::(@t,@ts),@x) = [0 0 1] [0 0 1] [0 0 0] [1] [0 0 0] @t + [0 0 0] @ts + [0 0 0] @x + [1] [0 0 1] [0 0 1] [0 1 0] [0] > [0 0 1] [0 0 1] [0] [0 0 0] @t + [0 0 0] @ts + [0] [0 0 0] [0 0 0] [0] = c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) Following rules are (at-least) weakly oriented: bfs#(@queue,@futurequeue,@x) = [1 0 1] [0 0 1] [0 0 0] [0] [0 0 0] @futurequeue + [0 0 0] @queue + [1 0 0] @x + [1] [0 0 0] [0 1 0] [1 1 0] [0] >= [1 0 1] [0 0 1] [0] [0 0 0] @futurequeue + [0 0 0] @queue + [0] [0 0 0] [0 1 0] [0] = c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) = [1 0 1] [0 0 1] [0 0 1] [0 0 0] [0] [1 1 1] @futurequeue + [0 1 1] @t + [0 1 1] @ts + [0 1 1] @x + [1] [0 0 0] [0 1 0] [0 1 0] [0 0 0] [1] >= [1 0 1] [0 0 1] [0 0 1] [0 0 0] [0] [0 1 0] @futurequeue + [0 0 0] @t + [0 0 0] @ts + [0 1 1] @x + [1] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [0] = c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) = [1 0 1] [0 0 0] [0] [1 1 1] @futurequeue + [0 1 1] @x + [0] [0 0 0] [0 0 0] [0] >= [1 0 1] [0 0 0] [0] [0 0 1] @futurequeue + [0 1 0] @x + [0] [0 0 0] [0 0 0] [0] = c_7(bfs#2#(@futurequeue,@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) = [1 0 1] [0 0 1] [0 0 0] [0] [0 1 0] @futurequeue + [0 0 0] @ts + [0 1 1] @x + [1] [1 1 1] [1 0 1] [0 1 0] [1] >= [1 0 1] [0 0 1] [0] [0 0 0] @futurequeue + [0 0 0] @ts + [0] [1 0 1] [0 0 1] [0] = c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [1 0 1] [0 0 1] [0 0 1] [0 0 1] [0 0 0] [1] [0 1 0] @futurequeue + [0 0 0] @t1 + [0 0 0] @t2 + [0 0 0] @ts + [0 1 1] @x + [1] [1 1 1] [0 0 0] [0 0 0] [1 0 1] [0 1 0] [1] >= [0 0 1] [0 0 1] [0 0 1] [0 0 1] [0 0 0] [1] [0 0 0] @futurequeue + [0 0 0] @t1 + [0 0 0] @t2 + [0 0 0] @ts + [0 0 0] @x + [0] [0 0 0] [0 0 0] [0 0 0] [1 0 0] [0 1 0] [1] = c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [0 0 1] [0 0 1] [0 0 1] [0 0 1] [0 0 0] [0 0 0] [1] [1 0 1] @futurequeue + [0 0 1] @t1 + [1 1 1] @t2 + [0 0 1] @ts + [0 0 0] @x + [1 1 1] @y + [1] [0 0 0] [0 0 0] [0 0 0] [1 0 0] [0 1 0] [0 0 0] [1] >= [0 0 1] [0 0 1] [0 0 1] [0 0 1] [1] [0 0 1] @futurequeue + [0 0 1] @t1 + [0 0 1] @t2 + [0 0 1] @ts + [1] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1] = c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) = [1 1 1] [1 1 1] [1] [1 0 1] @t + [1 1 1] @x + [1] [1 1 1] [1 1 1] [1] >= [1 1 1] [1 1 0] [1] [0 0 0] @t + [1 1 1] @x + [1] [1 1 0] [1 1 0] [1] = c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) = [0 0 1] [0 1 0] [0] [0 0 1] @t' + [0 0 0] @x + [1] [0 1 1] [0 0 0] [0] >= [0 0 1] [0 1 0] [0] [0 0 1] @t' + [0 0 0] @x + [1] [0 0 0] [0 0 0] [0] = c_15(dobfs#(@t',@x)) dobfs#(@t,@x) = [0 0 1] [0 0 0] [0] [0 0 0] @t + [1 1 1] @x + [1] [0 0 0] [0 1 0] [0] >= [0 0 1] [0 0 0] [0] [0 0 0] @t + [1 0 0] @x + [1] [0 0 0] [0 0 0] [0] = c_23(bfs#(::(@t,nil()),nil(),@x)) #and(#false(),#false()) = [0] [0] [1] >= [0] [0] [1] = #false() #and(#false(),#true()) = [0] [0] [1] >= [0] [0] [1] = #false() #and(#true(),#false()) = [0] [0] [1] >= [0] [0] [1] = #false() #and(#true(),#true()) = [0] [0] [1] >= [0] [0] [0] = #true() #eq(#0(),#0()) = [0] [0] [1] >= [0] [0] [0] = #true() #eq(#0(),#neg(@y)) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(#0(),#pos(@y)) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(#0(),#s(@y)) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(#neg(@x),#0()) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(#neg(@x),#neg(@y)) = [0] [0] [1] >= [0] [0] [1] = #eq(@x,@y) #eq(#neg(@x),#pos(@y)) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(#pos(@x),#0()) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(#pos(@x),#neg(@y)) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(#pos(@x),#pos(@y)) = [0] [0] [1] >= [0] [0] [1] = #eq(@x,@y) #eq(#s(@x),#0()) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(#s(@x),#s(@y)) = [0] [0] [1] >= [0] [0] [1] = #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [0] [0] [1] >= [0] [0] [1] = #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(::(@x_1,@x_2),nil()) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(leaf(),::(@y_1,@y_2)) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(leaf(),leaf()) = [0] [0] [1] >= [0] [0] [0] = #true() #eq(leaf(),nil()) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(nil(),::(@y_1,@y_2)) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(nil(),leaf()) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(nil(),nil()) = [0] [0] [1] >= [0] [0] [0] = #true() #eq(nil(),node(@y_1,@y_2,@y_3)) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(node(@x_1,@x_2,@x_3),leaf()) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(node(@x_1,@x_2,@x_3),nil()) = [0] [0] [1] >= [0] [0] [1] = #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) = [0] [0] [1] >= [0] [0] [1] = #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) = [0 1 1] [0 0 0] [0] [1 1 0] @x + [0 1 0] @y + [0] [0 0 0] [0 0 0] [1] >= [0] [0] [1] = #eq(@x,@y) appendreverse(@toreverse,@sofar) = [1 0 0] [0 1 0] [0] [0 1 0] @sofar + [0 1 0] @toreverse + [0] [0 0 1] [0 0 1] [0] >= [1 0 0] [0 1 0] [0] [0 1 0] @sofar + [0 1 0] @toreverse + [0] [0 0 1] [0 0 1] [0] = appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) = [0 1 0] [0 1 0] [1 0 0] [1] [0 1 0] @a + [0 1 0] @as + [0 1 0] @sofar + [1] [0 0 1] [0 0 1] [0 0 1] [0] >= [0 0 0] [0 1 0] [0 0 0] [1] [0 1 0] @a + [0 1 0] @as + [0 1 0] @sofar + [1] [0 0 1] [0 0 1] [0 0 1] [0] = appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) = [1 0 0] [0] [0 1 0] @sofar + [0] [0 0 1] [0] >= [1 0 0] [0] [0 1 0] @sofar + [0] [0 0 1] [0] = @sofar bfs(@queue,@futurequeue,@x) = [0 1 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 1 0] @queue + [0] [0 1 0] [0 1 0] [0] >= [0 1 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 1 0] @queue + [0] [0 1 0] [0 1 0] [0] = bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) = [0 1 0] [0 1 0] [0 1 0] [1] [0 1 0] @futurequeue + [0 1 0] @t + [0 1 0] @ts + [1] [0 1 0] [0 1 0] [0 1 0] [1] >= [0 1 0] [0 1 0] [0 1 0] [1] [0 1 0] @futurequeue + [0 1 0] @t + [0 1 0] @ts + [1] [0 1 0] [0 1 0] [0 1 0] [1] = bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) = [0 1 0] [0] [0 1 0] @futurequeue + [0] [0 1 0] [0] >= [0 1 0] [0] [0 1 0] @futurequeue + [0] [0 1 0] [0] = bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) = [0 1 0] [0 1 0] [1] [0 1 0] @t + [0 1 0] @ts + [1] [0 1 0] [0 1 0] [1] >= [0 1 0] [0 1 0] [1] [0 1 0] @t + [0 1 0] @ts + [1] [0 1 0] [0 1 0] [1] = bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) = [0] [0] [0] >= [0] [0] [0] = leaf() bfs#3(leaf(),@futurequeue,@ts,@x) = [0 1 0] [0 1 0] [1] [0 1 0] @futurequeue + [0 1 0] @ts + [1] [0 1 0] [0 1 0] [1] >= [0 1 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 1 0] @ts + [0] [0 1 0] [0 1 0] [0] = bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [0 1 0] [0 1 1] [0 1 1] [0 1 0] [0 1 0] [2] [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 1 0] @y + [2] [0 1 0] [0 1 1] [0 1 1] [0 1 0] [0 1 0] [2] >= [0 1 0] [0 1 1] [0 1 0] [0 1 0] [0 0 0] [2] [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 1 0] @y + [2] [0 1 0] [0 1 1] [0 1 1] [0 1 0] [0 1 0] [2] = bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [0 1 0] [0 1 1] [0 1 0] [0 1 0] [0 0 0] [2] [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 1 0] @y + [2] [0 1 0] [0 1 1] [0 1 1] [0 1 0] [0 1 0] [2] >= [0 1 0] [0 1 0] [0 1 0] [0 1 0] [2] [0 1 0] @futurequeue + [0 1 0] @t1 + [0 1 0] @t2 + [0 1 0] @ts + [2] [0 1 0] [0 1 0] [0 1 0] [0 1 0] [2] = bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) = [0 1 0] [0 1 1] [0 1 0] [0 1 0] [0 0 0] [1] [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 1 0] @y + [1] [0 1 0] [0 1 1] [0 1 1] [0 1 0] [0 1 0] [1] >= [0 0 0] [0 1 0] [0 0 0] [0] [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @y + [1] [0 0 1] [0 0 1] [0 0 0] [1] = node(@y,@t1,@t2) dobfs(@t,@x) = [0 1 0] [0 0 0] [1] [1 1 0] @t + [0 0 0] @x + [1] [1 1 0] [1 0 0] [1] >= [0 1 0] [1] [0 1 0] @t + [1] [0 1 0] [1] = bfs(::(@t,nil()),nil(),@x) reverse(@xs) = [0 1 0] [1] [0 1 0] @xs + [0] [0 0 1] [0] >= [0 1 0] [0] [0 1 0] @xs + [0] [0 0 1] [0] = appendreverse(@xs,nil()) **** Step 8.a:2.a:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () **** Step 8.a:2.a:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):3 -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):2 2:W:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)):6 -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):5 3:W:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))):4 4:W:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 5:W:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 6:W:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts ,::(@t2,::(@t1,@futurequeue)) ,@x)):7 7:W:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 8:W:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):10 -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):9 9:W:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):10 10:W:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 8: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) 9: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) 10: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) 1: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) 7: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) 6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) 2: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) 5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) 4: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) 3: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) **** Step 8.a:2.a:1.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). *** Step 8.a:2.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) - Weak DPs: bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x) bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x) bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x) bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x) bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x) bfs2#(@t,@x) -> dobfs#(@t,@x) bfs2#1#(@t',@x) -> dobfs#(@t',@x) dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 2: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) Consider the set of all dependency pairs 1: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) 2: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) 3: bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x) 4: bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x) 5: bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x) 6: bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x) 7: bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts)) 8: bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x) 9: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) 10: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x) 11: bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x) 12: bfs2#(@t,@x) -> dobfs#(@t,@x) 13: bfs2#1#(@t',@x) -> dobfs#(@t',@x) 14: dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x) 15: reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) Processor NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) SPACE(?,?)on application of the dependency pairs {2} These cover all (indirect) predecessors of dependency pairs {2,11,12,13,14} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. **** Step 8.a:2.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) - Weak DPs: bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x) bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x) bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x) bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x) bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x) bfs2#(@t,@x) -> dobfs#(@t,@x) bfs2#1#(@t',@x) -> dobfs#(@t',@x) dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: NaturalMI {miDimension = 2, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 1 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_2) = {1}, uargs(c_3) = {1}, uargs(c_25) = {1} Following symbols are considered usable: {#and,#eq,#equal,appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq# ,#equal#,appendreverse#,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2# ,dfs#3#,dobfs#,dodfs#,reverse#} TcT has computed the following interpretation: p(#0) = [0] [0] p(#and) = [1] [0] p(#eq) = [1] [0] p(#equal) = [0 0] x1 + [1] [1 1] [0] p(#false) = [1] [0] p(#neg) = [0] [0] p(#pos) = [0] [0] p(#s) = [0] [0] p(#true) = [1] [0] p(::) = [1 1] x1 + [1 1] x2 + [0] [0 0] [0 0] [1] p(appendreverse) = [1 1] x1 + [1 1] x2 + [0] [1 1] [0 1] [1] p(appendreverse#1) = [1 1] x1 + [1 1] x2 + [0] [1 1] [0 1] [1] p(bfs) = [1 0] x1 + [1 1] x2 + [0] [0 0] [0 0] [1] p(bfs#1) = [1 0] x1 + [1 1] x2 + [0] [0 0] [0 0] [1] p(bfs#2) = [1 1] x1 + [0] [0 0] [1] p(bfs#3) = [1 1] x1 + [1 1] x2 + [1 1] x3 + [0] [0 0] [0 0] [0 0] [1] p(bfs#4) = [1 0] x1 + [1 1] x2 + [1 1] x3 + [1 1] x4 + [1 0] x5 + [1] [0 0] [0 0] [0 0] [0 0] [0 0] [1] p(bfs2) = [0] [0] p(bfs2#1) = [0] [0] p(dfs) = [0] [0] p(dfs#1) = [0] [0] p(dfs#2) = [0] [0] p(dfs#3) = [0] [0] p(dobfs) = [1 1] x1 + [1 0] x2 + [0] [0 0] [0 0] [1] p(dodfs) = [0] [0] p(leaf) = [0] [0] p(nil) = [0] [0] p(node) = [1 1] x2 + [1 1] x3 + [1] [0 0] [0 0] [1] p(reverse) = [1 1] x1 + [0] [1 1] [1] p(#and#) = [0] [0] p(#eq#) = [0] [0] p(#equal#) = [0] [0] p(appendreverse#) = [1 1] x1 + [0 0] x2 + [0] [0 1] [0 1] [1] p(appendreverse#1#) = [1 1] x1 + [0 0] x2 + [0] [0 0] [0 1] [0] p(bfs#) = [1 0] x1 + [1 1] x2 + [0] [0 0] [0 0] [0] p(bfs#1#) = [1 0] x1 + [1 1] x2 + [0] [0 0] [0 0] [0] p(bfs#2#) = [1 1] x1 + [0] [0 0] [0] p(bfs#3#) = [1 1] x1 + [1 1] x2 + [1 1] x3 + [0] [0 0] [0 0] [0 0] [0] p(bfs#4#) = [1 0] x1 + [1 1] x2 + [1 1] x3 + [1 1] x4 + [1 0] x5 + [1] [0 0] [0 0] [0 0] [0 0] [0 0] [0] p(bfs2#) = [1 1] x1 + [1 1] x2 + [1] [0 1] [0 1] [1] p(bfs2#1#) = [1 1] x1 + [0] [0 0] [0] p(dfs#) = [0] [0] p(dfs#1#) = [0] [0] p(dfs#2#) = [0] [0] p(dfs#3#) = [0] [0] p(dobfs#) = [1 1] x1 + [0] [0 0] [0] p(dodfs#) = [0] [0] p(reverse#) = [1 1] x1 + [0] [0 0] [0] p(c_1) = [0] [0] p(c_2) = [1 0] x1 + [0] [0 0] [1] p(c_3) = [1 0] x1 + [0] [0 0] [0] p(c_4) = [0] [0] p(c_5) = [0] [0] p(c_6) = [0] [0] p(c_7) = [0] [0] p(c_8) = [0] [0] p(c_9) = [0] [0] p(c_10) = [0] [0] p(c_11) = [0] [0] p(c_12) = [0] [0] p(c_13) = [0] [0] p(c_14) = [0] [0] p(c_15) = [0] [0] p(c_16) = [0] [0] p(c_17) = [0] [0] p(c_18) = [0] [0] p(c_19) = [0] [0] p(c_20) = [0] [0] p(c_21) = [0] [0] p(c_22) = [0] [0] p(c_23) = [0] [0] p(c_24) = [0] [0] p(c_25) = [1 0] x1 + [0] [0 0] [0] p(c_26) = [0] [0] p(c_27) = [0] [0] p(c_28) = [0] [0] p(c_29) = [0] [0] p(c_30) = [0] [0] p(c_31) = [0] [0] p(c_32) = [0] [0] p(c_33) = [0] [0] p(c_34) = [0] [0] p(c_35) = [0] [0] p(c_36) = [0] [0] p(c_37) = [0] [0] p(c_38) = [0] [0] p(c_39) = [0] [0] p(c_40) = [0] [0] p(c_41) = [0] [0] p(c_42) = [0] [0] p(c_43) = [0] [0] p(c_44) = [0] [0] p(c_45) = [0] [0] p(c_46) = [0] [0] p(c_47) = [0] [0] p(c_48) = [0] [0] p(c_49) = [0] [0] p(c_50) = [0] [0] p(c_51) = [0] [0] p(c_52) = [0] [0] p(c_53) = [0] [0] p(c_54) = [0] [0] p(c_55) = [0] [0] p(c_56) = [0] [0] p(c_57) = [0] [0] Following rules are strictly oriented: appendreverse#1#(::(@a,@as),@sofar) = [1 1] @a + [1 1] @as + [0 0] @sofar + [1] [0 0] [0 0] [0 1] [0] > [1 1] @as + [0] [0 0] [0] = c_3(appendreverse#(@as,::(@a,@sofar))) Following rules are (at-least) weakly oriented: appendreverse#(@toreverse,@sofar) = [0 0] @sofar + [1 1] @toreverse + [0] [0 1] [0 1] [1] >= [1 1] @toreverse + [0] [0 0] [1] = c_2(appendreverse#1#(@toreverse,@sofar)) bfs#(@queue,@futurequeue,@x) = [1 1] @futurequeue + [1 0] @queue + [0] [0 0] [0 0] [0] >= [1 1] @futurequeue + [1 0] @queue + [0] [0 0] [0 0] [0] = bfs#1#(@queue,@futurequeue,@x) bfs#1#(::(@t,@ts),@futurequeue,@x) = [1 1] @futurequeue + [1 1] @t + [1 1] @ts + [0] [0 0] [0 0] [0 0] [0] >= [1 1] @futurequeue + [1 1] @t + [1 1] @ts + [0] [0 0] [0 0] [0 0] [0] = bfs#3#(@t,@futurequeue,@ts,@x) bfs#1#(nil(),@futurequeue,@x) = [1 1] @futurequeue + [0] [0 0] [0] >= [1 1] @futurequeue + [0] [0 0] [0] = bfs#2#(@futurequeue,@x) bfs#2#(::(@t,@ts),@x) = [1 1] @t + [1 1] @ts + [1] [0 0] [0 0] [0] >= [1 1] @t + [1 1] @ts + [1] [0 0] [0 0] [0] = bfs#(reverse(::(@t,@ts)),nil(),@x) bfs#2#(::(@t,@ts),@x) = [1 1] @t + [1 1] @ts + [1] [0 0] [0 0] [0] >= [1 1] @t + [1 1] @ts + [1] [0 0] [0 0] [0] = reverse#(::(@t,@ts)) bfs#3#(leaf(),@futurequeue,@ts,@x) = [1 1] @futurequeue + [1 1] @ts + [0] [0 0] [0 0] [0] >= [1 1] @futurequeue + [1 0] @ts + [0] [0 0] [0 0] [0] = bfs#(@ts,@futurequeue,@x) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 1] @ts + [2] [0 0] [0 0] [0 0] [0 0] [0] >= [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 0] @ts + [2] [0 0] [0 0] [0 0] [0 0] [0] = bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 0] @ts + [2] [0 0] [0 0] [0 0] [0 0] [0] >= [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 0] @ts + [2] [0 0] [0 0] [0 0] [0 0] [0] = bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs2#(@t,@x) = [1 1] @t + [1 1] @x + [1] [0 1] [0 1] [1] >= [1 1] @t + [1 0] @x + [1] [0 0] [0 0] [0] = bfs2#1#(dobfs(@t,@x),@x) bfs2#(@t,@x) = [1 1] @t + [1 1] @x + [1] [0 1] [0 1] [1] >= [1 1] @t + [0] [0 0] [0] = dobfs#(@t,@x) bfs2#1#(@t',@x) = [1 1] @t' + [0] [0 0] [0] >= [1 1] @t' + [0] [0 0] [0] = dobfs#(@t',@x) dobfs#(@t,@x) = [1 1] @t + [0] [0 0] [0] >= [1 1] @t + [0] [0 0] [0] = bfs#(::(@t,nil()),nil(),@x) reverse#(@xs) = [1 1] @xs + [0] [0 0] [0] >= [1 1] @xs + [0] [0 0] [0] = c_25(appendreverse#(@xs,nil())) #and(#false(),#false()) = [1] [0] >= [1] [0] = #false() #and(#false(),#true()) = [1] [0] >= [1] [0] = #false() #and(#true(),#false()) = [1] [0] >= [1] [0] = #false() #and(#true(),#true()) = [1] [0] >= [1] [0] = #true() #eq(#0(),#0()) = [1] [0] >= [1] [0] = #true() #eq(#0(),#neg(@y)) = [1] [0] >= [1] [0] = #false() #eq(#0(),#pos(@y)) = [1] [0] >= [1] [0] = #false() #eq(#0(),#s(@y)) = [1] [0] >= [1] [0] = #false() #eq(#neg(@x),#0()) = [1] [0] >= [1] [0] = #false() #eq(#neg(@x),#neg(@y)) = [1] [0] >= [1] [0] = #eq(@x,@y) #eq(#neg(@x),#pos(@y)) = [1] [0] >= [1] [0] = #false() #eq(#pos(@x),#0()) = [1] [0] >= [1] [0] = #false() #eq(#pos(@x),#neg(@y)) = [1] [0] >= [1] [0] = #false() #eq(#pos(@x),#pos(@y)) = [1] [0] >= [1] [0] = #eq(@x,@y) #eq(#s(@x),#0()) = [1] [0] >= [1] [0] = #false() #eq(#s(@x),#s(@y)) = [1] [0] >= [1] [0] = #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [1] [0] >= [1] [0] = #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) = [1] [0] >= [1] [0] = #false() #eq(::(@x_1,@x_2),nil()) = [1] [0] >= [1] [0] = #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) = [1] [0] >= [1] [0] = #false() #eq(leaf(),::(@y_1,@y_2)) = [1] [0] >= [1] [0] = #false() #eq(leaf(),leaf()) = [1] [0] >= [1] [0] = #true() #eq(leaf(),nil()) = [1] [0] >= [1] [0] = #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) = [1] [0] >= [1] [0] = #false() #eq(nil(),::(@y_1,@y_2)) = [1] [0] >= [1] [0] = #false() #eq(nil(),leaf()) = [1] [0] >= [1] [0] = #false() #eq(nil(),nil()) = [1] [0] >= [1] [0] = #true() #eq(nil(),node(@y_1,@y_2,@y_3)) = [1] [0] >= [1] [0] = #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) = [1] [0] >= [1] [0] = #false() #eq(node(@x_1,@x_2,@x_3),leaf()) = [1] [0] >= [1] [0] = #false() #eq(node(@x_1,@x_2,@x_3),nil()) = [1] [0] >= [1] [0] = #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) = [1] [0] >= [1] [0] = #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) = [0 0] @x + [1] [1 1] [0] >= [1] [0] = #eq(@x,@y) appendreverse(@toreverse,@sofar) = [1 1] @sofar + [1 1] @toreverse + [0] [0 1] [1 1] [1] >= [1 1] @sofar + [1 1] @toreverse + [0] [0 1] [1 1] [1] = appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) = [1 1] @a + [1 1] @as + [1 1] @sofar + [1] [1 1] [1 1] [0 1] [2] >= [1 1] @a + [1 1] @as + [1 1] @sofar + [1] [0 0] [1 1] [0 0] [2] = appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) = [1 1] @sofar + [0] [0 1] [1] >= [1 0] @sofar + [0] [0 1] [0] = @sofar bfs(@queue,@futurequeue,@x) = [1 1] @futurequeue + [1 0] @queue + [0] [0 0] [0 0] [1] >= [1 1] @futurequeue + [1 0] @queue + [0] [0 0] [0 0] [1] = bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) = [1 1] @futurequeue + [1 1] @t + [1 1] @ts + [0] [0 0] [0 0] [0 0] [1] >= [1 1] @futurequeue + [1 1] @t + [1 1] @ts + [0] [0 0] [0 0] [0 0] [1] = bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) = [1 1] @futurequeue + [0] [0 0] [1] >= [1 1] @futurequeue + [0] [0 0] [1] = bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) = [1 1] @t + [1 1] @ts + [1] [0 0] [0 0] [1] >= [1 1] @t + [1 1] @ts + [1] [0 0] [0 0] [1] = bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) = [0] [1] >= [0] [0] = leaf() bfs#3(leaf(),@futurequeue,@ts,@x) = [1 1] @futurequeue + [1 1] @ts + [0] [0 0] [0 0] [1] >= [1 1] @futurequeue + [1 0] @ts + [0] [0 0] [0 0] [1] = bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 1] @ts + [2] [0 0] [0 0] [0 0] [0 0] [1] >= [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 0] @ts + [2] [0 0] [0 0] [0 0] [0 0] [1] = bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 0] @ts + [2] [0 0] [0 0] [0 0] [0 0] [1] >= [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 0] @ts + [2] [0 0] [0 0] [0 0] [0 0] [1] = bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1 1] @futurequeue + [1 1] @t1 + [1 1] @t2 + [1 0] @ts + [2] [0 0] [0 0] [0 0] [0 0] [1] >= [1 1] @t1 + [1 1] @t2 + [1] [0 0] [0 0] [1] = node(@y,@t1,@t2) dobfs(@t,@x) = [1 1] @t + [1 0] @x + [0] [0 0] [0 0] [1] >= [1 1] @t + [0] [0 0] [1] = bfs(::(@t,nil()),nil(),@x) reverse(@xs) = [1 1] @xs + [0] [1 1] [1] >= [1 1] @xs + [0] [1 1] [1] = appendreverse(@xs,nil()) **** Step 8.a:2.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) - Weak DPs: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x) bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x) bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x) bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x) bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x) bfs2#(@t,@x) -> dobfs#(@t,@x) bfs2#1#(@t',@x) -> dobfs#(@t',@x) dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () **** Step 8.a:2.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) - Weak DPs: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x) bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x) bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x) bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x) bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x) bfs2#(@t,@x) -> dobfs#(@t,@x) bfs2#1#(@t',@x) -> dobfs#(@t',@x) dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) Consider the set of all dependency pairs 1: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) 2: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) 3: bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x) 4: bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x) 5: bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x) 6: bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x) 7: bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts)) 8: bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x) 9: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) 10: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x) 11: bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x) 12: bfs2#(@t,@x) -> dobfs#(@t,@x) 13: bfs2#1#(@t',@x) -> dobfs#(@t',@x) 14: dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x) 15: reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) SPACE(?,?)on application of the dependency pairs {1} These cover all (indirect) predecessors of dependency pairs {1,2,11,12,13,14} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. ***** Step 8.a:2.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) - Weak DPs: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x) bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x) bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x) bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x) bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x) bfs2#(@t,@x) -> dobfs#(@t,@x) bfs2#1#(@t',@x) -> dobfs#(@t',@x) dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_2) = {1}, uargs(c_3) = {1}, uargs(c_25) = {1} Following symbols are considered usable: {appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#,#equal#,appendreverse# ,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} TcT has computed the following interpretation: p(#0) = [0] p(#and) = [2] x1 + [1] x2 + [1] p(#eq) = [1] x2 + [0] p(#equal) = [0] p(#false) = [0] p(#neg) = [1] x1 + [1] p(#pos) = [1] p(#s) = [1] x1 + [1] p(#true) = [4] p(::) = [1] x1 + [1] x2 + [1] p(appendreverse) = [1] x1 + [1] x2 + [0] p(appendreverse#1) = [1] x1 + [1] x2 + [0] p(bfs) = [1] x1 + [1] x2 + [0] p(bfs#1) = [1] x1 + [1] x2 + [0] p(bfs#2) = [1] x1 + [0] p(bfs#3) = [1] x1 + [1] x2 + [1] x3 + [1] p(bfs#4) = [1] x2 + [1] x3 + [1] x4 + [1] x5 + [2] p(bfs2) = [2] x2 + [1] p(bfs2#1) = [1] x1 + [1] p(dfs) = [2] x2 + [1] p(dfs#1) = [2] x1 + [2] x2 + [4] p(dfs#2) = [0] p(dfs#3) = [4] x2 + [1] x3 + [1] x5 + [2] p(dobfs) = [1] x1 + [1] p(dodfs) = [4] x2 + [0] p(leaf) = [0] p(nil) = [0] p(node) = [1] x2 + [1] x3 + [2] p(reverse) = [1] x1 + [0] p(#and#) = [1] x1 + [1] x2 + [1] p(#eq#) = [2] x2 + [1] p(#equal#) = [0] p(appendreverse#) = [1] x1 + [1] p(appendreverse#1#) = [1] x1 + [0] p(bfs#) = [1] x1 + [1] x2 + [1] p(bfs#1#) = [1] x1 + [1] x2 + [1] p(bfs#2#) = [1] x1 + [1] p(bfs#3#) = [1] x1 + [1] x2 + [1] x3 + [1] p(bfs#4#) = [1] x2 + [1] x3 + [1] x4 + [1] x5 + [3] p(bfs2#) = [1] x1 + [5] x2 + [3] p(bfs2#1#) = [1] x1 + [4] x2 + [2] p(dfs#) = [4] x2 + [1] p(dfs#1#) = [0] p(dfs#2#) = [1] x3 + [4] p(dfs#3#) = [1] x1 + [4] p(dobfs#) = [1] x1 + [1] x2 + [2] p(dodfs#) = [2] p(reverse#) = [1] x1 + [1] p(c_1) = [2] x1 + [0] p(c_2) = [1] x1 + [0] p(c_3) = [1] x1 + [0] p(c_4) = [1] p(c_5) = [1] p(c_6) = [1] p(c_7) = [1] p(c_8) = [0] p(c_9) = [0] p(c_10) = [1] x1 + [2] p(c_11) = [1] x1 + [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [1] x1 + [1] p(c_15) = [2] x1 + [0] p(c_16) = [1] p(c_17) = [0] p(c_18) = [0] p(c_19) = [0] p(c_20) = [0] p(c_21) = [1] p(c_22) = [1] p(c_23) = [1] x1 + [0] p(c_24) = [1] p(c_25) = [1] x1 + [0] p(c_26) = [1] p(c_27) = [1] p(c_28) = [4] p(c_29) = [4] p(c_30) = [0] p(c_31) = [1] p(c_32) = [1] p(c_33) = [0] p(c_34) = [0] p(c_35) = [1] x1 + [2] p(c_36) = [0] p(c_37) = [1] p(c_38) = [0] p(c_39) = [1] p(c_40) = [2] p(c_41) = [1] x1 + [1] p(c_42) = [1] p(c_43) = [1] p(c_44) = [2] p(c_45) = [0] p(c_46) = [0] p(c_47) = [2] p(c_48) = [4] p(c_49) = [0] p(c_50) = [0] p(c_51) = [0] p(c_52) = [0] p(c_53) = [1] p(c_54) = [2] p(c_55) = [1] p(c_56) = [4] p(c_57) = [1] x2 + [1] x3 + [1] x5 + [1] Following rules are strictly oriented: appendreverse#(@toreverse,@sofar) = [1] @toreverse + [1] > [1] @toreverse + [0] = c_2(appendreverse#1#(@toreverse,@sofar)) Following rules are (at-least) weakly oriented: appendreverse#1#(::(@a,@as),@sofar) = [1] @a + [1] @as + [1] >= [1] @as + [1] = c_3(appendreverse#(@as,::(@a,@sofar))) bfs#(@queue,@futurequeue,@x) = [1] @futurequeue + [1] @queue + [1] >= [1] @futurequeue + [1] @queue + [1] = bfs#1#(@queue,@futurequeue,@x) bfs#1#(::(@t,@ts),@futurequeue,@x) = [1] @futurequeue + [1] @t + [1] @ts + [2] >= [1] @futurequeue + [1] @t + [1] @ts + [1] = bfs#3#(@t,@futurequeue,@ts,@x) bfs#1#(nil(),@futurequeue,@x) = [1] @futurequeue + [1] >= [1] @futurequeue + [1] = bfs#2#(@futurequeue,@x) bfs#2#(::(@t,@ts),@x) = [1] @t + [1] @ts + [2] >= [1] @t + [1] @ts + [2] = bfs#(reverse(::(@t,@ts)),nil(),@x) bfs#2#(::(@t,@ts),@x) = [1] @t + [1] @ts + [2] >= [1] @t + [1] @ts + [2] = reverse#(::(@t,@ts)) bfs#3#(leaf(),@futurequeue,@ts,@x) = [1] @futurequeue + [1] @ts + [1] >= [1] @futurequeue + [1] @ts + [1] = bfs#(@ts,@futurequeue,@x) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [3] >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [3] = bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [3] >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [3] = bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs2#(@t,@x) = [1] @t + [5] @x + [3] >= [1] @t + [4] @x + [3] = bfs2#1#(dobfs(@t,@x),@x) bfs2#(@t,@x) = [1] @t + [5] @x + [3] >= [1] @t + [1] @x + [2] = dobfs#(@t,@x) bfs2#1#(@t',@x) = [1] @t' + [4] @x + [2] >= [1] @t' + [1] @x + [2] = dobfs#(@t',@x) dobfs#(@t,@x) = [1] @t + [1] @x + [2] >= [1] @t + [2] = bfs#(::(@t,nil()),nil(),@x) reverse#(@xs) = [1] @xs + [1] >= [1] @xs + [1] = c_25(appendreverse#(@xs,nil())) appendreverse(@toreverse,@sofar) = [1] @sofar + [1] @toreverse + [0] >= [1] @sofar + [1] @toreverse + [0] = appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) = [1] @a + [1] @as + [1] @sofar + [1] >= [1] @a + [1] @as + [1] @sofar + [1] = appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) = [1] @sofar + [0] >= [1] @sofar + [0] = @sofar bfs(@queue,@futurequeue,@x) = [1] @futurequeue + [1] @queue + [0] >= [1] @futurequeue + [1] @queue + [0] = bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) = [1] @futurequeue + [1] @t + [1] @ts + [1] >= [1] @futurequeue + [1] @t + [1] @ts + [1] = bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) = [1] @futurequeue + [0] >= [1] @futurequeue + [0] = bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) = [1] @t + [1] @ts + [1] >= [1] @t + [1] @ts + [1] = bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) = [0] >= [0] = leaf() bfs#3(leaf(),@futurequeue,@ts,@x) = [1] @futurequeue + [1] @ts + [1] >= [1] @futurequeue + [1] @ts + [0] = bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [3] >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [2] = bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [2] >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [2] = bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [2] >= [1] @t1 + [1] @t2 + [2] = node(@y,@t1,@t2) dobfs(@t,@x) = [1] @t + [1] >= [1] @t + [1] = bfs(::(@t,nil()),nil(),@x) reverse(@xs) = [1] @xs + [0] >= [1] @xs + [0] = appendreverse(@xs,nil()) ***** Step 8.a:2.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x) bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x) bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x) bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x) bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x) bfs2#(@t,@x) -> dobfs#(@t,@x) bfs2#1#(@t',@x) -> dobfs#(@t',@x) dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ***** Step 8.a:2.b:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x) bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x) bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x) bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x) bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x) bfs2#(@t,@x) -> dobfs#(@t,@x) bfs2#1#(@t',@x) -> dobfs#(@t',@x) dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))):2 2:W:appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1 3:W:bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x) -->_1 bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x):5 -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x):4 4:W:bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x) -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y):9 -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x):8 5:W:bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x) -->_1 bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts)):7 -->_1 bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x):6 6:W:bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x) -->_1 bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x):3 7:W:bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts)) -->_1 reverse#(@xs) -> c_25(appendreverse#(@xs,nil())):15 8:W:bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x) -->_1 bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x):3 9:W:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x):10 10:W:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x) -->_1 bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x):3 11:W:bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x) -->_1 bfs2#1#(@t',@x) -> dobfs#(@t',@x):13 12:W:bfs2#(@t,@x) -> dobfs#(@t,@x) -->_1 dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x):14 13:W:bfs2#1#(@t',@x) -> dobfs#(@t',@x) -->_1 dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x):14 14:W:dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x) -->_1 bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x):3 15:W:reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 12: bfs2#(@t,@x) -> dobfs#(@t,@x) 11: bfs2#(@t,@x) -> bfs2#1#(dobfs(@t,@x),@x) 13: bfs2#1#(@t',@x) -> dobfs#(@t',@x) 14: dobfs#(@t,@x) -> bfs#(::(@t,nil()),nil(),@x) 3: bfs#(@queue,@futurequeue,@x) -> bfs#1#(@queue,@futurequeue,@x) 10: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x) 9: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) 4: bfs#1#(::(@t,@ts),@futurequeue,@x) -> bfs#3#(@t,@futurequeue,@ts,@x) 8: bfs#3#(leaf(),@futurequeue,@ts,@x) -> bfs#(@ts,@futurequeue,@x) 6: bfs#2#(::(@t,@ts),@x) -> bfs#(reverse(::(@t,@ts)),nil(),@x) 5: bfs#1#(nil(),@futurequeue,@x) -> bfs#2#(@futurequeue,@x) 7: bfs#2#(::(@t,@ts),@x) -> reverse#(::(@t,@ts)) 15: reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) 1: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) 2: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) ***** Step 8.a:2.b:1.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). ** Step 8.b:1: PredecessorEstimation WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {16} by application of Pre({16}) = {4}. Here rules are labelled as follows: 1: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) 2: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) 3: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) 4: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) 5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) 6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) 7: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) 8: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) 9: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) 10: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) 11: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) 12: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) 13: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) 14: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) 15: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) 16: reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) 17: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) 18: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) ** Step 8.b:2: RemoveWeakSuffixes WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak DPs: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):3 -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):2 2:S:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)):6 -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):5 3:S:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))):4 4:S:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) -->_2 reverse#(@xs) -> c_25(appendreverse#(@xs,nil())):18 -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 5:S:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 6:S:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts ,::(@t2,::(@t1,@futurequeue)) ,@x)):7 7:S:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 8:S:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15 -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):9 9:S:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15 10:S:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):11 11:S:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)):13 -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):12 12:S:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):10 13:S:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):14 14:S:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):10 15:S:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 16:W:appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) -->_1 appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))):17 17:W:appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):16 18:W:reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) -->_1 appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)):16 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 18: reverse#(@xs) -> c_25(appendreverse#(@xs,nil())) 16: appendreverse#(@toreverse,@sofar) -> c_2(appendreverse#1#(@toreverse,@sofar)) 17: appendreverse#1#(::(@a,@as),@sofar) -> c_3(appendreverse#(@as,::(@a,@sofar))) ** Step 8.b:3: SimplifyRHS WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/2,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):3 -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):2 2:S:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)):6 -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):5 3:S:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))):4 4:S:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x),reverse#(::(@t,@ts))) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 5:S:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 6:S:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts ,::(@t2,::(@t1,@futurequeue)) ,@x)):7 7:S:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 8:S:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15 -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):9 9:S:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15 10:S:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):11 11:S:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)):13 -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):12 12:S:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):10 13:S:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):14 14:S:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):10 15:S:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) ** Step 8.b:4: Decompose WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + 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: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) - Weak DPs: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2 ,appendreverse#/2,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2 ,dfs#1#/2,dfs#2#/4,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2 ,leaf/0,nil/0,node/3,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0 ,c_14/2,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0 ,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0 ,c_44/0,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} Problem (S) - Strict DPs: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2 ,appendreverse#/2,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2 ,dfs#1#/2,dfs#2#/4,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2 ,leaf/0,nil/0,node/3,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0 ,c_14/2,c_15/1,c_16/1,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0 ,c_29/0,c_30/0,c_31/0,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0 ,c_44/0,c_45/0,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} *** Step 8.b:4.a:1: RemoveWeakSuffixes WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) - Weak DPs: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):3 -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):2 2:S:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)):6 -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):5 3:S:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)):4 4:S:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 5:S:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 6:S:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts ,::(@t2,::(@t1,@futurequeue)) ,@x)):7 7:S:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 8:W:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15 -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):9 9:W:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15 10:W:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):11 11:W:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)):13 -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):12 12:W:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):10 13:W:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):14 14:W:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):10 15:W:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 10: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) 14: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) 13: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) 11: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) 12: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) *** Step 8.b:4.a:2: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) - Weak DPs: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) Consider the set of all dependency pairs 1: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) 2: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) 3: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) 4: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) 5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) 6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) 7: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) 8: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) 9: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) 15: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) SPACE(?,?)on application of the dependency pairs {6} These cover all (indirect) predecessors of dependency pairs {6,7,8,9,15} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. **** Step 8.b:4.a:2.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) - Weak DPs: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_5) = {1}, uargs(c_6) = {1}, uargs(c_7) = {1}, uargs(c_8) = {1}, uargs(c_10) = {1}, uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_14) = {1,2}, uargs(c_15) = {1}, uargs(c_23) = {1} Following symbols are considered usable: {appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#,#equal#,appendreverse# ,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} TcT has computed the following interpretation: p(#0) = [1] p(#and) = [1] x1 + [0] p(#eq) = [0] p(#equal) = [0] p(#false) = [0] p(#neg) = [0] p(#pos) = [1] x1 + [1] p(#s) = [1] x1 + [1] p(#true) = [3] p(::) = [1] x1 + [1] x2 + [0] p(appendreverse) = [1] x1 + [1] x2 + [0] p(appendreverse#1) = [1] x1 + [1] x2 + [0] p(bfs) = [1] x1 + [1] x2 + [0] p(bfs#1) = [1] x1 + [1] x2 + [0] p(bfs#2) = [1] x1 + [0] p(bfs#3) = [1] x1 + [1] x2 + [1] x3 + [0] p(bfs#4) = [1] x2 + [1] x3 + [1] x4 + [1] x5 + [4] p(bfs2) = [1] p(bfs2#1) = [1] x2 + [4] p(dfs) = [1] x1 + [1] x2 + [2] p(dfs#1) = [4] p(dfs#2) = [1] x1 + [1] x3 + [2] x4 + [1] p(dfs#3) = [4] x1 + [2] x3 + [1] x5 + [0] p(dobfs) = [1] x1 + [0] p(dodfs) = [2] p(leaf) = [0] p(nil) = [0] p(node) = [1] x2 + [1] x3 + [4] p(reverse) = [1] x1 + [0] p(#and#) = [4] x1 + [1] x2 + [0] p(#eq#) = [4] x1 + [1] x2 + [0] p(#equal#) = [2] x2 + [0] p(appendreverse#) = [1] x1 + [1] x2 + [1] p(appendreverse#1#) = [4] x2 + [0] p(bfs#) = [1] x1 + [1] x2 + [0] p(bfs#1#) = [1] x1 + [1] x2 + [0] p(bfs#2#) = [1] x1 + [0] p(bfs#3#) = [1] x1 + [1] x2 + [1] x3 + [0] p(bfs#4#) = [1] x2 + [1] x3 + [1] x4 + [1] x5 + [0] p(bfs2#) = [7] x1 + [1] x2 + [6] p(bfs2#1#) = [4] x1 + [2] p(dfs#) = [1] x1 + [1] x2 + [1] p(dfs#1#) = [1] x1 + [0] p(dfs#2#) = [1] x3 + [0] p(dfs#3#) = [1] x1 + [2] x2 + [2] x3 + [2] x4 + [2] p(dobfs#) = [2] x1 + [2] p(dodfs#) = [0] p(reverse#) = [0] p(c_1) = [1] x1 + [1] p(c_2) = [1] p(c_3) = [4] x1 + [0] p(c_4) = [0] p(c_5) = [1] x1 + [0] p(c_6) = [1] x1 + [0] p(c_7) = [1] x1 + [0] p(c_8) = [1] x1 + [0] p(c_9) = [1] p(c_10) = [1] x1 + [0] p(c_11) = [1] x1 + [2] p(c_12) = [1] x1 + [0] p(c_13) = [0] p(c_14) = [1] x1 + [1] x2 + [2] p(c_15) = [1] x1 + [0] p(c_16) = [2] x1 + [1] p(c_17) = [1] x1 + [4] p(c_18) = [0] p(c_19) = [1] x1 + [0] p(c_20) = [4] x1 + [1] p(c_21) = [4] p(c_22) = [4] p(c_23) = [1] x1 + [2] p(c_24) = [4] p(c_25) = [1] p(c_26) = [4] p(c_27) = [0] p(c_28) = [1] p(c_29) = [1] p(c_30) = [0] p(c_31) = [1] p(c_32) = [2] p(c_33) = [2] p(c_34) = [4] p(c_35) = [1] p(c_36) = [1] p(c_37) = [0] p(c_38) = [1] p(c_39) = [1] x1 + [1] p(c_40) = [1] p(c_41) = [1] x1 + [0] p(c_42) = [1] x2 + [1] p(c_43) = [0] p(c_44) = [0] p(c_45) = [0] p(c_46) = [1] p(c_47) = [2] p(c_48) = [0] p(c_49) = [0] p(c_50) = [1] p(c_51) = [2] p(c_52) = [1] p(c_53) = [1] p(c_54) = [1] p(c_55) = [0] p(c_56) = [1] p(c_57) = [1] x1 + [1] x3 + [1] x5 + [0] Following rules are strictly oriented: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [4] > [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [2] = c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) Following rules are (at-least) weakly oriented: bfs#(@queue,@futurequeue,@x) = [1] @futurequeue + [1] @queue + [0] >= [1] @futurequeue + [1] @queue + [0] = c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) = [1] @futurequeue + [1] @t + [1] @ts + [0] >= [1] @futurequeue + [1] @t + [1] @ts + [0] = c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) = [1] @futurequeue + [0] >= [1] @futurequeue + [0] = c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) = [1] @t + [1] @ts + [0] >= [1] @t + [1] @ts + [0] = c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) = [1] @futurequeue + [1] @ts + [0] >= [1] @futurequeue + [1] @ts + [0] = c_10(bfs#(@ts,@futurequeue,@x)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [0] >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [0] = c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) = [7] @t + [1] @x + [6] >= [6] @t + [6] = c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) = [4] @t' + [2] >= [2] @t' + [2] = c_15(dobfs#(@t',@x)) dobfs#(@t,@x) = [2] @t + [2] >= [1] @t + [2] = c_23(bfs#(::(@t,nil()),nil(),@x)) appendreverse(@toreverse,@sofar) = [1] @sofar + [1] @toreverse + [0] >= [1] @sofar + [1] @toreverse + [0] = appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) = [1] @a + [1] @as + [1] @sofar + [0] >= [1] @a + [1] @as + [1] @sofar + [0] = appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) = [1] @sofar + [0] >= [1] @sofar + [0] = @sofar bfs(@queue,@futurequeue,@x) = [1] @futurequeue + [1] @queue + [0] >= [1] @futurequeue + [1] @queue + [0] = bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) = [1] @futurequeue + [1] @t + [1] @ts + [0] >= [1] @futurequeue + [1] @t + [1] @ts + [0] = bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) = [1] @futurequeue + [0] >= [1] @futurequeue + [0] = bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) = [1] @t + [1] @ts + [0] >= [1] @t + [1] @ts + [0] = bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) = [0] >= [0] = leaf() bfs#3(leaf(),@futurequeue,@ts,@x) = [1] @futurequeue + [1] @ts + [0] >= [1] @futurequeue + [1] @ts + [0] = bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [4] >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [4] = bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [4] >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [0] = bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [4] >= [1] @t1 + [1] @t2 + [4] = node(@y,@t1,@t2) dobfs(@t,@x) = [1] @t + [0] >= [1] @t + [0] = bfs(::(@t,nil()),nil(),@x) reverse(@xs) = [1] @xs + [0] >= [1] @xs + [0] = appendreverse(@xs,nil()) **** Step 8.b:4.a:2.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) - Weak DPs: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () **** Step 8.b:4.a:2.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) - Weak DPs: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) Consider the set of all dependency pairs 1: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) 2: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) 3: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) 4: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) 5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) 6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) 7: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) 8: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) 9: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) 10: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) SPACE(?,?)on application of the dependency pairs {5} These cover all (indirect) predecessors of dependency pairs {5,8,9,10} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. ***** Step 8.b:4.a:2.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) - Weak DPs: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_5) = {1}, uargs(c_6) = {1}, uargs(c_7) = {1}, uargs(c_8) = {1}, uargs(c_10) = {1}, uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_14) = {1,2}, uargs(c_15) = {1}, uargs(c_23) = {1} Following symbols are considered usable: {appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#,#equal#,appendreverse# ,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} TcT has computed the following interpretation: p(#0) = [4] p(#and) = [1] p(#eq) = [0] p(#equal) = [0] p(#false) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [1] p(#s) = [2] p(#true) = [0] p(::) = [1] x1 + [1] x2 + [0] p(appendreverse) = [1] x1 + [1] x2 + [0] p(appendreverse#1) = [1] x1 + [1] x2 + [0] p(bfs) = [2] x1 + [2] x2 + [2] p(bfs#1) = [2] x1 + [2] x2 + [2] p(bfs#2) = [2] x1 + [2] p(bfs#3) = [2] x1 + [2] x2 + [2] x3 + [0] p(bfs#4) = [2] x2 + [2] x3 + [2] x4 + [2] x5 + [2] x7 + [4] p(bfs2) = [2] x1 + [1] x2 + [0] p(bfs2#1) = [0] p(dfs) = [1] x1 + [1] x2 + [1] p(dfs#1) = [1] x2 + [1] p(dfs#2) = [2] x2 + [4] x3 + [1] x4 + [0] p(dfs#3) = [2] x2 + [1] x5 + [1] x6 + [0] p(dobfs) = [2] x1 + [2] p(dodfs) = [2] x1 + [1] p(leaf) = [2] p(nil) = [0] p(node) = [1] x1 + [1] x2 + [1] x3 + [3] p(reverse) = [1] x1 + [0] p(#and#) = [2] x1 + [2] x2 + [0] p(#eq#) = [1] x2 + [0] p(#equal#) = [4] p(appendreverse#) = [1] x1 + [1] p(appendreverse#1#) = [0] p(bfs#) = [2] x1 + [2] x2 + [0] p(bfs#1#) = [2] x1 + [2] x2 + [0] p(bfs#2#) = [2] x1 + [0] p(bfs#3#) = [2] x1 + [2] x2 + [2] x3 + [0] p(bfs#4#) = [2] x2 + [2] x3 + [2] x4 + [2] x5 + [2] x7 + [6] p(bfs2#) = [6] x1 + [2] x2 + [4] p(bfs2#1#) = [2] x1 + [1] x2 + [0] p(dfs#) = [1] x1 + [1] x2 + [0] p(dfs#1#) = [0] p(dfs#2#) = [1] x1 + [1] x4 + [0] p(dfs#3#) = [1] x1 + [2] x3 + [2] x4 + [1] x6 + [0] p(dobfs#) = [2] x1 + [1] x2 + [0] p(dodfs#) = [1] x2 + [1] p(reverse#) = [2] x1 + [2] p(c_1) = [1] p(c_2) = [1] x1 + [0] p(c_3) = [1] x1 + [0] p(c_4) = [4] p(c_5) = [1] x1 + [0] p(c_6) = [1] x1 + [0] p(c_7) = [1] x1 + [0] p(c_8) = [1] x1 + [0] p(c_9) = [0] p(c_10) = [1] x1 + [3] p(c_11) = [1] x1 + [0] p(c_12) = [1] x1 + [6] p(c_13) = [4] p(c_14) = [1] x1 + [1] x2 + [0] p(c_15) = [1] x1 + [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [1] p(c_19) = [1] x1 + [1] p(c_20) = [2] x1 + [0] p(c_21) = [1] p(c_22) = [4] p(c_23) = [1] x1 + [0] p(c_24) = [2] x1 + [1] p(c_25) = [1] x1 + [0] p(c_26) = [4] p(c_27) = [0] p(c_28) = [0] p(c_29) = [1] p(c_30) = [0] p(c_31) = [1] p(c_32) = [0] p(c_33) = [1] p(c_34) = [0] p(c_35) = [1] x1 + [0] p(c_36) = [0] p(c_37) = [1] p(c_38) = [0] p(c_39) = [2] p(c_40) = [1] p(c_41) = [1] x1 + [0] p(c_42) = [1] p(c_43) = [1] p(c_44) = [1] p(c_45) = [0] p(c_46) = [0] p(c_47) = [4] p(c_48) = [1] p(c_49) = [0] p(c_50) = [0] p(c_51) = [0] p(c_52) = [2] p(c_53) = [1] p(c_54) = [0] p(c_55) = [1] p(c_56) = [1] p(c_57) = [2] x1 + [1] x3 + [2] Following rules are strictly oriented: bfs#3#(leaf(),@futurequeue,@ts,@x) = [2] @futurequeue + [2] @ts + [4] > [2] @futurequeue + [2] @ts + [3] = c_10(bfs#(@ts,@futurequeue,@x)) Following rules are (at-least) weakly oriented: bfs#(@queue,@futurequeue,@x) = [2] @futurequeue + [2] @queue + [0] >= [2] @futurequeue + [2] @queue + [0] = c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) = [2] @futurequeue + [2] @t + [2] @ts + [0] >= [2] @futurequeue + [2] @t + [2] @ts + [0] = c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) = [2] @futurequeue + [0] >= [2] @futurequeue + [0] = c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) = [2] @t + [2] @ts + [0] >= [2] @t + [2] @ts + [0] = c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [6] >= [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [6] = c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [6] >= [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [6] = c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) = [6] @t + [2] @x + [4] >= [6] @t + [2] @x + [4] = c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) = [2] @t' + [1] @x + [0] >= [2] @t' + [1] @x + [0] = c_15(dobfs#(@t',@x)) dobfs#(@t,@x) = [2] @t + [1] @x + [0] >= [2] @t + [0] = c_23(bfs#(::(@t,nil()),nil(),@x)) appendreverse(@toreverse,@sofar) = [1] @sofar + [1] @toreverse + [0] >= [1] @sofar + [1] @toreverse + [0] = appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) = [1] @a + [1] @as + [1] @sofar + [0] >= [1] @a + [1] @as + [1] @sofar + [0] = appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) = [1] @sofar + [0] >= [1] @sofar + [0] = @sofar bfs(@queue,@futurequeue,@x) = [2] @futurequeue + [2] @queue + [2] >= [2] @futurequeue + [2] @queue + [2] = bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) = [2] @futurequeue + [2] @t + [2] @ts + [2] >= [2] @futurequeue + [2] @t + [2] @ts + [0] = bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) = [2] @futurequeue + [2] >= [2] @futurequeue + [2] = bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) = [2] @t + [2] @ts + [2] >= [2] @t + [2] @ts + [2] = bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) = [2] >= [2] = leaf() bfs#3(leaf(),@futurequeue,@ts,@x) = [2] @futurequeue + [2] @ts + [4] >= [2] @futurequeue + [2] @ts + [2] = bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [6] >= [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [4] = bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [4] >= [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] = bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) = [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [4] >= [1] @t1 + [1] @t2 + [1] @y + [3] = node(@y,@t1,@t2) dobfs(@t,@x) = [2] @t + [2] >= [2] @t + [2] = bfs(::(@t,nil()),nil(),@x) reverse(@xs) = [1] @xs + [0] >= [1] @xs + [0] = appendreverse(@xs,nil()) ***** Step 8.b:4.a:2.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) - Weak DPs: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ***** Step 8.b:4.a:2.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) - Weak DPs: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 2: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) Consider the set of all dependency pairs 1: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) 2: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) 3: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) 4: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) 5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) 6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) 7: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) 8: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) 9: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) 10: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) SPACE(?,?)on application of the dependency pairs {2} These cover all (indirect) predecessors of dependency pairs {2,5,6,7,8,9,10} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. ****** Step 8.b:4.a:2.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) - Weak DPs: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_5) = {1}, uargs(c_6) = {1}, uargs(c_7) = {1}, uargs(c_8) = {1}, uargs(c_10) = {1}, uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_14) = {1,2}, uargs(c_15) = {1}, uargs(c_23) = {1} Following symbols are considered usable: {appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#,#equal#,appendreverse# ,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} TcT has computed the following interpretation: p(#0) = [0] p(#and) = [2] x1 + [5] x2 + [2] p(#eq) = [0] p(#equal) = [0] p(#false) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [1] x1 + [2] p(#s) = [0] p(#true) = [1] p(::) = [1] x1 + [1] x2 + [0] p(appendreverse) = [1] x1 + [1] x2 + [0] p(appendreverse#1) = [1] x1 + [1] x2 + [0] p(bfs) = [1] x1 + [1] x2 + [2] p(bfs#1) = [1] x1 + [1] x2 + [2] p(bfs#2) = [1] x1 + [2] p(bfs#3) = [1] x1 + [1] x2 + [1] x3 + [0] p(bfs#4) = [1] x2 + [1] x3 + [1] x4 + [1] x5 + [1] x7 + [2] p(bfs2) = [1] x1 + [4] x2 + [0] p(bfs2#1) = [2] x1 + [2] p(dfs) = [2] p(dfs#1) = [1] x1 + [2] x2 + [0] p(dfs#2) = [1] x4 + [1] p(dfs#3) = [1] x3 + [4] x4 + [1] x5 + [0] p(dobfs) = [2] x1 + [2] p(dodfs) = [1] x1 + [1] x2 + [0] p(leaf) = [2] p(nil) = [0] p(node) = [1] x1 + [1] x2 + [1] x3 + [2] p(reverse) = [1] x1 + [0] p(#and#) = [0] p(#eq#) = [4] x2 + [2] p(#equal#) = [4] x1 + [2] x2 + [1] p(appendreverse#) = [1] x1 + [0] p(appendreverse#1#) = [1] x2 + [1] p(bfs#) = [2] x1 + [2] x2 + [1] p(bfs#1#) = [2] x1 + [2] x2 + [1] p(bfs#2#) = [2] x1 + [1] p(bfs#3#) = [2] x1 + [2] x2 + [2] x3 + [0] p(bfs#4#) = [2] x2 + [2] x3 + [2] x4 + [2] x5 + [2] x7 + [1] p(bfs2#) = [6] x1 + [5] x2 + [7] p(bfs2#1#) = [2] x1 + [4] x2 + [1] p(dfs#) = [1] x1 + [1] x2 + [0] p(dfs#1#) = [4] p(dfs#2#) = [4] x1 + [2] x2 + [4] x3 + [2] x4 + [2] p(dfs#3#) = [1] x1 + [1] x4 + [4] x5 + [0] p(dobfs#) = [2] x1 + [1] x2 + [1] p(dodfs#) = [1] x1 + [1] x2 + [1] p(reverse#) = [2] p(c_1) = [0] p(c_2) = [1] x1 + [2] p(c_3) = [1] x1 + [1] p(c_4) = [0] p(c_5) = [1] x1 + [0] p(c_6) = [1] x1 + [0] p(c_7) = [1] x1 + [0] p(c_8) = [1] x1 + [0] p(c_9) = [1] p(c_10) = [1] x1 + [0] p(c_11) = [1] x1 + [3] p(c_12) = [1] x1 + [0] p(c_13) = [1] p(c_14) = [1] x1 + [1] x2 + [1] p(c_15) = [1] x1 + [0] p(c_16) = [1] p(c_17) = [4] p(c_18) = [1] p(c_19) = [0] p(c_20) = [4] x1 + [1] p(c_21) = [1] x1 + [0] p(c_22) = [1] p(c_23) = [1] x1 + [0] p(c_24) = [4] p(c_25) = [1] x1 + [1] p(c_26) = [4] p(c_27) = [0] p(c_28) = [4] p(c_29) = [0] p(c_30) = [0] p(c_31) = [2] p(c_32) = [0] p(c_33) = [0] p(c_34) = [1] p(c_35) = [1] x1 + [0] p(c_36) = [1] p(c_37) = [4] p(c_38) = [1] p(c_39) = [1] p(c_40) = [0] p(c_41) = [1] x1 + [0] p(c_42) = [1] x1 + [1] x2 + [4] x3 + [1] p(c_43) = [0] p(c_44) = [1] p(c_45) = [2] p(c_46) = [1] p(c_47) = [1] p(c_48) = [1] p(c_49) = [4] p(c_50) = [1] p(c_51) = [4] p(c_52) = [1] p(c_53) = [1] p(c_54) = [2] p(c_55) = [2] p(c_56) = [0] p(c_57) = [1] x4 + [0] Following rules are strictly oriented: bfs#1#(::(@t,@ts),@futurequeue,@x) = [2] @futurequeue + [2] @t + [2] @ts + [1] > [2] @futurequeue + [2] @t + [2] @ts + [0] = c_6(bfs#3#(@t,@futurequeue,@ts,@x)) Following rules are (at-least) weakly oriented: bfs#(@queue,@futurequeue,@x) = [2] @futurequeue + [2] @queue + [1] >= [2] @futurequeue + [2] @queue + [1] = c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(nil(),@futurequeue,@x) = [2] @futurequeue + [1] >= [2] @futurequeue + [1] = c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) = [2] @t + [2] @ts + [1] >= [2] @t + [2] @ts + [1] = c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) = [2] @futurequeue + [2] @ts + [4] >= [2] @futurequeue + [2] @ts + [1] = c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [4] >= [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [4] = c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [2] @y + [1] >= [2] @futurequeue + [2] @t1 + [2] @t2 + [2] @ts + [1] = c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) = [6] @t + [5] @x + [7] >= [6] @t + [5] @x + [7] = c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) = [2] @t' + [4] @x + [1] >= [2] @t' + [1] @x + [1] = c_15(dobfs#(@t',@x)) dobfs#(@t,@x) = [2] @t + [1] @x + [1] >= [2] @t + [1] = c_23(bfs#(::(@t,nil()),nil(),@x)) appendreverse(@toreverse,@sofar) = [1] @sofar + [1] @toreverse + [0] >= [1] @sofar + [1] @toreverse + [0] = appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) = [1] @a + [1] @as + [1] @sofar + [0] >= [1] @a + [1] @as + [1] @sofar + [0] = appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) = [1] @sofar + [0] >= [1] @sofar + [0] = @sofar bfs(@queue,@futurequeue,@x) = [1] @futurequeue + [1] @queue + [2] >= [1] @futurequeue + [1] @queue + [2] = bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) = [1] @futurequeue + [1] @t + [1] @ts + [2] >= [1] @futurequeue + [1] @t + [1] @ts + [0] = bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) = [1] @futurequeue + [2] >= [1] @futurequeue + [2] = bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) = [1] @t + [1] @ts + [2] >= [1] @t + [1] @ts + [2] = bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) = [2] >= [2] = leaf() bfs#3(leaf(),@futurequeue,@ts,@x) = [1] @futurequeue + [1] @ts + [2] >= [1] @futurequeue + [1] @ts + [2] = bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [1] @y + [2] >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [1] @y + [2] = bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [1] @y + [2] >= [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [2] = bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1] @futurequeue + [1] @t1 + [1] @t2 + [1] @ts + [1] @y + [2] >= [1] @t1 + [1] @t2 + [1] @y + [2] = node(@y,@t1,@t2) dobfs(@t,@x) = [2] @t + [2] >= [1] @t + [2] = bfs(::(@t,nil()),nil(),@x) reverse(@xs) = [1] @xs + [0] >= [1] @xs + [0] = appendreverse(@xs,nil()) ****** Step 8.b:4.a:2.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) - Weak DPs: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ****** Step 8.b:4.a:2.b:1.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) - Weak DPs: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 3: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) Consider the set of all dependency pairs 1: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) 2: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) 3: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) 4: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) 5: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) 6: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) 7: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) 8: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) 9: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) 10: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) Processor NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2)) SPACE(?,?)on application of the dependency pairs {3} These cover all (indirect) predecessors of dependency pairs {3,8,9,10} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. ******* Step 8.b:4.a:2.b:1.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) - Weak DPs: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: NaturalMI {miDimension = 3, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation (containing no more than 2 non-zero interpretation-entries in the diagonal of the component-wise maxima): The following argument positions are considered usable: uargs(c_5) = {1}, uargs(c_6) = {1}, uargs(c_7) = {1}, uargs(c_8) = {1}, uargs(c_10) = {1}, uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_14) = {1,2}, uargs(c_15) = {1}, uargs(c_23) = {1} Following symbols are considered usable: {#and,#eq,#equal,appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq# ,#equal#,appendreverse#,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2# ,dfs#3#,dobfs#,dodfs#,reverse#} TcT has computed the following interpretation: p(#0) = [0] [0] [0] p(#and) = [1] [0] [0] p(#eq) = [1] [0] [0] p(#equal) = [0 0 0] [0 0 0] [1] [1 1 1] x1 + [1 0 0] x2 + [0] [0 0 1] [1 0 0] [0] p(#false) = [1] [0] [0] p(#neg) = [0] [0] [0] p(#pos) = [0] [0] [0] p(#s) = [0] [0] [0] p(#true) = [0] [0] [0] p(::) = [0 0 0] [0 0 0] [1] [0 1 0] x1 + [0 1 0] x2 + [1] [0 0 1] [0 0 1] [0] p(appendreverse) = [0 1 0] [1 0 0] [0] [0 1 0] x1 + [0 1 0] x2 + [0] [0 0 1] [0 0 1] [0] p(appendreverse#1) = [0 1 0] [1 0 0] [0] [0 1 0] x1 + [0 1 0] x2 + [0] [0 0 1] [0 0 1] [0] p(bfs) = [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] x1 + [0 1 0] x2 + [0 0 0] x3 + [0] [0 1 0] [0 1 0] [0 0 0] [0] p(bfs#1) = [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] x1 + [0 1 0] x2 + [0 0 0] x3 + [0] [0 1 0] [0 1 0] [0 0 0] [0] p(bfs#2) = [0 0 0] [0 1 0] [0] [0 1 0] x1 + [0 0 0] x2 + [0] [0 1 0] [0 0 0] [0] p(bfs#3) = [0 0 0] [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] x1 + [0 1 0] x2 + [0 1 0] x3 + [0 0 0] x4 + [1] [0 1 0] [0 1 0] [0 1 0] [0 0 0] [1] p(bfs#4) = [0 0 0] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [0 1 0] [0] [1 0 0] x1 + [0 1 0] x2 + [0 1 1] x3 + [0 1 1] x4 + [0 1 0] x5 + [0 0 0] x6 + [1] [1 0 0] [0 1 0] [0 1 1] [0 1 1] [0 1 0] [0 0 0] [1] p(bfs2) = [0] [0] [0] p(bfs2#1) = [0] [0] [0] p(dfs) = [0] [0] [0] p(dfs#1) = [0] [0] [0] p(dfs#2) = [0] [0] [0] p(dfs#3) = [0] [0] [0] p(dobfs) = [0 1 1] [0 1 0] [0] [1 1 0] x1 + [0 0 1] x2 + [1] [0 1 0] [1 1 1] [1] p(dodfs) = [0] [0] [0] p(leaf) = [0] [0] [0] p(nil) = [0] [0] [0] p(node) = [0 0 0] [0 0 0] [0] [0 1 1] x2 + [0 1 1] x3 + [1] [0 0 1] [0 0 1] [1] p(reverse) = [0 1 0] [0] [0 1 0] x1 + [0] [0 0 1] [0] p(#and#) = [0] [0] [0] p(#eq#) = [0] [0] [0] p(#equal#) = [0] [0] [0] p(appendreverse#) = [0] [0] [0] p(appendreverse#1#) = [0] [0] [0] p(bfs#) = [0 0 1] [1 0 1] [0 0 0] [0] [0 0 1] x1 + [0 0 0] x2 + [0 0 0] x3 + [0] [0 0 1] [1 0 1] [1 0 0] [0] p(bfs#1#) = [0 0 1] [1 0 1] [0 0 0] [0] [1 0 0] x1 + [1 1 0] x2 + [0 1 0] x3 + [0] [0 1 1] [1 0 1] [1 1 1] [0] p(bfs#2#) = [1 0 1] [0 0 0] [0] [0 0 1] x1 + [1 0 1] x2 + [0] [0 1 1] [0 1 0] [0] p(bfs#3#) = [0 0 1] [1 0 1] [0 0 1] [0 0 0] [0] [0 1 1] x1 + [1 0 1] x2 + [0 0 1] x3 + [0 1 1] x4 + [0] [0 0 0] [0 0 0] [0 1 0] [1 0 1] [1] p(bfs#4#) = [0 0 0] [1 0 1] [0 0 1] [0 0 1] [0 0 1] [0 0 0] [1] [1 0 0] x1 + [0 0 1] x2 + [0 0 1] x3 + [1 0 1] x4 + [1 1 1] x5 + [1 1 1] x6 + [1] [0 0 1] [1 0 0] [0 1 0] [1 0 1] [0 0 1] [0 0 1] [0] p(bfs2#) = [1 1 1] [1 1 1] [1] [1 0 1] x1 + [1 0 1] x2 + [1] [0 0 0] [0 1 0] [0] p(bfs2#1#) = [0 0 1] [0] [1 0 1] x1 + [1] [0 1 0] [1] p(dfs#) = [0] [0] [0] p(dfs#1#) = [0] [0] [0] p(dfs#2#) = [0] [0] [0] p(dfs#3#) = [0] [0] [0] p(dobfs#) = [0 0 1] [0] [0 1 0] x1 + [1] [0 0 1] [0] p(dodfs#) = [0] [0] [0] p(reverse#) = [0] [0] [0] p(c_1) = [0] [0] [0] p(c_2) = [0] [0] [0] p(c_3) = [0] [0] [0] p(c_4) = [0] [0] [0] p(c_5) = [1 0 0] [0] [0 0 0] x1 + [0] [0 0 0] [0] p(c_6) = [1 0 0] [0] [0 0 0] x1 + [1] [1 0 0] [0] p(c_7) = [1 0 0] [0] [0 0 0] x1 + [0] [0 1 0] [0] p(c_8) = [1 0 0] [0] [1 0 0] x1 + [0] [0 0 0] [0] p(c_9) = [0] [0] [0] p(c_10) = [1 0 0] [0] [1 0 0] x1 + [0] [0 0 0] [0] p(c_11) = [1 0 0] [0] [1 0 0] x1 + [1] [0 0 0] [0] p(c_12) = [1 0 0] [0] [0 0 1] x1 + [0] [0 1 0] [0] p(c_13) = [0] [0] [0] p(c_14) = [1 0 0] [1 0 0] [0] [0 0 0] x1 + [0 0 1] x2 + [1] [0 0 0] [0 0 0] [0] p(c_15) = [1 0 0] [0] [0 0 0] x1 + [1] [0 0 0] [0] p(c_16) = [0] [0] [0] p(c_17) = [0] [0] [0] p(c_18) = [0] [0] [0] p(c_19) = [0] [0] [0] p(c_20) = [0] [0] [0] p(c_21) = [0] [0] [0] p(c_22) = [0] [0] [0] p(c_23) = [1 0 0] [0] [0 0 0] x1 + [0] [0 1 0] [0] p(c_24) = [0] [0] [0] p(c_25) = [0] [0] [0] p(c_26) = [0] [0] [0] p(c_27) = [0] [0] [0] p(c_28) = [0] [0] [0] p(c_29) = [0] [0] [0] p(c_30) = [0] [0] [0] p(c_31) = [0] [0] [0] p(c_32) = [0] [0] [0] p(c_33) = [0] [0] [0] p(c_34) = [0] [0] [0] p(c_35) = [0] [0] [0] p(c_36) = [0] [0] [0] p(c_37) = [0] [0] [0] p(c_38) = [0] [0] [0] p(c_39) = [0] [0] [0] p(c_40) = [0] [0] [0] p(c_41) = [0] [0] [0] p(c_42) = [0] [0] [0] p(c_43) = [0] [0] [0] p(c_44) = [0] [0] [0] p(c_45) = [0] [0] [0] p(c_46) = [0] [0] [0] p(c_47) = [0] [0] [0] p(c_48) = [0] [0] [0] p(c_49) = [0] [0] [0] p(c_50) = [0] [0] [0] p(c_51) = [0] [0] [0] p(c_52) = [0] [0] [0] p(c_53) = [0] [0] [0] p(c_54) = [0] [0] [0] p(c_55) = [0] [0] [0] p(c_56) = [0] [0] [0] p(c_57) = [0] [0] [0] Following rules are strictly oriented: bfs#2#(::(@t,@ts),@x) = [0 0 1] [0 0 1] [0 0 0] [1] [0 0 1] @t + [0 0 1] @ts + [1 0 1] @x + [0] [0 1 1] [0 1 1] [0 1 0] [1] > [0 0 1] [0 0 1] [0] [0 0 1] @t + [0 0 1] @ts + [0] [0 0 0] [0 0 0] [0] = c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) Following rules are (at-least) weakly oriented: bfs#(@queue,@futurequeue,@x) = [1 0 1] [0 0 1] [0 0 0] [0] [0 0 0] @futurequeue + [0 0 1] @queue + [0 0 0] @x + [0] [1 0 1] [0 0 1] [1 0 0] [0] >= [1 0 1] [0 0 1] [0] [0 0 0] @futurequeue + [0 0 0] @queue + [0] [0 0 0] [0 0 0] [0] = c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) = [1 0 1] [0 0 1] [0 0 1] [0 0 0] [0] [1 1 0] @futurequeue + [0 0 0] @t + [0 0 0] @ts + [0 1 0] @x + [1] [1 0 1] [0 1 1] [0 1 1] [1 1 1] [1] >= [1 0 1] [0 0 1] [0 0 1] [0] [0 0 0] @futurequeue + [0 0 0] @t + [0 0 0] @ts + [1] [1 0 1] [0 0 1] [0 0 1] [0] = c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) = [1 0 1] [0 0 0] [0] [1 1 0] @futurequeue + [0 1 0] @x + [0] [1 0 1] [1 1 1] [0] >= [1 0 1] [0 0 0] [0] [0 0 0] @futurequeue + [0 0 0] @x + [0] [0 0 1] [1 0 1] [0] = c_7(bfs#2#(@futurequeue,@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) = [1 0 1] [0 0 1] [0 0 0] [0] [1 0 1] @futurequeue + [0 0 1] @ts + [0 1 1] @x + [0] [0 0 0] [0 1 0] [1 0 1] [1] >= [1 0 1] [0 0 1] [0] [1 0 1] @futurequeue + [0 0 1] @ts + [0] [0 0 0] [0 0 0] [0] = c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [1 0 1] [0 0 1] [0 0 1] [0 0 1] [0 0 0] [1] [1 0 1] @futurequeue + [0 1 2] @t1 + [0 1 2] @t2 + [0 0 1] @ts + [0 1 1] @x + [2] [0 0 0] [0 0 0] [0 0 0] [0 1 0] [1 0 1] [1] >= [1 0 1] [0 0 1] [0 0 1] [0 0 1] [1] [1 0 1] @futurequeue + [0 0 1] @t1 + [0 0 1] @t2 + [0 0 1] @ts + [2] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [0] = c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1 0 1] [0 0 1] [0 0 1] [0 0 1] [0 0 0] [1] [0 0 1] @futurequeue + [0 0 1] @t1 + [1 0 1] @t2 + [1 1 1] @ts + [1 1 1] @x + [2] [1 0 0] [0 1 0] [1 0 1] [0 0 1] [0 0 1] [0] >= [0 0 1] [0 0 1] [0 0 1] [0 0 1] [0 0 0] [1] [0 0 1] @futurequeue + [0 0 1] @t1 + [0 0 1] @t2 + [0 0 1] @ts + [1 0 0] @x + [1] [0 0 0] [0 0 0] [0 0 0] [0 0 1] [0 0 0] [0] = c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) = [1 1 1] [1 1 1] [1] [1 0 1] @t + [1 0 1] @x + [1] [0 0 0] [0 1 0] [0] >= [0 1 1] [1 1 1] [1] [0 0 1] @t + [0 0 0] @x + [1] [0 0 0] [0 0 0] [0] = c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) = [0 0 1] [0] [1 0 1] @t' + [1] [0 1 0] [1] >= [0 0 1] [0] [0 0 0] @t' + [1] [0 0 0] [0] = c_15(dobfs#(@t',@x)) dobfs#(@t,@x) = [0 0 1] [0] [0 1 0] @t + [1] [0 0 1] [0] >= [0 0 1] [0] [0 0 0] @t + [0] [0 0 1] [0] = c_23(bfs#(::(@t,nil()),nil(),@x)) #and(#false(),#false()) = [1] [0] [0] >= [1] [0] [0] = #false() #and(#false(),#true()) = [1] [0] [0] >= [1] [0] [0] = #false() #and(#true(),#false()) = [1] [0] [0] >= [1] [0] [0] = #false() #and(#true(),#true()) = [1] [0] [0] >= [0] [0] [0] = #true() #eq(#0(),#0()) = [1] [0] [0] >= [0] [0] [0] = #true() #eq(#0(),#neg(@y)) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(#0(),#pos(@y)) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(#0(),#s(@y)) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(#neg(@x),#0()) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(#neg(@x),#neg(@y)) = [1] [0] [0] >= [1] [0] [0] = #eq(@x,@y) #eq(#neg(@x),#pos(@y)) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(#pos(@x),#0()) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(#pos(@x),#neg(@y)) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(#pos(@x),#pos(@y)) = [1] [0] [0] >= [1] [0] [0] = #eq(@x,@y) #eq(#s(@x),#0()) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(#s(@x),#s(@y)) = [1] [0] [0] >= [1] [0] [0] = #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [1] [0] [0] >= [1] [0] [0] = #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(::(@x_1,@x_2),nil()) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(leaf(),::(@y_1,@y_2)) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(leaf(),leaf()) = [1] [0] [0] >= [0] [0] [0] = #true() #eq(leaf(),nil()) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(nil(),::(@y_1,@y_2)) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(nil(),leaf()) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(nil(),nil()) = [1] [0] [0] >= [0] [0] [0] = #true() #eq(nil(),node(@y_1,@y_2,@y_3)) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(node(@x_1,@x_2,@x_3),leaf()) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(node(@x_1,@x_2,@x_3),nil()) = [1] [0] [0] >= [1] [0] [0] = #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) = [1] [0] [0] >= [1] [0] [0] = #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) = [0 0 0] [0 0 0] [1] [1 1 1] @x + [1 0 0] @y + [0] [0 0 1] [1 0 0] [0] >= [1] [0] [0] = #eq(@x,@y) appendreverse(@toreverse,@sofar) = [1 0 0] [0 1 0] [0] [0 1 0] @sofar + [0 1 0] @toreverse + [0] [0 0 1] [0 0 1] [0] >= [1 0 0] [0 1 0] [0] [0 1 0] @sofar + [0 1 0] @toreverse + [0] [0 0 1] [0 0 1] [0] = appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) = [0 1 0] [0 1 0] [1 0 0] [1] [0 1 0] @a + [0 1 0] @as + [0 1 0] @sofar + [1] [0 0 1] [0 0 1] [0 0 1] [0] >= [0 0 0] [0 1 0] [0 0 0] [1] [0 1 0] @a + [0 1 0] @as + [0 1 0] @sofar + [1] [0 0 1] [0 0 1] [0 0 1] [0] = appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) = [1 0 0] [0] [0 1 0] @sofar + [0] [0 0 1] [0] >= [1 0 0] [0] [0 1 0] @sofar + [0] [0 0 1] [0] = @sofar bfs(@queue,@futurequeue,@x) = [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 1 0] @queue + [0 0 0] @x + [0] [0 1 0] [0 1 0] [0 0 0] [0] >= [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 1 0] @queue + [0 0 0] @x + [0] [0 1 0] [0 1 0] [0 0 0] [0] = bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) = [0 0 0] [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 1 0] @t + [0 1 0] @ts + [0 0 0] @x + [1] [0 1 0] [0 1 0] [0 1 0] [0 0 0] [1] >= [0 0 0] [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 1 0] @t + [0 1 0] @ts + [0 0 0] @x + [1] [0 1 0] [0 1 0] [0 1 0] [0 0 0] [1] = bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) = [0 0 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 0 0] @x + [0] [0 1 0] [0 0 0] [0] >= [0 0 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 0 0] @x + [0] [0 1 0] [0 0 0] [0] = bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) = [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] @t + [0 1 0] @ts + [0 0 0] @x + [1] [0 1 0] [0 1 0] [0 0 0] [1] >= [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] @t + [0 1 0] @ts + [0 0 0] @x + [1] [0 1 0] [0 1 0] [0 0 0] [1] = bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) = [0 1 0] [0] [0 0 0] @x + [0] [0 0 0] [0] >= [0] [0] [0] = leaf() bfs#3(leaf(),@futurequeue,@ts,@x) = [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 1 0] @ts + [0 0 0] @x + [1] [0 1 0] [0 1 0] [0 0 0] [1] >= [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 1 0] @ts + [0 0 0] @x + [0] [0 1 0] [0 1 0] [0 0 0] [0] = bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [0 0 0] [0 0 0] [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 0 0] @x + [2] [0 1 0] [0 1 1] [0 1 1] [0 1 0] [0 0 0] [2] >= [0 0 0] [0 0 0] [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 0 0] @x + [2] [0 1 0] [0 1 1] [0 1 1] [0 1 0] [0 0 0] [2] = bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [0 0 0] [0 0 0] [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 0 0] @x + [2] [0 1 0] [0 1 1] [0 1 1] [0 1 0] [0 0 0] [2] >= [0 0 0] [0 0 0] [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 1 0] @t1 + [0 1 0] @t2 + [0 1 0] @ts + [0 0 0] @x + [2] [0 1 0] [0 1 0] [0 1 0] [0 1 0] [0 0 0] [2] = bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) = [0 0 0] [0 0 0] [0 0 0] [0 0 0] [0 1 0] [0] [0 1 0] @futurequeue + [0 1 1] @t1 + [0 1 1] @t2 + [0 1 0] @ts + [0 0 0] @x + [1] [0 1 0] [0 1 1] [0 1 1] [0 1 0] [0 0 0] [1] >= [0 0 0] [0 0 0] [0] [0 1 1] @t1 + [0 1 1] @t2 + [1] [0 0 1] [0 0 1] [1] = node(@y,@t1,@t2) dobfs(@t,@x) = [0 1 1] [0 1 0] [0] [1 1 0] @t + [0 0 1] @x + [1] [0 1 0] [1 1 1] [1] >= [0 0 0] [0 1 0] [0] [0 1 0] @t + [0 0 0] @x + [1] [0 1 0] [0 0 0] [1] = bfs(::(@t,nil()),nil(),@x) reverse(@xs) = [0 1 0] [0] [0 1 0] @xs + [0] [0 0 1] [0] >= [0 1 0] [0] [0 1 0] @xs + [0] [0 0 1] [0] = appendreverse(@xs,nil()) ******* Step 8.b:4.a:2.b:1.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) - Weak DPs: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ******* Step 8.b:4.a:2.b:1.b:1.b:1.b:1: MI WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) - Weak DPs: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: MI {miKind = MaximalMatrix (UpperTriangular (Multiplicity Nothing)), miDimension = 2, miUArgs = UArgs, miURules = URules, miSelector = Just any strict-rules} + Details: We apply a matrix interpretation of kind MaximalMatrix (UpperTriangular (Multiplicity Nothing)): The following argument positions are considered usable: uargs(c_5) = {1}, uargs(c_6) = {1}, uargs(c_7) = {1}, uargs(c_8) = {1}, uargs(c_10) = {1}, uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_14) = {1,2}, uargs(c_15) = {1}, uargs(c_23) = {1} Following symbols are considered usable: {appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#,#equal#,appendreverse# ,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} TcT has computed the following interpretation: p(#0) = [0] [0] p(#and) = [0 2] x_2 + [0] [0 1] [1] p(#eq) = [0] [0] p(#equal) = [0] [0] p(#false) = [0] [0] p(#neg) = [1 0] x_1 + [0] [0 0] [0] p(#pos) = [1 0] x_1 + [0] [0 1] [0] p(#s) = [1 1] x_1 + [0] [0 0] [2] p(#true) = [0] [0] p(::) = [1 0] x_1 + [1 0] x_2 + [0] [0 0] [0 1] [1] p(appendreverse) = [1 0] x_1 + [1 0] x_2 + [0] [0 2] [0 1] [0] p(appendreverse#1) = [1 0] x_1 + [1 0] x_2 + [0] [0 2] [0 1] [0] p(bfs) = [1 0] x_1 + [1 0] x_2 + [0] [0 0] [0 0] [2] p(bfs#1) = [1 0] x_1 + [1 0] x_2 + [0] [0 0] [0 0] [2] p(bfs#2) = [1 0] x_1 + [0] [0 0] [2] p(bfs#3) = [1 0] x_1 + [1 0] x_2 + [1 0] x_3 + [0] [0 0] [0 0] [0 0] [2] p(bfs#4) = [1 0] x_2 + [1 0] x_3 + [1 0] x_4 + [1 0] x_5 + [2] [0 0] [0 0] [0 0] [0 0] [2] p(bfs2) = [2 0] x_1 + [0 0] x_2 + [0] [2 2] [0 1] [2] p(bfs2#1) = [0] [0] p(dfs) = [0 0] x_1 + [0] [1 0] [1] p(dfs#1) = [0] [0] p(dfs#2) = [0 0] x_1 + [1 0] x_3 + [1] [0 1] [0 0] [2] p(dfs#3) = [0 1] x_1 + [0 0] x_4 + [0 1] x_5 + [0 0] x_6 + [0] [0 1] [2 0] [2 0] [0 2] [0] p(dobfs) = [1 1] x_1 + [1 0] x_2 + [0] [1 0] [0 0] [2] p(dodfs) = [0 0] x_1 + [1] [0 1] [1] p(leaf) = [0] [2] p(nil) = [0] [0] p(node) = [1 0] x_2 + [1 0] x_3 + [2] [0 0] [0 0] [0] p(reverse) = [1 0] x_1 + [0] [0 2] [0] p(#and#) = [2] [0] p(#eq#) = [1 2] x_1 + [0] [0 0] [2] p(#equal#) = [1 0] x_2 + [1] [1 0] [0] p(appendreverse#) = [0 0] x_2 + [0] [0 2] [0] p(appendreverse#1#) = [2] [0] p(bfs#) = [1 0] x_1 + [1 1] x_2 + [0 0] x_3 + [1] [0 2] [0 0] [0 2] [0] p(bfs#1#) = [1 0] x_1 + [1 1] x_2 + [0 0] x_3 + [1] [3 1] [3 3] [3 0] [2] p(bfs#2#) = [1 1] x_1 + [0 0] x_2 + [0] [0 0] [1 0] [1] p(bfs#3#) = [1 0] x_1 + [1 1] x_2 + [1 0] x_3 + [1] [0 3] [3 3] [3 3] [0] p(bfs#4#) = [1 1] x_2 + [1 0] x_3 + [1 0] x_4 + [1 0] x_5 + [0 0] x_6 + [0 0] x_7 + [3] [0 1] [1 0] [0 2] [0 0] [0 1] [0 2] [1] p(bfs2#) = [3 3] x_1 + [3 3] x_2 + [3] [3 1] [3 2] [3] p(bfs2#1#) = [2 0] x_1 + [1 2] x_2 + [2] [0 0] [0 2] [2] p(dfs#) = [0 0] x_1 + [2 0] x_2 + [2] [2 0] [0 1] [1] p(dfs#1#) = [0 2] x_2 + [0] [0 0] [0] p(dfs#2#) = [0 2] x_1 + [0 0] x_3 + [0] [0 1] [0 1] [1] p(dfs#3#) = [0 0] x_1 + [0 0] x_3 + [0] [0 2] [0 2] [1] p(dobfs#) = [1 0] x_1 + [0 1] x_2 + [1] [2 1] [2 0] [2] p(dodfs#) = [1 1] x_1 + [1 0] x_2 + [2] [0 2] [0 0] [0] p(reverse#) = [0 2] x_1 + [0] [1 1] [0] p(c_1) = [0] [0] p(c_2) = [0] [2] p(c_3) = [2 2] x_1 + [0] [0 0] [0] p(c_4) = [1] [2] p(c_5) = [1 0] x_1 + [0] [0 0] [0] p(c_6) = [1 0] x_1 + [0] [3 0] [0] p(c_7) = [1 0] x_1 + [0] [0 2] [0] p(c_8) = [1 0] x_1 + [0] [0 0] [1] p(c_9) = [0] [0] p(c_10) = [1 0] x_1 + [0] [3 0] [3] p(c_11) = [1 0] x_1 + [0] [0 0] [0] p(c_12) = [1 0] x_1 + [0] [0 0] [1] p(c_13) = [0] [1] p(c_14) = [1 0] x_1 + [1 0] x_2 + [0] [0 0] [1 1] [0] p(c_15) = [2 0] x_1 + [0] [0 0] [2] p(c_16) = [0] [0] p(c_17) = [0] [0] p(c_18) = [1] [0] p(c_19) = [2 1] x_1 + [0] [0 0] [0] p(c_20) = [2 0] x_1 + [1] [2 0] [2] p(c_21) = [0 2] x_1 + [1] [0 0] [2] p(c_22) = [0] [0] p(c_23) = [1 0] x_1 + [0] [0 0] [0] p(c_24) = [0 0] x_1 + [1] [0 1] [0] p(c_25) = [1] [2] p(c_26) = [0] [2] p(c_27) = [2] [1] p(c_28) = [0] [2] p(c_29) = [2] [2] p(c_30) = [1] [0] p(c_31) = [1] [0] p(c_32) = [0] [0] p(c_33) = [0] [0] p(c_34) = [1] [0] p(c_35) = [1] [2] p(c_36) = [0] [1] p(c_37) = [1] [1] p(c_38) = [0] [0] p(c_39) = [1 0] x_1 + [2] [0 0] [2] p(c_40) = [2] [0] p(c_41) = [0] [2] p(c_42) = [0 2] x_1 + [1 2] x_3 + [0] [2 2] [0 1] [2] p(c_43) = [0] [0] p(c_44) = [0] [2] p(c_45) = [2] [2] p(c_46) = [0] [1] p(c_47) = [0] [0] p(c_48) = [0] [0] p(c_49) = [0] [2] p(c_50) = [1] [0] p(c_51) = [2] [0] p(c_52) = [0] [0] p(c_53) = [1] [1] p(c_54) = [0] [0] p(c_55) = [0] [0] p(c_56) = [0] [2] p(c_57) = [0 0] x_1 + [0] [0 1] [0] Following rules are strictly oriented: bfs#1#(nil(),@futurequeue,@x) = [1 1] @futurequeue + [0 0] @x + [1] [3 3] [3 0] [2] > [1 1] @futurequeue + [0 0] @x + [0] [0 0] [2 0] [2] = c_7(bfs#2#(@futurequeue,@x)) Following rules are (at-least) weakly oriented: bfs#(@queue,@futurequeue,@x) = [1 1] @futurequeue + [1 0] @queue + [0 0] @x + [1] [0 0] [0 2] [0 2] [0] >= [1 1] @futurequeue + [1 0] @queue + [1] [0 0] [0 0] [0] = c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) = [1 1] @futurequeue + [1 0] @t + [1 0] @ts + [0 0] @x + [1] [3 3] [3 0] [3 1] [3 0] [3] >= [1 1] @futurequeue + [1 0] @t + [1 0] @ts + [1] [3 3] [3 0] [3 0] [3] = c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#2#(::(@t,@ts),@x) = [1 0] @t + [1 1] @ts + [0 0] @x + [1] [0 0] [0 0] [1 0] [1] >= [1 0] @t + [1 0] @ts + [1] [0 0] [0 0] [1] = c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) = [1 1] @futurequeue + [1 0] @ts + [1] [3 3] [3 3] [6] >= [1 1] @futurequeue + [1 0] @ts + [1] [3 3] [3 0] [6] = c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [1 1] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [3] [3 3] [0 0] [0 0] [3 3] [0] >= [1 1] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [3] [0 0] [0 0] [0 0] [0 0] [0] = c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1 1] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [0 0] @x + [0 0] @y + [3] [0 1] [1 0] [0 2] [0 0] [0 1] [0 2] [1] >= [1 1] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [3] [0 0] [0 0] [0 0] [0 0] [1] = c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) = [3 3] @t + [3 3] @x + [3] [3 1] [3 2] [3] >= [3 2] @t + [3 3] @x + [3] [3 1] [2 1] [3] = c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) = [2 0] @t' + [1 2] @x + [2] [0 0] [0 2] [2] >= [2 0] @t' + [0 2] @x + [2] [0 0] [0 0] [2] = c_15(dobfs#(@t',@x)) dobfs#(@t,@x) = [1 0] @t + [0 1] @x + [1] [2 1] [2 0] [2] >= [1 0] @t + [1] [0 0] [0] = c_23(bfs#(::(@t,nil()),nil(),@x)) appendreverse(@toreverse,@sofar) = [1 0] @sofar + [1 0] @toreverse + [0] [0 1] [0 2] [0] >= [1 0] @sofar + [1 0] @toreverse + [0] [0 1] [0 2] [0] = appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) = [1 0] @a + [1 0] @as + [1 0] @sofar + [0] [0 0] [0 2] [0 1] [2] >= [1 0] @a + [1 0] @as + [1 0] @sofar + [0] [0 0] [0 2] [0 1] [1] = appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) = [1 0] @sofar + [0] [0 1] [0] >= [1 0] @sofar + [0] [0 1] [0] = @sofar bfs(@queue,@futurequeue,@x) = [1 0] @futurequeue + [1 0] @queue + [0] [0 0] [0 0] [2] >= [1 0] @futurequeue + [1 0] @queue + [0] [0 0] [0 0] [2] = bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) = [1 0] @futurequeue + [1 0] @t + [1 0] @ts + [0] [0 0] [0 0] [0 0] [2] >= [1 0] @futurequeue + [1 0] @t + [1 0] @ts + [0] [0 0] [0 0] [0 0] [2] = bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) = [1 0] @futurequeue + [0] [0 0] [2] >= [1 0] @futurequeue + [0] [0 0] [2] = bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) = [1 0] @t + [1 0] @ts + [0] [0 0] [0 0] [2] >= [1 0] @t + [1 0] @ts + [0] [0 0] [0 0] [2] = bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) = [0] [2] >= [0] [2] = leaf() bfs#3(leaf(),@futurequeue,@ts,@x) = [1 0] @futurequeue + [1 0] @ts + [0] [0 0] [0 0] [2] >= [1 0] @futurequeue + [1 0] @ts + [0] [0 0] [0 0] [2] = bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [1 0] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [2] [0 0] [0 0] [0 0] [0 0] [2] >= [1 0] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [2] [0 0] [0 0] [0 0] [0 0] [2] = bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1 0] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [2] [0 0] [0 0] [0 0] [0 0] [2] >= [1 0] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [0] [0 0] [0 0] [0 0] [0 0] [2] = bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1 0] @futurequeue + [1 0] @t1 + [1 0] @t2 + [1 0] @ts + [2] [0 0] [0 0] [0 0] [0 0] [2] >= [1 0] @t1 + [1 0] @t2 + [2] [0 0] [0 0] [0] = node(@y,@t1,@t2) dobfs(@t,@x) = [1 1] @t + [1 0] @x + [0] [1 0] [0 0] [2] >= [1 0] @t + [0] [0 0] [2] = bfs(::(@t,nil()),nil(),@x) reverse(@xs) = [1 0] @xs + [0] [0 2] [0] >= [1 0] @xs + [0] [0 2] [0] = appendreverse(@xs,nil()) ******* Step 8.b:4.a:2.b:1.b:1.b:1.b:2: MI WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) - Weak DPs: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: MI {miKind = MaximalMatrix (UpperTriangular (Multiplicity Nothing)), miDimension = 2, miUArgs = UArgs, miURules = URules, miSelector = Just any strict-rules} + Details: We apply a matrix interpretation of kind MaximalMatrix (UpperTriangular (Multiplicity Nothing)): The following argument positions are considered usable: uargs(c_5) = {1}, uargs(c_6) = {1}, uargs(c_7) = {1}, uargs(c_8) = {1}, uargs(c_10) = {1}, uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_14) = {1,2}, uargs(c_15) = {1}, uargs(c_23) = {1} Following symbols are considered usable: {appendreverse,appendreverse#1,bfs,bfs#1,bfs#2,bfs#3,bfs#4,dobfs,reverse,#and#,#eq#,#equal#,appendreverse# ,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} TcT has computed the following interpretation: p(#0) = [2] [1] p(#and) = [0 0] x_1 + [1 0] x_2 + [0] [1 0] [2 0] [0] p(#eq) = [1 2] x_2 + [0] [0 0] [0] p(#equal) = [0 0] x_2 + [0] [1 0] [0] p(#false) = [0] [0] p(#neg) = [0 3] x_1 + [0] [0 1] [1] p(#pos) = [1 0] x_1 + [0] [0 0] [0] p(#s) = [0 1] x_1 + [2] [0 0] [0] p(#true) = [0] [0] p(::) = [0 0] x_1 + [1 0] x_2 + [1] [0 1] [0 1] [0] p(appendreverse) = [2 0] x_1 + [2 0] x_2 + [2] [0 1] [0 1] [0] p(appendreverse#1) = [2 0] x_1 + [2 0] x_2 + [2] [0 1] [0 1] [0] p(bfs) = [0 0] x_1 + [0 0] x_2 + [0] [0 1] [0 1] [1] p(bfs#1) = [0 0] x_1 + [0 0] x_2 + [0] [0 1] [0 1] [1] p(bfs#2) = [0 0] x_1 + [0] [0 1] [1] p(bfs#3) = [0 0] x_1 + [0 0] x_2 + [0 0] x_3 + [0] [0 1] [0 1] [0 1] [1] p(bfs#4) = [0 0] x_2 + [0 0] x_3 + [0 0] x_4 + [0 0] x_5 + [0] [0 1] [0 1] [0 1] [0 1] [3] p(bfs2) = [1 0] x_2 + [0] [0 2] [0] p(bfs2#1) = [0 2] x_1 + [0] [0 1] [0] p(dfs) = [1] [0] p(dfs#1) = [0 0] x_2 + [0] [1 1] [2] p(dfs#2) = [2 2] x_3 + [2 0] x_4 + [1] [0 0] [0 2] [0] p(dfs#3) = [0 0] x_4 + [1] [0 1] [1] p(dobfs) = [1 0] x_1 + [1 1] x_2 + [2] [0 1] [0 2] [1] p(dodfs) = [0 0] x_1 + [0 1] x_2 + [0] [1 2] [0 1] [0] p(leaf) = [0] [1] p(nil) = [0] [0] p(node) = [0 0] x_2 + [0 0] x_3 + [0] [0 1] [0 1] [3] p(reverse) = [2 2] x_1 + [2] [0 1] [0] p(#and#) = [0 0] x_2 + [1] [2 0] [0] p(#eq#) = [2] [0] p(#equal#) = [1 0] x_1 + [1] [0 0] [0] p(appendreverse#) = [0] [0] p(appendreverse#1#) = [1] [2] p(bfs#) = [0 1] x_1 + [1 1] x_2 + [0 0] x_3 + [1] [0 0] [0 0] [1 1] [0] p(bfs#1#) = [0 1] x_1 + [1 1] x_2 + [0 0] x_3 + [0] [0 0] [0 0] [0 1] [3] p(bfs#2#) = [1 1] x_1 + [0 0] x_2 + [0] [0 1] [2 0] [3] p(bfs#3#) = [0 1] x_1 + [1 1] x_2 + [0 1] x_3 + [0 0] x_4 + [0] [0 0] [1 2] [2 0] [0 1] [1] p(bfs#4#) = [1 1] x_2 + [0 1] x_3 + [0 1] x_4 + [0 1] x_5 + [0 0] x_6 + [3] [2 2] [0 0] [2 1] [2 0] [0 1] [3] p(bfs2#) = [2 2] x_1 + [2 3] x_2 + [3] [0 1] [1 0] [2] p(bfs2#1#) = [0 1] x_1 + [1 1] x_2 + [1] [2 0] [0 2] [1] p(dfs#) = [0 0] x_2 + [0] [0 2] [1] p(dfs#1#) = [0] [1] p(dfs#2#) = [2 2] x_1 + [2 2] x_3 + [0 0] x_4 + [0] [2 0] [2 0] [0 1] [0] p(dfs#3#) = [0 0] x_1 + [0 0] x_6 + [2] [0 2] [0 2] [0] p(dobfs#) = [0 1] x_1 + [1 0] x_2 + [1] [0 0] [0 1] [0] p(dodfs#) = [0 0] x_1 + [0] [0 2] [0] p(reverse#) = [0] [0] p(c_1) = [0 0] x_1 + [0] [0 1] [1] p(c_2) = [0 0] x_1 + [0] [0 2] [2] p(c_3) = [0 2] x_1 + [0] [0 1] [0] p(c_4) = [0] [0] p(c_5) = [1 0] x_1 + [0] [0 0] [0] p(c_6) = [1 0] x_1 + [0] [0 0] [2] p(c_7) = [1 0] x_1 + [0] [0 0] [3] p(c_8) = [1 0] x_1 + [0] [1 0] [0] p(c_9) = [0] [0] p(c_10) = [1 0] x_1 + [0] [0 0] [0] p(c_11) = [1 0] x_1 + [0] [0 0] [0] p(c_12) = [1 0] x_1 + [0] [0 0] [3] p(c_13) = [0] [0] p(c_14) = [1 0] x_1 + [1 0] x_2 + [0] [0 0] [1 0] [1] p(c_15) = [1 1] x_1 + [0] [0 0] [1] p(c_16) = [1 0] x_1 + [1] [1 0] [0] p(c_17) = [1 0] x_1 + [0] [2 0] [1] p(c_18) = [2] [1] p(c_19) = [0 1] x_1 + [1] [0 0] [0] p(c_20) = [1 2] x_1 + [1] [1 2] [1] p(c_21) = [0] [2] p(c_22) = [0] [0] p(c_23) = [1 0] x_1 + [0] [0 0] [0] p(c_24) = [0 2] x_1 + [0] [1 2] [2] p(c_25) = [0] [2] p(c_26) = [0] [0] p(c_27) = [0] [0] p(c_28) = [0] [2] p(c_29) = [0] [0] p(c_30) = [0] [0] p(c_31) = [0] [0] p(c_32) = [2] [0] p(c_33) = [0] [0] p(c_34) = [0] [0] p(c_35) = [1] [2] p(c_36) = [0] [1] p(c_37) = [1] [0] p(c_38) = [0] [0] p(c_39) = [0 1] x_1 + [2] [2 1] [1] p(c_40) = [0] [2] p(c_41) = [0] [0] p(c_42) = [0 0] x_3 + [2] [0 1] [1] p(c_43) = [2] [0] p(c_44) = [2] [0] p(c_45) = [0] [2] p(c_46) = [1] [1] p(c_47) = [0] [1] p(c_48) = [0] [0] p(c_49) = [0] [0] p(c_50) = [2] [2] p(c_51) = [1] [0] p(c_52) = [0] [0] p(c_53) = [2] [1] p(c_54) = [0] [0] p(c_55) = [0] [0] p(c_56) = [0] [1] p(c_57) = [1 0] x_1 + [0 0] x_4 + [0] [0 0] [0 1] [0] Following rules are strictly oriented: bfs#(@queue,@futurequeue,@x) = [1 1] @futurequeue + [0 1] @queue + [0 0] @x + [1] [0 0] [0 0] [1 1] [0] > [1 1] @futurequeue + [0 1] @queue + [0] [0 0] [0 0] [0] = c_5(bfs#1#(@queue,@futurequeue,@x)) Following rules are (at-least) weakly oriented: bfs#1#(::(@t,@ts),@futurequeue,@x) = [1 1] @futurequeue + [0 1] @t + [0 1] @ts + [0 0] @x + [0] [0 0] [0 0] [0 0] [0 1] [3] >= [1 1] @futurequeue + [0 1] @t + [0 1] @ts + [0] [0 0] [0 0] [0 0] [2] = c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) = [1 1] @futurequeue + [0 0] @x + [0] [0 0] [0 1] [3] >= [1 1] @futurequeue + [0] [0 0] [3] = c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) = [0 1] @t + [1 1] @ts + [0 0] @x + [1] [0 1] [0 1] [2 0] [3] >= [0 1] @t + [0 1] @ts + [1] [0 1] [0 1] [1] = c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) = [1 1] @futurequeue + [0 1] @ts + [0 0] @x + [1] [1 2] [2 0] [0 1] [1] >= [1 1] @futurequeue + [0 1] @ts + [1] [0 0] [0 0] [0] = c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [1 1] @futurequeue + [0 1] @t1 + [0 1] @t2 + [0 1] @ts + [0 0] @x + [3] [1 2] [0 0] [0 0] [2 0] [0 1] [1] >= [1 1] @futurequeue + [0 1] @t1 + [0 1] @t2 + [0 1] @ts + [3] [0 0] [0 0] [0 0] [0 0] [0] = c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [1 1] @futurequeue + [0 1] @t1 + [0 1] @t2 + [0 1] @ts + [0 0] @x + [3] [2 2] [0 0] [2 1] [2 0] [0 1] [3] >= [1 1] @futurequeue + [0 1] @t1 + [0 1] @t2 + [0 1] @ts + [3] [0 0] [0 0] [0 0] [0 0] [3] = c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) = [2 2] @t + [2 3] @x + [3] [0 1] [1 0] [2] >= [0 2] @t + [2 3] @x + [3] [0 1] [1 0] [2] = c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) = [0 1] @t' + [1 1] @x + [1] [2 0] [0 2] [1] >= [0 1] @t' + [1 1] @x + [1] [0 0] [0 0] [1] = c_15(dobfs#(@t',@x)) dobfs#(@t,@x) = [0 1] @t + [1 0] @x + [1] [0 0] [0 1] [0] >= [0 1] @t + [1] [0 0] [0] = c_23(bfs#(::(@t,nil()),nil(),@x)) appendreverse(@toreverse,@sofar) = [2 0] @sofar + [2 0] @toreverse + [2] [0 1] [0 1] [0] >= [2 0] @sofar + [2 0] @toreverse + [2] [0 1] [0 1] [0] = appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) = [0 0] @a + [2 0] @as + [2 0] @sofar + [4] [0 1] [0 1] [0 1] [0] >= [0 0] @a + [2 0] @as + [2 0] @sofar + [4] [0 1] [0 1] [0 1] [0] = appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) = [2 0] @sofar + [2] [0 1] [0] >= [1 0] @sofar + [0] [0 1] [0] = @sofar bfs(@queue,@futurequeue,@x) = [0 0] @futurequeue + [0 0] @queue + [0] [0 1] [0 1] [1] >= [0 0] @futurequeue + [0 0] @queue + [0] [0 1] [0 1] [1] = bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) = [0 0] @futurequeue + [0 0] @t + [0 0] @ts + [0] [0 1] [0 1] [0 1] [1] >= [0 0] @futurequeue + [0 0] @t + [0 0] @ts + [0] [0 1] [0 1] [0 1] [1] = bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) = [0 0] @futurequeue + [0] [0 1] [1] >= [0 0] @futurequeue + [0] [0 1] [1] = bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) = [0 0] @t + [0 0] @ts + [0] [0 1] [0 1] [1] >= [0 0] @t + [0 0] @ts + [0] [0 1] [0 1] [1] = bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) = [0] [1] >= [0] [1] = leaf() bfs#3(leaf(),@futurequeue,@ts,@x) = [0 0] @futurequeue + [0 0] @ts + [0] [0 1] [0 1] [2] >= [0 0] @futurequeue + [0 0] @ts + [0] [0 1] [0 1] [1] = bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) = [0 0] @futurequeue + [0 0] @t1 + [0 0] @t2 + [0 0] @ts + [0] [0 1] [0 1] [0 1] [0 1] [4] >= [0 0] @futurequeue + [0 0] @t1 + [0 0] @t2 + [0 0] @ts + [0] [0 1] [0 1] [0 1] [0 1] [3] = bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) = [0 0] @futurequeue + [0 0] @t1 + [0 0] @t2 + [0 0] @ts + [0] [0 1] [0 1] [0 1] [0 1] [3] >= [0 0] @futurequeue + [0 0] @t1 + [0 0] @t2 + [0 0] @ts + [0] [0 1] [0 1] [0 1] [0 1] [1] = bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) = [0 0] @futurequeue + [0 0] @t1 + [0 0] @t2 + [0 0] @ts + [0] [0 1] [0 1] [0 1] [0 1] [3] >= [0 0] @t1 + [0 0] @t2 + [0] [0 1] [0 1] [3] = node(@y,@t1,@t2) dobfs(@t,@x) = [1 0] @t + [1 1] @x + [2] [0 1] [0 2] [1] >= [0 0] @t + [0] [0 1] [1] = bfs(::(@t,nil()),nil(),@x) reverse(@xs) = [2 2] @xs + [2] [0 1] [0] >= [2 0] @xs + [2] [0 1] [0] = appendreverse(@xs,nil()) ******* Step 8.b:4.a:2.b:1.b:1.b:1.b:3: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). *** Step 8.b:4.b:1: PredecessorEstimation WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {8} by application of Pre({8}) = {1,2}. Here rules are labelled as follows: 1: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) 2: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) 3: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) 4: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) 5: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) 6: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) 7: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) 8: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) 9: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) 10: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) 11: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) 12: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) 13: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) 14: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) 15: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) *** Step 8.b:4.b:2: PredecessorEstimation WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {2} by application of Pre({2}) = {1}. Here rules are labelled as follows: 1: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) 2: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) 3: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) 4: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) 5: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) 6: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) 7: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) 8: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) 9: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) 10: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) 11: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) 12: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) 13: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) 14: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) 15: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) *** Step 8.b:4.b:3: PredecessorEstimation WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1} by application of Pre({1}) = {}. Here rules are labelled as follows: 1: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) 2: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) 3: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) 4: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) 5: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) 6: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) 7: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) 8: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) 9: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) 10: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) 11: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) 12: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) 13: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) 14: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) 15: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) *** Step 8.b:4.b:4: RemoveWeakSuffixes WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak DPs: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y)) bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):2 2:S:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)):4 -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):3 3:S:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):1 4:S:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):5 5:S:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):1 6:W:bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) -->_1 bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)):8 -->_1 bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)):7 7:W:bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) -->_1 bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)):11 -->_1 bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)):10 8:W:bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) -->_1 bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)):9 9:W:bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):6 10:W:bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):6 11:W:bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) -->_1 bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts ,::(@t2,::(@t1,@futurequeue)) ,@x)):12 12:W:bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):6 13:W:bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) -->_2 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15 -->_1 bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)):14 14:W:bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) -->_1 dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)):15 15:W:dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) -->_1 bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)):6 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 13: bfs2#(@t,@x) -> c_14(bfs2#1#(dobfs(@t,@x),@x),dobfs#(@t,@x)) 14: bfs2#1#(@t',@x) -> c_15(dobfs#(@t',@x)) 15: dobfs#(@t,@x) -> c_23(bfs#(::(@t,nil()),nil(),@x)) 6: bfs#(@queue,@futurequeue,@x) -> c_5(bfs#1#(@queue,@futurequeue,@x)) 12: bfs#4#(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> c_12(bfs#(@ts,::(@t2,::(@t1,@futurequeue)),@x)) 11: bfs#3#(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> c_11(bfs#4#(#equal(@x,@y) ,@futurequeue ,@t1 ,@t2 ,@ts ,@x ,@y)) 7: bfs#1#(::(@t,@ts),@futurequeue,@x) -> c_6(bfs#3#(@t,@futurequeue,@ts,@x)) 10: bfs#3#(leaf(),@futurequeue,@ts,@x) -> c_10(bfs#(@ts,@futurequeue,@x)) 9: bfs#2#(::(@t,@ts),@x) -> c_8(bfs#(reverse(::(@t,@ts)),nil(),@x)) 8: bfs#1#(nil(),@futurequeue,@x) -> c_7(bfs#2#(@futurequeue,@x)) *** Step 8.b:4.b:5: UsableRules WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) appendreverse(@toreverse,@sofar) -> appendreverse#1(@toreverse,@sofar) appendreverse#1(::(@a,@as),@sofar) -> appendreverse(@as,::(@a,@sofar)) appendreverse#1(nil(),@sofar) -> @sofar bfs(@queue,@futurequeue,@x) -> bfs#1(@queue,@futurequeue,@x) bfs#1(::(@t,@ts),@futurequeue,@x) -> bfs#3(@t,@futurequeue,@ts,@x) bfs#1(nil(),@futurequeue,@x) -> bfs#2(@futurequeue,@x) bfs#2(::(@t,@ts),@x) -> bfs(reverse(::(@t,@ts)),nil(),@x) bfs#2(nil(),@x) -> leaf() bfs#3(leaf(),@futurequeue,@ts,@x) -> bfs(@ts,@futurequeue,@x) bfs#3(node(@y,@t1,@t2),@futurequeue,@ts,@x) -> bfs#4(#equal(@x,@y),@futurequeue,@t1,@t2,@ts,@x,@y) bfs#4(#false(),@futurequeue,@t1,@t2,@ts,@x,@y) -> bfs(@ts,::(@t2,::(@t1,@futurequeue)),@x) bfs#4(#true(),@futurequeue,@t1,@t2,@ts,@x,@y) -> node(@y,@t1,@t2) dobfs(@t,@x) -> bfs(::(@t,nil()),nil(),@x) reverse(@xs) -> appendreverse(@xs,nil()) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) *** Step 8.b:4.b:6: PredecessorEstimationCP WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 5: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) The strictly oriented rules are moved into the weak component. **** Step 8.b:4.b:6.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_16) = {1}, uargs(c_17) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_21) = {1} Following symbols are considered usable: {#and,#eq,#equal,#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2# ,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#,reverse#} TcT has computed the following interpretation: p(#0) = [0] p(#and) = [1] x2 + [0] p(#eq) = [2] p(#equal) = [1] x1 + [3] p(#false) = [2] p(#neg) = [1] x1 + [0] p(#pos) = [1] p(#s) = [1] x1 + [1] p(#true) = [2] p(::) = [1] x1 + [1] x2 + [0] p(appendreverse) = [2] p(appendreverse#1) = [1] x1 + [1] p(bfs) = [1] x2 + [1] x3 + [1] p(bfs#1) = [1] x2 + [4] x3 + [4] p(bfs#2) = [4] x2 + [0] p(bfs#3) = [4] x2 + [2] x4 + [2] p(bfs#4) = [4] x1 + [1] x2 + [1] x4 + [1] x5 + [1] x6 + [1] p(bfs2) = [0] p(bfs2#1) = [1] x2 + [1] p(dfs) = [1] x2 + [0] p(dfs#1) = [1] p(dfs#2) = [4] x1 + [4] x2 + [1] x4 + [1] p(dfs#3) = [1] x2 + [1] x6 + [1] p(dobfs) = [1] x1 + [4] p(dodfs) = [1] x1 + [4] x2 + [1] p(leaf) = [1] p(nil) = [0] p(node) = [1] x1 + [1] x2 + [1] x3 + [3] p(reverse) = [2] x1 + [4] p(#and#) = [2] x1 + [1] x2 + [4] p(#eq#) = [1] x1 + [1] x2 + [0] p(#equal#) = [1] x1 + [2] x2 + [0] p(appendreverse#) = [1] x2 + [0] p(appendreverse#1#) = [2] x1 + [0] p(bfs#) = [1] x2 + [1] p(bfs#1#) = [1] x3 + [1] p(bfs#2#) = [1] x1 + [0] p(bfs#3#) = [4] x1 + [2] x4 + [0] p(bfs#4#) = [1] x2 + [1] x3 + [4] x4 + [4] x6 + [1] x7 + [1] p(bfs2#) = [1] x1 + [1] x2 + [0] p(bfs2#1#) = [1] x2 + [2] p(dfs#) = [4] x1 + [6] x2 + [4] p(dfs#1#) = [4] x1 + [6] x2 + [0] p(dfs#2#) = [4] x1 + [4] x3 + [6] x4 + [0] p(dfs#3#) = [4] x1 + [4] x3 + [4] x4 + [4] x5 + [6] x6 + [0] p(dobfs#) = [1] p(dodfs#) = [1] x2 + [2] p(reverse#) = [2] x1 + [0] p(c_1) = [1] p(c_2) = [1] x1 + [1] p(c_3) = [1] x1 + [1] p(c_4) = [1] p(c_5) = [2] x1 + [2] p(c_6) = [1] p(c_7) = [1] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [2] x1 + [1] p(c_12) = [2] p(c_13) = [2] p(c_14) = [4] x2 + [2] p(c_15) = [4] p(c_16) = [1] x1 + [4] p(c_17) = [1] x1 + [0] p(c_18) = [2] p(c_19) = [1] x1 + [0] p(c_20) = [1] x1 + [0] p(c_21) = [1] x1 + [2] p(c_22) = [0] p(c_23) = [1] p(c_24) = [1] x1 + [0] p(c_25) = [4] p(c_26) = [0] p(c_27) = [2] p(c_28) = [0] p(c_29) = [0] p(c_30) = [1] p(c_31) = [0] p(c_32) = [1] p(c_33) = [0] p(c_34) = [0] p(c_35) = [0] p(c_36) = [0] p(c_37) = [2] p(c_38) = [1] p(c_39) = [2] x1 + [0] p(c_40) = [2] p(c_41) = [1] x1 + [0] p(c_42) = [1] x1 + [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [0] p(c_46) = [0] p(c_47) = [1] p(c_48) = [0] p(c_49) = [0] p(c_50) = [0] p(c_51) = [1] p(c_52) = [4] p(c_53) = [2] p(c_54) = [0] p(c_55) = [0] p(c_56) = [4] p(c_57) = [2] x3 + [0] Following rules are strictly oriented: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) = [4] @t1 + [4] @t2 + [4] @ts + [6] @x + [8] > [4] @t1 + [4] @t2 + [4] @ts + [6] @x + [6] = c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) Following rules are (at-least) weakly oriented: dfs#(@queue,@x) = [4] @queue + [6] @x + [4] >= [4] @queue + [6] @x + [4] = c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) = [4] @t + [4] @ts + [6] @x + [0] >= [4] @t + [4] @ts + [6] @x + [0] = c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) = [4] @ts + [6] @x + [4] >= [4] @ts + [6] @x + [4] = c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) = [4] @a + [4] @t1 + [4] @t2 + [4] @ts + [6] @x + [12] >= [4] @a + [4] @t1 + [4] @t2 + [4] @ts + [6] @x + [12] = c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) #and(#false(),#false()) = [2] >= [2] = #false() #and(#false(),#true()) = [2] >= [2] = #false() #and(#true(),#false()) = [2] >= [2] = #false() #and(#true(),#true()) = [2] >= [2] = #true() #eq(#0(),#0()) = [2] >= [2] = #true() #eq(#0(),#neg(@y)) = [2] >= [2] = #false() #eq(#0(),#pos(@y)) = [2] >= [2] = #false() #eq(#0(),#s(@y)) = [2] >= [2] = #false() #eq(#neg(@x),#0()) = [2] >= [2] = #false() #eq(#neg(@x),#neg(@y)) = [2] >= [2] = #eq(@x,@y) #eq(#neg(@x),#pos(@y)) = [2] >= [2] = #false() #eq(#pos(@x),#0()) = [2] >= [2] = #false() #eq(#pos(@x),#neg(@y)) = [2] >= [2] = #false() #eq(#pos(@x),#pos(@y)) = [2] >= [2] = #eq(@x,@y) #eq(#s(@x),#0()) = [2] >= [2] = #false() #eq(#s(@x),#s(@y)) = [2] >= [2] = #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) = [2] >= [2] = #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) = [2] >= [2] = #false() #eq(::(@x_1,@x_2),nil()) = [2] >= [2] = #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) = [2] >= [2] = #false() #eq(leaf(),::(@y_1,@y_2)) = [2] >= [2] = #false() #eq(leaf(),leaf()) = [2] >= [2] = #true() #eq(leaf(),nil()) = [2] >= [2] = #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) = [2] >= [2] = #false() #eq(nil(),::(@y_1,@y_2)) = [2] >= [2] = #false() #eq(nil(),leaf()) = [2] >= [2] = #false() #eq(nil(),nil()) = [2] >= [2] = #true() #eq(nil(),node(@y_1,@y_2,@y_3)) = [2] >= [2] = #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) = [2] >= [2] = #false() #eq(node(@x_1,@x_2,@x_3),leaf()) = [2] >= [2] = #false() #eq(node(@x_1,@x_2,@x_3),nil()) = [2] >= [2] = #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) = [2] >= [2] = #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) = [1] @x + [3] >= [2] = #eq(@x,@y) **** Step 8.b:4.b:6.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) - Weak DPs: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () **** Step 8.b:4.b:6.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) - Weak DPs: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 4: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) Consider the set of all dependency pairs 1: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) 2: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) 3: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) 4: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) 5: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) SPACE(?,?)on application of the dependency pairs {4} These cover all (indirect) predecessors of dependency pairs {4,5} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. ***** Step 8.b:4.b:6.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) - Weak DPs: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_16) = {1}, uargs(c_17) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_21) = {1} Following symbols are considered usable: {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs# ,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#,reverse#} TcT has computed the following interpretation: p(#0) = [2] p(#and) = [1] x2 + [2] p(#eq) = [2] x2 + [0] p(#equal) = [0] p(#false) = [0] p(#neg) = [4] p(#pos) = [4] p(#s) = [0] p(#true) = [4] p(::) = [1] x1 + [1] x2 + [0] p(appendreverse) = [1] p(appendreverse#1) = [2] p(bfs) = [2] p(bfs#1) = [4] p(bfs#2) = [1] x2 + [0] p(bfs#3) = [1] x3 + [0] p(bfs#4) = [2] x5 + [1] x6 + [2] p(bfs2) = [0] p(bfs2#1) = [0] p(dfs) = [4] x1 + [4] p(dfs#1) = [1] p(dfs#2) = [2] p(dfs#3) = [1] x1 + [4] x3 + [1] x5 + [1] p(dobfs) = [2] x1 + [0] p(dodfs) = [0] p(leaf) = [0] p(nil) = [0] p(node) = [1] x2 + [1] x3 + [1] p(reverse) = [0] p(#and#) = [1] x1 + [1] p(#eq#) = [2] x2 + [0] p(#equal#) = [2] x2 + [0] p(appendreverse#) = [0] p(appendreverse#1#) = [1] x1 + [1] x2 + [0] p(bfs#) = [1] p(bfs#1#) = [2] x2 + [2] x3 + [1] p(bfs#2#) = [1] x1 + [1] x2 + [1] p(bfs#3#) = [1] x4 + [0] p(bfs#4#) = [2] x2 + [2] x4 + [1] x5 + [1] x6 + [1] p(bfs2#) = [4] x1 + [2] p(bfs2#1#) = [0] p(dfs#) = [4] x1 + [2] x2 + [0] p(dfs#1#) = [4] x1 + [2] x2 + [0] p(dfs#2#) = [4] x1 + [4] x3 + [2] x4 + [0] p(dfs#3#) = [4] x3 + [4] x4 + [4] x5 + [2] x6 + [0] p(dobfs#) = [1] x2 + [0] p(dodfs#) = [1] x1 + [0] p(reverse#) = [2] p(c_1) = [1] x1 + [2] p(c_2) = [4] x1 + [2] p(c_3) = [1] x1 + [0] p(c_4) = [0] p(c_5) = [1] p(c_6) = [1] x1 + [2] p(c_7) = [4] p(c_8) = [1] x1 + [0] p(c_9) = [2] p(c_10) = [1] x1 + [2] p(c_11) = [1] x1 + [0] p(c_12) = [1] p(c_13) = [1] p(c_14) = [1] x2 + [0] p(c_15) = [0] p(c_16) = [1] x1 + [0] p(c_17) = [1] x1 + [0] p(c_18) = [0] p(c_19) = [1] x1 + [0] p(c_20) = [1] x1 + [0] p(c_21) = [1] x1 + [0] p(c_22) = [0] p(c_23) = [2] p(c_24) = [0] p(c_25) = [0] p(c_26) = [2] p(c_27) = [0] p(c_28) = [1] p(c_29) = [1] p(c_30) = [0] p(c_31) = [0] p(c_32) = [2] p(c_33) = [2] p(c_34) = [2] p(c_35) = [1] x1 + [0] p(c_36) = [2] p(c_37) = [1] p(c_38) = [0] p(c_39) = [0] p(c_40) = [0] p(c_41) = [0] p(c_42) = [4] p(c_43) = [1] p(c_44) = [0] p(c_45) = [2] p(c_46) = [0] p(c_47) = [2] p(c_48) = [0] p(c_49) = [0] p(c_50) = [1] p(c_51) = [1] p(c_52) = [0] p(c_53) = [0] p(c_54) = [0] p(c_55) = [4] p(c_56) = [0] p(c_57) = [4] x2 + [2] x3 + [4] x5 + [2] Following rules are strictly oriented: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) = [4] @t1 + [4] @t2 + [4] @ts + [2] @x + [4] > [4] @t1 + [4] @t2 + [4] @ts + [2] @x + [0] = c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) Following rules are (at-least) weakly oriented: dfs#(@queue,@x) = [4] @queue + [2] @x + [0] >= [4] @queue + [2] @x + [0] = c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) = [4] @t + [4] @ts + [2] @x + [0] >= [4] @t + [4] @ts + [2] @x + [0] = c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) = [4] @ts + [2] @x + [0] >= [4] @ts + [2] @x + [0] = c_19(dfs#(@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) = [4] @t1 + [4] @t2 + [4] @ts + [2] @x + [0] >= [4] @t1 + [4] @t2 + [4] @ts + [2] @x + [0] = c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) ***** Step 8.b:4.b:6.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) - Weak DPs: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ***** Step 8.b:4.b:6.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) - Weak DPs: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 3: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) The strictly oriented rules are moved into the weak component. ****** Step 8.b:4.b:6.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) - Weak DPs: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_16) = {1}, uargs(c_17) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_21) = {1} Following symbols are considered usable: {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs# ,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#,reverse#} TcT has computed the following interpretation: p(#0) = [0] p(#and) = [0] p(#eq) = [0] p(#equal) = [0] p(#false) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [1] x1 + [0] p(#s) = [1] x1 + [0] p(#true) = [0] p(::) = [1] x1 + [1] x2 + [0] p(appendreverse) = [0] p(appendreverse#1) = [0] p(bfs) = [0] p(bfs#1) = [0] p(bfs#2) = [0] p(bfs#3) = [0] p(bfs#4) = [0] p(bfs2) = [0] p(bfs2#1) = [0] p(dfs) = [0] p(dfs#1) = [0] p(dfs#2) = [0] p(dfs#3) = [0] p(dobfs) = [0] p(dodfs) = [0] p(leaf) = [4] p(nil) = [0] p(node) = [1] x2 + [1] x3 + [6] p(reverse) = [0] p(#and#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(appendreverse#) = [0] p(appendreverse#1#) = [0] p(bfs#) = [0] p(bfs#1#) = [0] p(bfs#2#) = [1] x2 + [0] p(bfs#3#) = [1] x2 + [1] p(bfs#4#) = [4] x2 + [4] x4 + [0] p(bfs2#) = [2] x1 + [1] p(bfs2#1#) = [1] p(dfs#) = [1] x1 + [6] p(dfs#1#) = [1] x1 + [6] p(dfs#2#) = [1] x1 + [1] x3 + [6] p(dfs#3#) = [1] x3 + [1] x4 + [1] x5 + [6] p(dobfs#) = [1] x1 + [1] x2 + [1] p(dodfs#) = [2] p(reverse#) = [1] p(c_1) = [1] p(c_2) = [0] p(c_3) = [0] p(c_4) = [1] p(c_5) = [1] x1 + [2] p(c_6) = [1] p(c_7) = [4] x1 + [1] p(c_8) = [1] x1 + [0] p(c_9) = [1] p(c_10) = [1] x1 + [0] p(c_11) = [1] p(c_12) = [2] x1 + [1] p(c_13) = [1] p(c_14) = [1] x2 + [0] p(c_15) = [0] p(c_16) = [1] x1 + [0] p(c_17) = [1] x1 + [0] p(c_18) = [1] p(c_19) = [1] x1 + [3] p(c_20) = [1] x1 + [6] p(c_21) = [1] x1 + [0] p(c_22) = [0] p(c_23) = [1] p(c_24) = [2] x1 + [1] p(c_25) = [4] p(c_26) = [0] p(c_27) = [4] p(c_28) = [1] p(c_29) = [0] p(c_30) = [4] p(c_31) = [1] p(c_32) = [1] p(c_33) = [0] p(c_34) = [1] p(c_35) = [1] p(c_36) = [4] p(c_37) = [0] p(c_38) = [1] p(c_39) = [0] p(c_40) = [0] p(c_41) = [1] x1 + [1] p(c_42) = [2] x1 + [4] x2 + [4] x3 + [1] p(c_43) = [4] p(c_44) = [0] p(c_45) = [1] p(c_46) = [4] p(c_47) = [1] p(c_48) = [4] p(c_49) = [2] p(c_50) = [1] p(c_51) = [0] p(c_52) = [0] p(c_53) = [1] p(c_54) = [0] p(c_55) = [2] p(c_56) = [2] p(c_57) = [1] x3 + [1] x4 + [2] x5 + [1] Following rules are strictly oriented: dfs#2#(leaf(),@t,@ts,@x) = [1] @ts + [10] > [1] @ts + [9] = c_19(dfs#(@ts,@x)) Following rules are (at-least) weakly oriented: dfs#(@queue,@x) = [1] @queue + [6] >= [1] @queue + [6] = c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) = [1] @t + [1] @ts + [6] >= [1] @t + [1] @ts + [6] = c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) = [1] @t1 + [1] @t2 + [1] @ts + [12] >= [1] @t1 + [1] @t2 + [1] @ts + [12] = c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) = [1] @t1 + [1] @t2 + [1] @ts + [6] >= [1] @t1 + [1] @t2 + [1] @ts + [6] = c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) ****** Step 8.b:4.b:6.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) - Weak DPs: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ****** Step 8.b:4.b:6.b:1.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) - Weak DPs: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 2: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) Consider the set of all dependency pairs 1: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) 2: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) 3: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) 4: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) 5: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) SPACE(?,?)on application of the dependency pairs {2} These cover all (indirect) predecessors of dependency pairs {1,2,3,4,5} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. ******* Step 8.b:4.b:6.b:1.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) - Weak DPs: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_16) = {1}, uargs(c_17) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_21) = {1} Following symbols are considered usable: {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs#,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs# ,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs#,reverse#} TcT has computed the following interpretation: p(#0) = [4] p(#and) = [4] x1 + [6] p(#eq) = [3] x2 + [0] p(#equal) = [0] p(#false) = [1] p(#neg) = [4] p(#pos) = [1] x1 + [2] p(#s) = [1] x1 + [2] p(#true) = [0] p(::) = [1] x1 + [1] x2 + [0] p(appendreverse) = [0] p(appendreverse#1) = [0] p(bfs) = [0] p(bfs#1) = [0] p(bfs#2) = [0] p(bfs#3) = [0] p(bfs#4) = [0] p(bfs2) = [0] p(bfs2#1) = [0] p(dfs) = [0] p(dfs#1) = [0] p(dfs#2) = [1] x1 + [1] x4 + [2] p(dfs#3) = [1] x4 + [1] x6 + [0] p(dobfs) = [2] x1 + [2] x2 + [0] p(dodfs) = [4] p(leaf) = [2] p(nil) = [0] p(node) = [1] x1 + [1] x2 + [1] x3 + [3] p(reverse) = [0] p(#and#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(appendreverse#) = [0] p(appendreverse#1#) = [0] p(bfs#) = [0] p(bfs#1#) = [0] p(bfs#2#) = [0] p(bfs#3#) = [0] p(bfs#4#) = [0] p(bfs2#) = [0] p(bfs2#1#) = [0] p(dfs#) = [4] x1 + [4] p(dfs#1#) = [4] x1 + [4] p(dfs#2#) = [4] x1 + [4] x3 + [0] p(dfs#3#) = [4] x3 + [4] x4 + [4] x5 + [6] p(dobfs#) = [0] p(dodfs#) = [0] p(reverse#) = [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) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [1] x1 + [0] p(c_17) = [1] x1 + [0] p(c_18) = [1] p(c_19) = [1] x1 + [4] p(c_20) = [1] x1 + [6] p(c_21) = [1] x1 + [2] p(c_22) = [2] p(c_23) = [1] x1 + [4] p(c_24) = [1] p(c_25) = [0] p(c_26) = [1] p(c_27) = [1] p(c_28) = [1] p(c_29) = [0] p(c_30) = [4] p(c_31) = [0] p(c_32) = [0] p(c_33) = [0] p(c_34) = [4] p(c_35) = [1] p(c_36) = [0] p(c_37) = [4] p(c_38) = [1] p(c_39) = [1] p(c_40) = [1] p(c_41) = [1] x1 + [4] p(c_42) = [1] p(c_43) = [0] p(c_44) = [1] p(c_45) = [0] p(c_46) = [0] p(c_47) = [1] p(c_48) = [1] p(c_49) = [1] p(c_50) = [1] p(c_51) = [1] p(c_52) = [1] p(c_53) = [1] p(c_54) = [2] p(c_55) = [1] p(c_56) = [4] p(c_57) = [2] x3 + [1] Following rules are strictly oriented: dfs#1#(::(@t,@ts),@x) = [4] @t + [4] @ts + [4] > [4] @t + [4] @ts + [0] = c_17(dfs#2#(@t,@t,@ts,@x)) Following rules are (at-least) weakly oriented: dfs#(@queue,@x) = [4] @queue + [4] >= [4] @queue + [4] = c_16(dfs#1#(@queue,@x)) dfs#2#(leaf(),@t,@ts,@x) = [4] @ts + [8] >= [4] @ts + [8] = c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) = [4] @a + [4] @t1 + [4] @t2 + [4] @ts + [12] >= [4] @t1 + [4] @t2 + [4] @ts + [12] = c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) = [4] @t1 + [4] @t2 + [4] @ts + [6] >= [4] @t1 + [4] @t2 + [4] @ts + [6] = c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) ******* Step 8.b:4.b:6.b:1.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) - Weak DPs: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ******* Step 8.b:4.b:6.b:1.b:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) -->_1 dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)):2 2:W:dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) -->_1 dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)):4 -->_1 dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)):3 3:W:dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):1 4:W:dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) -->_1 dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)):5 5:W:dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) -->_1 dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: dfs#(@queue,@x) -> c_16(dfs#1#(@queue,@x)) 5: dfs#3#(#false(),@t,@t1,@t2,@ts,@x) -> c_21(dfs#(::(@t1,::(@t2,@ts)),@x)) 4: dfs#2#(node(@a,@t1,@t2),@t,@ts,@x) -> c_20(dfs#3#(#equal(@a,@x),@t,@t1,@t2,@ts,@x)) 2: dfs#1#(::(@t,@ts),@x) -> c_17(dfs#2#(@t,@t,@ts,@x)) 3: dfs#2#(leaf(),@t,@ts,@x) -> c_19(dfs#(@ts,@x)) ******* Step 8.b:4.b:6.b:1.b:1.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),leaf()) -> #false() #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),node(@y_1,@y_2,@y_3)) -> #false() #eq(leaf(),::(@y_1,@y_2)) -> #false() #eq(leaf(),leaf()) -> #true() #eq(leaf(),nil()) -> #false() #eq(leaf(),node(@y_1,@y_2,@y_3)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),leaf()) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),node(@y_1,@y_2,@y_3)) -> #false() #eq(node(@x_1,@x_2,@x_3),::(@y_1,@y_2)) -> #false() #eq(node(@x_1,@x_2,@x_3),leaf()) -> #false() #eq(node(@x_1,@x_2,@x_3),nil()) -> #false() #eq(node(@x_1,@x_2,@x_3),node(@y_1,@y_2,@y_3)) -> #and(#eq(@x_1,@y_1),#and(#eq(@x_2,@y_2),#eq(@x_3,@y_3))) #equal(@x,@y) -> #eq(@x,@y) - Signature: {#and/2,#eq/2,#equal/2,appendreverse/2,appendreverse#1/2,bfs/3,bfs#1/3,bfs#2/2,bfs#3/4,bfs#4/7,bfs2/2 ,bfs2#1/2,dfs/2,dfs#1/2,dfs#2/4,dfs#3/6,dobfs/2,dodfs/2,reverse/1,#and#/2,#eq#/2,#equal#/2,appendreverse#/2 ,appendreverse#1#/2,bfs#/3,bfs#1#/3,bfs#2#/2,bfs#3#/4,bfs#4#/7,bfs2#/2,bfs2#1#/2,dfs#/2,dfs#1#/2,dfs#2#/4 ,dfs#3#/6,dobfs#/2,dodfs#/2,reverse#/1} / {#0/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,leaf/0,nil/0,node/3 ,c_1/1,c_2/1,c_3/1,c_4/0,c_5/1,c_6/1,c_7/1,c_8/1,c_9/0,c_10/1,c_11/1,c_12/1,c_13/0,c_14/2,c_15/1,c_16/1 ,c_17/1,c_18/0,c_19/1,c_20/1,c_21/1,c_22/0,c_23/1,c_24/1,c_25/1,c_26/0,c_27/0,c_28/0,c_29/0,c_30/0,c_31/0 ,c_32/0,c_33/0,c_34/0,c_35/1,c_36/0,c_37/0,c_38/0,c_39/1,c_40/0,c_41/1,c_42/3,c_43/0,c_44/0,c_45/0,c_46/0 ,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/0,c_55/0,c_56/0,c_57/5} - Obligation: innermost runtime complexity wrt. defined symbols {#and#,#eq#,#equal#,appendreverse#,appendreverse#1#,bfs# ,bfs#1#,bfs#2#,bfs#3#,bfs#4#,bfs2#,bfs2#1#,dfs#,dfs#1#,dfs#2#,dfs#3#,dobfs#,dodfs# ,reverse#} and constructors {#0,#false,#neg,#pos,#s,#true,::,leaf,nil,node} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). WORST_CASE(?,O(n^3))