* 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))