* Step 1: Sum WORST_CASE(?,O(n^2)) + Considered Problem: - Strict TRS: #equal(@x,@y) -> #eq(@x,@y) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) eratos(@l) -> eratos#1(@l) eratos#1(::(@x,@xs)) -> ::(@x,eratos(filter(@x,@xs))) eratos#1(nil()) -> nil() filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2} / {#0/0,#divByZero/0,#false/0 ,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add,#and,#div,#eq,#equal,#mult,#natdiv,#natmult,#natsub ,#pred,#sub,#succ,*,-,div,eratos,eratos#1,filter,filter#1,filter#2,filter#3,mod} and constructors {#0 ,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: Sum {left = someStrategy, right = someStrategy} + Details: () * Step 2: DependencyPairs WORST_CASE(?,O(n^2)) + Considered Problem: - Strict TRS: #equal(@x,@y) -> #eq(@x,@y) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) eratos(@l) -> eratos#1(@l) eratos#1(::(@x,@xs)) -> ::(@x,eratos(filter(@x,@xs))) eratos#1(nil()) -> nil() filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2} / {#0/0,#divByZero/0,#false/0 ,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add,#and,#div,#eq,#equal,#mult,#natdiv,#natmult,#natsub ,#pred,#sub,#succ,*,-,div,eratos,eratos#1,filter,filter#1,filter#2,filter#3,mod} and constructors {#0 ,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs #equal#(@x,@y) -> c_1(#eq#(@x,@y)) *#(@x,@y) -> c_2(#mult#(@x,@y)) -#(@x,@y) -> c_3(#sub#(@x,@y)) div#(@x,@y) -> c_4(#div#(@x,@y)) eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) eratos#1#(nil()) -> c_7() filter#(@p,@l) -> c_8(filter#1#(@l,@p)) filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)) filter#1#(nil(),@p) -> c_10() filter#2#(@xs',@p,@x) -> c_11(filter#3#(#equal(mod(@x,@p),#0()),@x,@xs') ,#equal#(mod(@x,@p),#0()) ,mod#(@x,@p)) filter#3#(#false(),@x,@xs') -> c_12() filter#3#(#true(),@x,@xs') -> c_13() mod#(@x,@y) -> c_14(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) Weak DPs #add#(#0(),@y) -> c_15() #add#(#neg(#s(#0())),@y) -> c_16(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_17(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_20() #and#(#false(),#true()) -> c_21() #and#(#true(),#false()) -> c_22() #and#(#true(),#true()) -> c_23() #div#(#0(),#0()) -> c_24() #div#(#0(),#neg(@y)) -> c_25() #div#(#0(),#pos(@y)) -> c_26() #div#(#neg(@x),#0()) -> c_27() #div#(#neg(@x),#neg(@y)) -> c_28(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_29(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_30() #div#(#pos(@x),#neg(@y)) -> c_31(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_32(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_33() #eq#(#0(),#neg(@y)) -> c_34() #eq#(#0(),#pos(@y)) -> c_35() #eq#(#0(),#s(@y)) -> c_36() #eq#(#neg(@x),#0()) -> c_37() #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_39() #eq#(#pos(@x),#0()) -> c_40() #eq#(#pos(@x),#neg(@y)) -> c_41() #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_43() #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#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),nil()) -> c_46() #eq#(nil(),::(@y_1,@y_2)) -> c_47() #eq#(nil(),nil()) -> c_48() #mult#(#0(),#0()) -> c_49() #mult#(#0(),#neg(@y)) -> c_50() #mult#(#0(),#pos(@y)) -> c_51() #mult#(#neg(@x),#0()) -> c_52() #mult#(#neg(@x),#neg(@y)) -> c_53(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_54(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_55() #mult#(#pos(@x),#neg(@y)) -> c_56(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_57(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_58() #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_60() #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_62() #natsub#(#s(@x),#s(@y)) -> c_63(#natsub#(@x,@y)) #pred#(#0()) -> c_64() #pred#(#neg(#s(@x))) -> c_65() #pred#(#pos(#s(#0()))) -> c_66() #pred#(#pos(#s(#s(@x)))) -> c_67() #sub#(@x,#0()) -> c_68() #sub#(@x,#neg(@y)) -> c_69(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_70(#add#(@x,#neg(@y))) #succ#(#0()) -> c_71() #succ#(#neg(#s(#0()))) -> c_72() #succ#(#neg(#s(#s(@x)))) -> c_73() #succ#(#pos(#s(@x))) -> c_74() and mark the set of starting terms. * Step 3: UsableRules WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: #equal#(@x,@y) -> c_1(#eq#(@x,@y)) *#(@x,@y) -> c_2(#mult#(@x,@y)) -#(@x,@y) -> c_3(#sub#(@x,@y)) div#(@x,@y) -> c_4(#div#(@x,@y)) eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) eratos#1#(nil()) -> c_7() filter#(@p,@l) -> c_8(filter#1#(@l,@p)) filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)) filter#1#(nil(),@p) -> c_10() filter#2#(@xs',@p,@x) -> c_11(filter#3#(#equal(mod(@x,@p),#0()),@x,@xs') ,#equal#(mod(@x,@p),#0()) ,mod#(@x,@p)) filter#3#(#false(),@x,@xs') -> c_12() filter#3#(#true(),@x,@xs') -> c_13() mod#(@x,@y) -> c_14(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) - Weak DPs: #add#(#0(),@y) -> c_15() #add#(#neg(#s(#0())),@y) -> c_16(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_17(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_20() #and#(#false(),#true()) -> c_21() #and#(#true(),#false()) -> c_22() #and#(#true(),#true()) -> c_23() #div#(#0(),#0()) -> c_24() #div#(#0(),#neg(@y)) -> c_25() #div#(#0(),#pos(@y)) -> c_26() #div#(#neg(@x),#0()) -> c_27() #div#(#neg(@x),#neg(@y)) -> c_28(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_29(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_30() #div#(#pos(@x),#neg(@y)) -> c_31(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_32(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_33() #eq#(#0(),#neg(@y)) -> c_34() #eq#(#0(),#pos(@y)) -> c_35() #eq#(#0(),#s(@y)) -> c_36() #eq#(#neg(@x),#0()) -> c_37() #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_39() #eq#(#pos(@x),#0()) -> c_40() #eq#(#pos(@x),#neg(@y)) -> c_41() #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_43() #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#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),nil()) -> c_46() #eq#(nil(),::(@y_1,@y_2)) -> c_47() #eq#(nil(),nil()) -> c_48() #mult#(#0(),#0()) -> c_49() #mult#(#0(),#neg(@y)) -> c_50() #mult#(#0(),#pos(@y)) -> c_51() #mult#(#neg(@x),#0()) -> c_52() #mult#(#neg(@x),#neg(@y)) -> c_53(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_54(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_55() #mult#(#pos(@x),#neg(@y)) -> c_56(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_57(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_58() #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_60() #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_62() #natsub#(#s(@x),#s(@y)) -> c_63(#natsub#(@x,@y)) #pred#(#0()) -> c_64() #pred#(#neg(#s(@x))) -> c_65() #pred#(#pos(#s(#0()))) -> c_66() #pred#(#pos(#s(#s(@x)))) -> c_67() #sub#(@x,#0()) -> c_68() #sub#(@x,#neg(@y)) -> c_69(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_70(#add#(@x,#neg(@y))) #succ#(#0()) -> c_71() #succ#(#neg(#s(#0()))) -> c_72() #succ#(#neg(#s(#s(@x)))) -> c_73() #succ#(#pos(#s(@x))) -> c_74() - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) eratos(@l) -> eratos#1(@l) eratos#1(::(@x,@xs)) -> ::(@x,eratos(filter(@x,@xs))) eratos#1(nil()) -> nil() filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/2,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) #add#(#0(),@y) -> c_15() #add#(#neg(#s(#0())),@y) -> c_16(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_17(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_20() #and#(#false(),#true()) -> c_21() #and#(#true(),#false()) -> c_22() #and#(#true(),#true()) -> c_23() #div#(#0(),#0()) -> c_24() #div#(#0(),#neg(@y)) -> c_25() #div#(#0(),#pos(@y)) -> c_26() #div#(#neg(@x),#0()) -> c_27() #div#(#neg(@x),#neg(@y)) -> c_28(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_29(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_30() #div#(#pos(@x),#neg(@y)) -> c_31(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_32(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_33() #eq#(#0(),#neg(@y)) -> c_34() #eq#(#0(),#pos(@y)) -> c_35() #eq#(#0(),#s(@y)) -> c_36() #eq#(#neg(@x),#0()) -> c_37() #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_39() #eq#(#pos(@x),#0()) -> c_40() #eq#(#pos(@x),#neg(@y)) -> c_41() #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_43() #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#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),nil()) -> c_46() #eq#(nil(),::(@y_1,@y_2)) -> c_47() #eq#(nil(),nil()) -> c_48() #equal#(@x,@y) -> c_1(#eq#(@x,@y)) #mult#(#0(),#0()) -> c_49() #mult#(#0(),#neg(@y)) -> c_50() #mult#(#0(),#pos(@y)) -> c_51() #mult#(#neg(@x),#0()) -> c_52() #mult#(#neg(@x),#neg(@y)) -> c_53(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_54(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_55() #mult#(#pos(@x),#neg(@y)) -> c_56(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_57(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_58() #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_60() #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_62() #natsub#(#s(@x),#s(@y)) -> c_63(#natsub#(@x,@y)) #pred#(#0()) -> c_64() #pred#(#neg(#s(@x))) -> c_65() #pred#(#pos(#s(#0()))) -> c_66() #pred#(#pos(#s(#s(@x)))) -> c_67() #sub#(@x,#0()) -> c_68() #sub#(@x,#neg(@y)) -> c_69(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_70(#add#(@x,#neg(@y))) #succ#(#0()) -> c_71() #succ#(#neg(#s(#0()))) -> c_72() #succ#(#neg(#s(#s(@x)))) -> c_73() #succ#(#pos(#s(@x))) -> c_74() *#(@x,@y) -> c_2(#mult#(@x,@y)) -#(@x,@y) -> c_3(#sub#(@x,@y)) div#(@x,@y) -> c_4(#div#(@x,@y)) eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) eratos#1#(nil()) -> c_7() filter#(@p,@l) -> c_8(filter#1#(@l,@p)) filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)) filter#1#(nil(),@p) -> c_10() filter#2#(@xs',@p,@x) -> c_11(filter#3#(#equal(mod(@x,@p),#0()),@x,@xs') ,#equal#(mod(@x,@p),#0()) ,mod#(@x,@p)) filter#3#(#false(),@x,@xs') -> c_12() filter#3#(#true(),@x,@xs') -> c_13() mod#(@x,@y) -> c_14(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) * Step 4: PredecessorEstimation WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: #equal#(@x,@y) -> c_1(#eq#(@x,@y)) *#(@x,@y) -> c_2(#mult#(@x,@y)) -#(@x,@y) -> c_3(#sub#(@x,@y)) div#(@x,@y) -> c_4(#div#(@x,@y)) eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) eratos#1#(nil()) -> c_7() filter#(@p,@l) -> c_8(filter#1#(@l,@p)) filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)) filter#1#(nil(),@p) -> c_10() filter#2#(@xs',@p,@x) -> c_11(filter#3#(#equal(mod(@x,@p),#0()),@x,@xs') ,#equal#(mod(@x,@p),#0()) ,mod#(@x,@p)) filter#3#(#false(),@x,@xs') -> c_12() filter#3#(#true(),@x,@xs') -> c_13() mod#(@x,@y) -> c_14(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) - Weak DPs: #add#(#0(),@y) -> c_15() #add#(#neg(#s(#0())),@y) -> c_16(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_17(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_20() #and#(#false(),#true()) -> c_21() #and#(#true(),#false()) -> c_22() #and#(#true(),#true()) -> c_23() #div#(#0(),#0()) -> c_24() #div#(#0(),#neg(@y)) -> c_25() #div#(#0(),#pos(@y)) -> c_26() #div#(#neg(@x),#0()) -> c_27() #div#(#neg(@x),#neg(@y)) -> c_28(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_29(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_30() #div#(#pos(@x),#neg(@y)) -> c_31(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_32(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_33() #eq#(#0(),#neg(@y)) -> c_34() #eq#(#0(),#pos(@y)) -> c_35() #eq#(#0(),#s(@y)) -> c_36() #eq#(#neg(@x),#0()) -> c_37() #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_39() #eq#(#pos(@x),#0()) -> c_40() #eq#(#pos(@x),#neg(@y)) -> c_41() #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_43() #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#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),nil()) -> c_46() #eq#(nil(),::(@y_1,@y_2)) -> c_47() #eq#(nil(),nil()) -> c_48() #mult#(#0(),#0()) -> c_49() #mult#(#0(),#neg(@y)) -> c_50() #mult#(#0(),#pos(@y)) -> c_51() #mult#(#neg(@x),#0()) -> c_52() #mult#(#neg(@x),#neg(@y)) -> c_53(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_54(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_55() #mult#(#pos(@x),#neg(@y)) -> c_56(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_57(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_58() #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_60() #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_62() #natsub#(#s(@x),#s(@y)) -> c_63(#natsub#(@x,@y)) #pred#(#0()) -> c_64() #pred#(#neg(#s(@x))) -> c_65() #pred#(#pos(#s(#0()))) -> c_66() #pred#(#pos(#s(#s(@x)))) -> c_67() #sub#(@x,#0()) -> c_68() #sub#(@x,#neg(@y)) -> c_69(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_70(#add#(@x,#neg(@y))) #succ#(#0()) -> c_71() #succ#(#neg(#s(#0()))) -> c_72() #succ#(#neg(#s(#s(@x)))) -> c_73() #succ#(#pos(#s(@x))) -> c_74() - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/2,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,2,3,4,7,10,12,13} by application of Pre({1,2,3,4,7,10,12,13}) = {5,8,11,14}. Here rules are labelled as follows: 1: #equal#(@x,@y) -> c_1(#eq#(@x,@y)) 2: *#(@x,@y) -> c_2(#mult#(@x,@y)) 3: -#(@x,@y) -> c_3(#sub#(@x,@y)) 4: div#(@x,@y) -> c_4(#div#(@x,@y)) 5: eratos#(@l) -> c_5(eratos#1#(@l)) 6: eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) 7: eratos#1#(nil()) -> c_7() 8: filter#(@p,@l) -> c_8(filter#1#(@l,@p)) 9: filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)) 10: filter#1#(nil(),@p) -> c_10() 11: filter#2#(@xs',@p,@x) -> c_11(filter#3#(#equal(mod(@x,@p),#0()),@x,@xs') ,#equal#(mod(@x,@p),#0()) ,mod#(@x,@p)) 12: filter#3#(#false(),@x,@xs') -> c_12() 13: filter#3#(#true(),@x,@xs') -> c_13() 14: mod#(@x,@y) -> c_14(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) 15: #add#(#0(),@y) -> c_15() 16: #add#(#neg(#s(#0())),@y) -> c_16(#pred#(@y)) 17: #add#(#neg(#s(#s(@x))),@y) -> c_17(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 18: #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)) 19: #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 20: #and#(#false(),#false()) -> c_20() 21: #and#(#false(),#true()) -> c_21() 22: #and#(#true(),#false()) -> c_22() 23: #and#(#true(),#true()) -> c_23() 24: #div#(#0(),#0()) -> c_24() 25: #div#(#0(),#neg(@y)) -> c_25() 26: #div#(#0(),#pos(@y)) -> c_26() 27: #div#(#neg(@x),#0()) -> c_27() 28: #div#(#neg(@x),#neg(@y)) -> c_28(#natdiv#(@x,@y)) 29: #div#(#neg(@x),#pos(@y)) -> c_29(#natdiv#(@x,@y)) 30: #div#(#pos(@x),#0()) -> c_30() 31: #div#(#pos(@x),#neg(@y)) -> c_31(#natdiv#(@x,@y)) 32: #div#(#pos(@x),#pos(@y)) -> c_32(#natdiv#(@x,@y)) 33: #eq#(#0(),#0()) -> c_33() 34: #eq#(#0(),#neg(@y)) -> c_34() 35: #eq#(#0(),#pos(@y)) -> c_35() 36: #eq#(#0(),#s(@y)) -> c_36() 37: #eq#(#neg(@x),#0()) -> c_37() 38: #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)) 39: #eq#(#neg(@x),#pos(@y)) -> c_39() 40: #eq#(#pos(@x),#0()) -> c_40() 41: #eq#(#pos(@x),#neg(@y)) -> c_41() 42: #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)) 43: #eq#(#s(@x),#0()) -> c_43() 44: #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)) 45: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 46: #eq#(::(@x_1,@x_2),nil()) -> c_46() 47: #eq#(nil(),::(@y_1,@y_2)) -> c_47() 48: #eq#(nil(),nil()) -> c_48() 49: #mult#(#0(),#0()) -> c_49() 50: #mult#(#0(),#neg(@y)) -> c_50() 51: #mult#(#0(),#pos(@y)) -> c_51() 52: #mult#(#neg(@x),#0()) -> c_52() 53: #mult#(#neg(@x),#neg(@y)) -> c_53(#natmult#(@x,@y)) 54: #mult#(#neg(@x),#pos(@y)) -> c_54(#natmult#(@x,@y)) 55: #mult#(#pos(@x),#0()) -> c_55() 56: #mult#(#pos(@x),#neg(@y)) -> c_56(#natmult#(@x,@y)) 57: #mult#(#pos(@x),#pos(@y)) -> c_57(#natmult#(@x,@y)) 58: #natdiv#(#0(),#0()) -> c_58() 59: #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) 60: #natmult#(#0(),@y) -> c_60() 61: #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) 62: #natsub#(@x,#0()) -> c_62() 63: #natsub#(#s(@x),#s(@y)) -> c_63(#natsub#(@x,@y)) 64: #pred#(#0()) -> c_64() 65: #pred#(#neg(#s(@x))) -> c_65() 66: #pred#(#pos(#s(#0()))) -> c_66() 67: #pred#(#pos(#s(#s(@x)))) -> c_67() 68: #sub#(@x,#0()) -> c_68() 69: #sub#(@x,#neg(@y)) -> c_69(#add#(@x,#pos(@y))) 70: #sub#(@x,#pos(@y)) -> c_70(#add#(@x,#neg(@y))) 71: #succ#(#0()) -> c_71() 72: #succ#(#neg(#s(#0()))) -> c_72() 73: #succ#(#neg(#s(#s(@x)))) -> c_73() 74: #succ#(#pos(#s(@x))) -> c_74() * Step 5: PredecessorEstimation WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#(@p,@l) -> c_8(filter#1#(@l,@p)) filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)) filter#2#(@xs',@p,@x) -> c_11(filter#3#(#equal(mod(@x,@p),#0()),@x,@xs') ,#equal#(mod(@x,@p),#0()) ,mod#(@x,@p)) mod#(@x,@y) -> c_14(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) - Weak DPs: #add#(#0(),@y) -> c_15() #add#(#neg(#s(#0())),@y) -> c_16(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_17(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_20() #and#(#false(),#true()) -> c_21() #and#(#true(),#false()) -> c_22() #and#(#true(),#true()) -> c_23() #div#(#0(),#0()) -> c_24() #div#(#0(),#neg(@y)) -> c_25() #div#(#0(),#pos(@y)) -> c_26() #div#(#neg(@x),#0()) -> c_27() #div#(#neg(@x),#neg(@y)) -> c_28(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_29(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_30() #div#(#pos(@x),#neg(@y)) -> c_31(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_32(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_33() #eq#(#0(),#neg(@y)) -> c_34() #eq#(#0(),#pos(@y)) -> c_35() #eq#(#0(),#s(@y)) -> c_36() #eq#(#neg(@x),#0()) -> c_37() #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_39() #eq#(#pos(@x),#0()) -> c_40() #eq#(#pos(@x),#neg(@y)) -> c_41() #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_43() #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#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),nil()) -> c_46() #eq#(nil(),::(@y_1,@y_2)) -> c_47() #eq#(nil(),nil()) -> c_48() #equal#(@x,@y) -> c_1(#eq#(@x,@y)) #mult#(#0(),#0()) -> c_49() #mult#(#0(),#neg(@y)) -> c_50() #mult#(#0(),#pos(@y)) -> c_51() #mult#(#neg(@x),#0()) -> c_52() #mult#(#neg(@x),#neg(@y)) -> c_53(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_54(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_55() #mult#(#pos(@x),#neg(@y)) -> c_56(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_57(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_58() #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_60() #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_62() #natsub#(#s(@x),#s(@y)) -> c_63(#natsub#(@x,@y)) #pred#(#0()) -> c_64() #pred#(#neg(#s(@x))) -> c_65() #pred#(#pos(#s(#0()))) -> c_66() #pred#(#pos(#s(#s(@x)))) -> c_67() #sub#(@x,#0()) -> c_68() #sub#(@x,#neg(@y)) -> c_69(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_70(#add#(@x,#neg(@y))) #succ#(#0()) -> c_71() #succ#(#neg(#s(#0()))) -> c_72() #succ#(#neg(#s(#s(@x)))) -> c_73() #succ#(#pos(#s(@x))) -> c_74() *#(@x,@y) -> c_2(#mult#(@x,@y)) -#(@x,@y) -> c_3(#sub#(@x,@y)) div#(@x,@y) -> c_4(#div#(@x,@y)) eratos#1#(nil()) -> c_7() filter#1#(nil(),@p) -> c_10() filter#3#(#false(),@x,@xs') -> c_12() filter#3#(#true(),@x,@xs') -> c_13() - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/2,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {6} by application of Pre({6}) = {5}. Here rules are labelled as follows: 1: eratos#(@l) -> c_5(eratos#1#(@l)) 2: eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) 3: filter#(@p,@l) -> c_8(filter#1#(@l,@p)) 4: filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)) 5: filter#2#(@xs',@p,@x) -> c_11(filter#3#(#equal(mod(@x,@p),#0()),@x,@xs') ,#equal#(mod(@x,@p),#0()) ,mod#(@x,@p)) 6: mod#(@x,@y) -> c_14(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) 7: #add#(#0(),@y) -> c_15() 8: #add#(#neg(#s(#0())),@y) -> c_16(#pred#(@y)) 9: #add#(#neg(#s(#s(@x))),@y) -> c_17(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 10: #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)) 11: #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 12: #and#(#false(),#false()) -> c_20() 13: #and#(#false(),#true()) -> c_21() 14: #and#(#true(),#false()) -> c_22() 15: #and#(#true(),#true()) -> c_23() 16: #div#(#0(),#0()) -> c_24() 17: #div#(#0(),#neg(@y)) -> c_25() 18: #div#(#0(),#pos(@y)) -> c_26() 19: #div#(#neg(@x),#0()) -> c_27() 20: #div#(#neg(@x),#neg(@y)) -> c_28(#natdiv#(@x,@y)) 21: #div#(#neg(@x),#pos(@y)) -> c_29(#natdiv#(@x,@y)) 22: #div#(#pos(@x),#0()) -> c_30() 23: #div#(#pos(@x),#neg(@y)) -> c_31(#natdiv#(@x,@y)) 24: #div#(#pos(@x),#pos(@y)) -> c_32(#natdiv#(@x,@y)) 25: #eq#(#0(),#0()) -> c_33() 26: #eq#(#0(),#neg(@y)) -> c_34() 27: #eq#(#0(),#pos(@y)) -> c_35() 28: #eq#(#0(),#s(@y)) -> c_36() 29: #eq#(#neg(@x),#0()) -> c_37() 30: #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)) 31: #eq#(#neg(@x),#pos(@y)) -> c_39() 32: #eq#(#pos(@x),#0()) -> c_40() 33: #eq#(#pos(@x),#neg(@y)) -> c_41() 34: #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)) 35: #eq#(#s(@x),#0()) -> c_43() 36: #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)) 37: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 38: #eq#(::(@x_1,@x_2),nil()) -> c_46() 39: #eq#(nil(),::(@y_1,@y_2)) -> c_47() 40: #eq#(nil(),nil()) -> c_48() 41: #equal#(@x,@y) -> c_1(#eq#(@x,@y)) 42: #mult#(#0(),#0()) -> c_49() 43: #mult#(#0(),#neg(@y)) -> c_50() 44: #mult#(#0(),#pos(@y)) -> c_51() 45: #mult#(#neg(@x),#0()) -> c_52() 46: #mult#(#neg(@x),#neg(@y)) -> c_53(#natmult#(@x,@y)) 47: #mult#(#neg(@x),#pos(@y)) -> c_54(#natmult#(@x,@y)) 48: #mult#(#pos(@x),#0()) -> c_55() 49: #mult#(#pos(@x),#neg(@y)) -> c_56(#natmult#(@x,@y)) 50: #mult#(#pos(@x),#pos(@y)) -> c_57(#natmult#(@x,@y)) 51: #natdiv#(#0(),#0()) -> c_58() 52: #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) 53: #natmult#(#0(),@y) -> c_60() 54: #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) 55: #natsub#(@x,#0()) -> c_62() 56: #natsub#(#s(@x),#s(@y)) -> c_63(#natsub#(@x,@y)) 57: #pred#(#0()) -> c_64() 58: #pred#(#neg(#s(@x))) -> c_65() 59: #pred#(#pos(#s(#0()))) -> c_66() 60: #pred#(#pos(#s(#s(@x)))) -> c_67() 61: #sub#(@x,#0()) -> c_68() 62: #sub#(@x,#neg(@y)) -> c_69(#add#(@x,#pos(@y))) 63: #sub#(@x,#pos(@y)) -> c_70(#add#(@x,#neg(@y))) 64: #succ#(#0()) -> c_71() 65: #succ#(#neg(#s(#0()))) -> c_72() 66: #succ#(#neg(#s(#s(@x)))) -> c_73() 67: #succ#(#pos(#s(@x))) -> c_74() 68: *#(@x,@y) -> c_2(#mult#(@x,@y)) 69: -#(@x,@y) -> c_3(#sub#(@x,@y)) 70: div#(@x,@y) -> c_4(#div#(@x,@y)) 71: eratos#1#(nil()) -> c_7() 72: filter#1#(nil(),@p) -> c_10() 73: filter#3#(#false(),@x,@xs') -> c_12() 74: filter#3#(#true(),@x,@xs') -> c_13() * Step 6: PredecessorEstimation WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#(@p,@l) -> c_8(filter#1#(@l,@p)) filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)) filter#2#(@xs',@p,@x) -> c_11(filter#3#(#equal(mod(@x,@p),#0()),@x,@xs') ,#equal#(mod(@x,@p),#0()) ,mod#(@x,@p)) - Weak DPs: #add#(#0(),@y) -> c_15() #add#(#neg(#s(#0())),@y) -> c_16(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_17(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_20() #and#(#false(),#true()) -> c_21() #and#(#true(),#false()) -> c_22() #and#(#true(),#true()) -> c_23() #div#(#0(),#0()) -> c_24() #div#(#0(),#neg(@y)) -> c_25() #div#(#0(),#pos(@y)) -> c_26() #div#(#neg(@x),#0()) -> c_27() #div#(#neg(@x),#neg(@y)) -> c_28(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_29(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_30() #div#(#pos(@x),#neg(@y)) -> c_31(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_32(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_33() #eq#(#0(),#neg(@y)) -> c_34() #eq#(#0(),#pos(@y)) -> c_35() #eq#(#0(),#s(@y)) -> c_36() #eq#(#neg(@x),#0()) -> c_37() #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_39() #eq#(#pos(@x),#0()) -> c_40() #eq#(#pos(@x),#neg(@y)) -> c_41() #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_43() #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#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),nil()) -> c_46() #eq#(nil(),::(@y_1,@y_2)) -> c_47() #eq#(nil(),nil()) -> c_48() #equal#(@x,@y) -> c_1(#eq#(@x,@y)) #mult#(#0(),#0()) -> c_49() #mult#(#0(),#neg(@y)) -> c_50() #mult#(#0(),#pos(@y)) -> c_51() #mult#(#neg(@x),#0()) -> c_52() #mult#(#neg(@x),#neg(@y)) -> c_53(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_54(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_55() #mult#(#pos(@x),#neg(@y)) -> c_56(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_57(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_58() #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_60() #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_62() #natsub#(#s(@x),#s(@y)) -> c_63(#natsub#(@x,@y)) #pred#(#0()) -> c_64() #pred#(#neg(#s(@x))) -> c_65() #pred#(#pos(#s(#0()))) -> c_66() #pred#(#pos(#s(#s(@x)))) -> c_67() #sub#(@x,#0()) -> c_68() #sub#(@x,#neg(@y)) -> c_69(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_70(#add#(@x,#neg(@y))) #succ#(#0()) -> c_71() #succ#(#neg(#s(#0()))) -> c_72() #succ#(#neg(#s(#s(@x)))) -> c_73() #succ#(#pos(#s(@x))) -> c_74() *#(@x,@y) -> c_2(#mult#(@x,@y)) -#(@x,@y) -> c_3(#sub#(@x,@y)) div#(@x,@y) -> c_4(#div#(@x,@y)) eratos#1#(nil()) -> c_7() filter#1#(nil(),@p) -> c_10() filter#3#(#false(),@x,@xs') -> c_12() filter#3#(#true(),@x,@xs') -> c_13() mod#(@x,@y) -> c_14(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/2,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {5} by application of Pre({5}) = {4}. Here rules are labelled as follows: 1: eratos#(@l) -> c_5(eratos#1#(@l)) 2: eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) 3: filter#(@p,@l) -> c_8(filter#1#(@l,@p)) 4: filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)) 5: filter#2#(@xs',@p,@x) -> c_11(filter#3#(#equal(mod(@x,@p),#0()),@x,@xs') ,#equal#(mod(@x,@p),#0()) ,mod#(@x,@p)) 6: #add#(#0(),@y) -> c_15() 7: #add#(#neg(#s(#0())),@y) -> c_16(#pred#(@y)) 8: #add#(#neg(#s(#s(@x))),@y) -> c_17(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 9: #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)) 10: #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 11: #and#(#false(),#false()) -> c_20() 12: #and#(#false(),#true()) -> c_21() 13: #and#(#true(),#false()) -> c_22() 14: #and#(#true(),#true()) -> c_23() 15: #div#(#0(),#0()) -> c_24() 16: #div#(#0(),#neg(@y)) -> c_25() 17: #div#(#0(),#pos(@y)) -> c_26() 18: #div#(#neg(@x),#0()) -> c_27() 19: #div#(#neg(@x),#neg(@y)) -> c_28(#natdiv#(@x,@y)) 20: #div#(#neg(@x),#pos(@y)) -> c_29(#natdiv#(@x,@y)) 21: #div#(#pos(@x),#0()) -> c_30() 22: #div#(#pos(@x),#neg(@y)) -> c_31(#natdiv#(@x,@y)) 23: #div#(#pos(@x),#pos(@y)) -> c_32(#natdiv#(@x,@y)) 24: #eq#(#0(),#0()) -> c_33() 25: #eq#(#0(),#neg(@y)) -> c_34() 26: #eq#(#0(),#pos(@y)) -> c_35() 27: #eq#(#0(),#s(@y)) -> c_36() 28: #eq#(#neg(@x),#0()) -> c_37() 29: #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)) 30: #eq#(#neg(@x),#pos(@y)) -> c_39() 31: #eq#(#pos(@x),#0()) -> c_40() 32: #eq#(#pos(@x),#neg(@y)) -> c_41() 33: #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)) 34: #eq#(#s(@x),#0()) -> c_43() 35: #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)) 36: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 37: #eq#(::(@x_1,@x_2),nil()) -> c_46() 38: #eq#(nil(),::(@y_1,@y_2)) -> c_47() 39: #eq#(nil(),nil()) -> c_48() 40: #equal#(@x,@y) -> c_1(#eq#(@x,@y)) 41: #mult#(#0(),#0()) -> c_49() 42: #mult#(#0(),#neg(@y)) -> c_50() 43: #mult#(#0(),#pos(@y)) -> c_51() 44: #mult#(#neg(@x),#0()) -> c_52() 45: #mult#(#neg(@x),#neg(@y)) -> c_53(#natmult#(@x,@y)) 46: #mult#(#neg(@x),#pos(@y)) -> c_54(#natmult#(@x,@y)) 47: #mult#(#pos(@x),#0()) -> c_55() 48: #mult#(#pos(@x),#neg(@y)) -> c_56(#natmult#(@x,@y)) 49: #mult#(#pos(@x),#pos(@y)) -> c_57(#natmult#(@x,@y)) 50: #natdiv#(#0(),#0()) -> c_58() 51: #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) 52: #natmult#(#0(),@y) -> c_60() 53: #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) 54: #natsub#(@x,#0()) -> c_62() 55: #natsub#(#s(@x),#s(@y)) -> c_63(#natsub#(@x,@y)) 56: #pred#(#0()) -> c_64() 57: #pred#(#neg(#s(@x))) -> c_65() 58: #pred#(#pos(#s(#0()))) -> c_66() 59: #pred#(#pos(#s(#s(@x)))) -> c_67() 60: #sub#(@x,#0()) -> c_68() 61: #sub#(@x,#neg(@y)) -> c_69(#add#(@x,#pos(@y))) 62: #sub#(@x,#pos(@y)) -> c_70(#add#(@x,#neg(@y))) 63: #succ#(#0()) -> c_71() 64: #succ#(#neg(#s(#0()))) -> c_72() 65: #succ#(#neg(#s(#s(@x)))) -> c_73() 66: #succ#(#pos(#s(@x))) -> c_74() 67: *#(@x,@y) -> c_2(#mult#(@x,@y)) 68: -#(@x,@y) -> c_3(#sub#(@x,@y)) 69: div#(@x,@y) -> c_4(#div#(@x,@y)) 70: eratos#1#(nil()) -> c_7() 71: filter#1#(nil(),@p) -> c_10() 72: filter#3#(#false(),@x,@xs') -> c_12() 73: filter#3#(#true(),@x,@xs') -> c_13() 74: mod#(@x,@y) -> c_14(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) * Step 7: RemoveWeakSuffixes WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#(@p,@l) -> c_8(filter#1#(@l,@p)) filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)) - Weak DPs: #add#(#0(),@y) -> c_15() #add#(#neg(#s(#0())),@y) -> c_16(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_17(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_20() #and#(#false(),#true()) -> c_21() #and#(#true(),#false()) -> c_22() #and#(#true(),#true()) -> c_23() #div#(#0(),#0()) -> c_24() #div#(#0(),#neg(@y)) -> c_25() #div#(#0(),#pos(@y)) -> c_26() #div#(#neg(@x),#0()) -> c_27() #div#(#neg(@x),#neg(@y)) -> c_28(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_29(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_30() #div#(#pos(@x),#neg(@y)) -> c_31(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_32(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_33() #eq#(#0(),#neg(@y)) -> c_34() #eq#(#0(),#pos(@y)) -> c_35() #eq#(#0(),#s(@y)) -> c_36() #eq#(#neg(@x),#0()) -> c_37() #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_39() #eq#(#pos(@x),#0()) -> c_40() #eq#(#pos(@x),#neg(@y)) -> c_41() #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_43() #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#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),nil()) -> c_46() #eq#(nil(),::(@y_1,@y_2)) -> c_47() #eq#(nil(),nil()) -> c_48() #equal#(@x,@y) -> c_1(#eq#(@x,@y)) #mult#(#0(),#0()) -> c_49() #mult#(#0(),#neg(@y)) -> c_50() #mult#(#0(),#pos(@y)) -> c_51() #mult#(#neg(@x),#0()) -> c_52() #mult#(#neg(@x),#neg(@y)) -> c_53(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_54(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_55() #mult#(#pos(@x),#neg(@y)) -> c_56(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_57(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_58() #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_60() #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_62() #natsub#(#s(@x),#s(@y)) -> c_63(#natsub#(@x,@y)) #pred#(#0()) -> c_64() #pred#(#neg(#s(@x))) -> c_65() #pred#(#pos(#s(#0()))) -> c_66() #pred#(#pos(#s(#s(@x)))) -> c_67() #sub#(@x,#0()) -> c_68() #sub#(@x,#neg(@y)) -> c_69(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_70(#add#(@x,#neg(@y))) #succ#(#0()) -> c_71() #succ#(#neg(#s(#0()))) -> c_72() #succ#(#neg(#s(#s(@x)))) -> c_73() #succ#(#pos(#s(@x))) -> c_74() *#(@x,@y) -> c_2(#mult#(@x,@y)) -#(@x,@y) -> c_3(#sub#(@x,@y)) div#(@x,@y) -> c_4(#div#(@x,@y)) eratos#1#(nil()) -> c_7() filter#1#(nil(),@p) -> c_10() filter#2#(@xs',@p,@x) -> c_11(filter#3#(#equal(mod(@x,@p),#0()),@x,@xs') ,#equal#(mod(@x,@p),#0()) ,mod#(@x,@p)) filter#3#(#false(),@x,@xs') -> c_12() filter#3#(#true(),@x,@xs') -> c_13() mod#(@x,@y) -> c_14(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/2,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:eratos#(@l) -> c_5(eratos#1#(@l)) -->_1 eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)):2 -->_1 eratos#1#(nil()) -> c_7():69 2:S:eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) -->_2 filter#(@p,@l) -> c_8(filter#1#(@l,@p)):3 -->_1 eratos#(@l) -> c_5(eratos#1#(@l)):1 3:S:filter#(@p,@l) -> c_8(filter#1#(@l,@p)) -->_1 filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)):4 -->_1 filter#1#(nil(),@p) -> c_10():70 4:S:filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)) -->_1 filter#2#(@xs',@p,@x) -> c_11(filter#3#(#equal(mod(@x,@p),#0()),@x,@xs') ,#equal#(mod(@x,@p),#0()) ,mod#(@x,@p)):71 -->_2 filter#(@p,@l) -> c_8(filter#1#(@l,@p)):3 5:W:#add#(#0(),@y) -> c_15() 6:W:#add#(#neg(#s(#0())),@y) -> c_16(#pred#(@y)) -->_1 #pred#(#pos(#s(#s(@x)))) -> c_67():58 -->_1 #pred#(#pos(#s(#0()))) -> c_66():57 -->_1 #pred#(#neg(#s(@x))) -> c_65():56 -->_1 #pred#(#0()) -> c_64():55 7:W:#add#(#neg(#s(#s(@x))),@y) -> c_17(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) -->_2 #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):9 -->_2 #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)):8 -->_1 #pred#(#pos(#s(#s(@x)))) -> c_67():58 -->_1 #pred#(#pos(#s(#0()))) -> c_66():57 -->_1 #pred#(#neg(#s(@x))) -> c_65():56 -->_1 #pred#(#0()) -> c_64():55 8:W:#add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)) -->_1 #succ#(#pos(#s(@x))) -> c_74():65 -->_1 #succ#(#neg(#s(#s(@x)))) -> c_73():64 -->_1 #succ#(#neg(#s(#0()))) -> c_72():63 -->_1 #succ#(#0()) -> c_71():62 9:W:#add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) -->_1 #succ#(#pos(#s(@x))) -> c_74():65 -->_1 #succ#(#neg(#s(#s(@x)))) -> c_73():64 -->_1 #succ#(#neg(#s(#0()))) -> c_72():63 -->_1 #succ#(#0()) -> c_71():62 -->_2 #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):9 -->_2 #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)):8 10:W:#and#(#false(),#false()) -> c_20() 11:W:#and#(#false(),#true()) -> c_21() 12:W:#and#(#true(),#false()) -> c_22() 13:W:#and#(#true(),#true()) -> c_23() 14:W:#div#(#0(),#0()) -> c_24() 15:W:#div#(#0(),#neg(@y)) -> c_25() 16:W:#div#(#0(),#pos(@y)) -> c_26() 17:W:#div#(#neg(@x),#0()) -> c_27() 18:W:#div#(#neg(@x),#neg(@y)) -> c_28(#natdiv#(@x,@y)) -->_1 #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)):50 -->_1 #natdiv#(#0(),#0()) -> c_58():49 19:W:#div#(#neg(@x),#pos(@y)) -> c_29(#natdiv#(@x,@y)) -->_1 #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)):50 -->_1 #natdiv#(#0(),#0()) -> c_58():49 20:W:#div#(#pos(@x),#0()) -> c_30() 21:W:#div#(#pos(@x),#neg(@y)) -> c_31(#natdiv#(@x,@y)) -->_1 #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)):50 -->_1 #natdiv#(#0(),#0()) -> c_58():49 22:W:#div#(#pos(@x),#pos(@y)) -> c_32(#natdiv#(@x,@y)) -->_1 #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)):50 -->_1 #natdiv#(#0(),#0()) -> c_58():49 23:W:#eq#(#0(),#0()) -> c_33() 24:W:#eq#(#0(),#neg(@y)) -> c_34() 25:W:#eq#(#0(),#pos(@y)) -> c_35() 26:W:#eq#(#0(),#s(@y)) -> c_36() 27:W:#eq#(#neg(@x),#0()) -> c_37() 28:W:#eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)) -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):35 -->_1 #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)):34 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)):32 -->_1 #eq#(nil(),nil()) -> c_48():38 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_47():37 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_46():36 -->_1 #eq#(#s(@x),#0()) -> c_43():33 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_41():31 -->_1 #eq#(#pos(@x),#0()) -> c_40():30 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_39():29 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)):28 -->_1 #eq#(#neg(@x),#0()) -> c_37():27 -->_1 #eq#(#0(),#s(@y)) -> c_36():26 -->_1 #eq#(#0(),#pos(@y)) -> c_35():25 -->_1 #eq#(#0(),#neg(@y)) -> c_34():24 -->_1 #eq#(#0(),#0()) -> c_33():23 29:W:#eq#(#neg(@x),#pos(@y)) -> c_39() 30:W:#eq#(#pos(@x),#0()) -> c_40() 31:W:#eq#(#pos(@x),#neg(@y)) -> c_41() 32:W:#eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)) -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):35 -->_1 #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)):34 -->_1 #eq#(nil(),nil()) -> c_48():38 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_47():37 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_46():36 -->_1 #eq#(#s(@x),#0()) -> c_43():33 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)):32 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_41():31 -->_1 #eq#(#pos(@x),#0()) -> c_40():30 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_39():29 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)):28 -->_1 #eq#(#neg(@x),#0()) -> c_37():27 -->_1 #eq#(#0(),#s(@y)) -> c_36():26 -->_1 #eq#(#0(),#pos(@y)) -> c_35():25 -->_1 #eq#(#0(),#neg(@y)) -> c_34():24 -->_1 #eq#(#0(),#0()) -> c_33():23 33:W:#eq#(#s(@x),#0()) -> c_43() 34:W:#eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)) -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):35 -->_1 #eq#(nil(),nil()) -> c_48():38 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_47():37 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_46():36 -->_1 #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)):34 -->_1 #eq#(#s(@x),#0()) -> c_43():33 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)):32 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_41():31 -->_1 #eq#(#pos(@x),#0()) -> c_40():30 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_39():29 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)):28 -->_1 #eq#(#neg(@x),#0()) -> c_37():27 -->_1 #eq#(#0(),#s(@y)) -> c_36():26 -->_1 #eq#(#0(),#pos(@y)) -> c_35():25 -->_1 #eq#(#0(),#neg(@y)) -> c_34():24 -->_1 #eq#(#0(),#0()) -> c_33():23 35:W:#eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) -->_3 #eq#(nil(),nil()) -> c_48():38 -->_2 #eq#(nil(),nil()) -> c_48():38 -->_3 #eq#(nil(),::(@y_1,@y_2)) -> c_47():37 -->_2 #eq#(nil(),::(@y_1,@y_2)) -> c_47():37 -->_3 #eq#(::(@x_1,@x_2),nil()) -> c_46():36 -->_2 #eq#(::(@x_1,@x_2),nil()) -> c_46():36 -->_3 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):35 -->_2 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):35 -->_3 #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)):34 -->_2 #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)):34 -->_3 #eq#(#s(@x),#0()) -> c_43():33 -->_2 #eq#(#s(@x),#0()) -> c_43():33 -->_3 #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)):32 -->_2 #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)):32 -->_3 #eq#(#pos(@x),#neg(@y)) -> c_41():31 -->_2 #eq#(#pos(@x),#neg(@y)) -> c_41():31 -->_3 #eq#(#pos(@x),#0()) -> c_40():30 -->_2 #eq#(#pos(@x),#0()) -> c_40():30 -->_3 #eq#(#neg(@x),#pos(@y)) -> c_39():29 -->_2 #eq#(#neg(@x),#pos(@y)) -> c_39():29 -->_3 #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)):28 -->_2 #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)):28 -->_3 #eq#(#neg(@x),#0()) -> c_37():27 -->_2 #eq#(#neg(@x),#0()) -> c_37():27 -->_3 #eq#(#0(),#s(@y)) -> c_36():26 -->_2 #eq#(#0(),#s(@y)) -> c_36():26 -->_3 #eq#(#0(),#pos(@y)) -> c_35():25 -->_2 #eq#(#0(),#pos(@y)) -> c_35():25 -->_3 #eq#(#0(),#neg(@y)) -> c_34():24 -->_2 #eq#(#0(),#neg(@y)) -> c_34():24 -->_3 #eq#(#0(),#0()) -> c_33():23 -->_2 #eq#(#0(),#0()) -> c_33():23 -->_1 #and#(#true(),#true()) -> c_23():13 -->_1 #and#(#true(),#false()) -> c_22():12 -->_1 #and#(#false(),#true()) -> c_21():11 -->_1 #and#(#false(),#false()) -> c_20():10 36:W:#eq#(::(@x_1,@x_2),nil()) -> c_46() 37:W:#eq#(nil(),::(@y_1,@y_2)) -> c_47() 38:W:#eq#(nil(),nil()) -> c_48() 39:W:#equal#(@x,@y) -> c_1(#eq#(@x,@y)) -->_1 #eq#(nil(),nil()) -> c_48():38 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_47():37 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_46():36 -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):35 -->_1 #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)):34 -->_1 #eq#(#s(@x),#0()) -> c_43():33 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)):32 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_41():31 -->_1 #eq#(#pos(@x),#0()) -> c_40():30 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_39():29 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)):28 -->_1 #eq#(#neg(@x),#0()) -> c_37():27 -->_1 #eq#(#0(),#s(@y)) -> c_36():26 -->_1 #eq#(#0(),#pos(@y)) -> c_35():25 -->_1 #eq#(#0(),#neg(@y)) -> c_34():24 -->_1 #eq#(#0(),#0()) -> c_33():23 40:W:#mult#(#0(),#0()) -> c_49() 41:W:#mult#(#0(),#neg(@y)) -> c_50() 42:W:#mult#(#0(),#pos(@y)) -> c_51() 43:W:#mult#(#neg(@x),#0()) -> c_52() 44:W:#mult#(#neg(@x),#neg(@y)) -> c_53(#natmult#(@x,@y)) -->_1 #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):52 -->_1 #natmult#(#0(),@y) -> c_60():51 45:W:#mult#(#neg(@x),#pos(@y)) -> c_54(#natmult#(@x,@y)) -->_1 #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):52 -->_1 #natmult#(#0(),@y) -> c_60():51 46:W:#mult#(#pos(@x),#0()) -> c_55() 47:W:#mult#(#pos(@x),#neg(@y)) -> c_56(#natmult#(@x,@y)) -->_1 #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):52 -->_1 #natmult#(#0(),@y) -> c_60():51 48:W:#mult#(#pos(@x),#pos(@y)) -> c_57(#natmult#(@x,@y)) -->_1 #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):52 -->_1 #natmult#(#0(),@y) -> c_60():51 49:W:#natdiv#(#0(),#0()) -> c_58() 50:W:#natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) -->_2 #natsub#(#s(@x),#s(@y)) -> c_63(#natsub#(@x,@y)):54 -->_2 #natsub#(@x,#0()) -> c_62():53 -->_1 #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)):50 51:W:#natmult#(#0(),@y) -> c_60() 52:W:#natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) -->_2 #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):52 -->_2 #natmult#(#0(),@y) -> c_60():51 -->_1 #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):9 -->_1 #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)):8 53:W:#natsub#(@x,#0()) -> c_62() 54:W:#natsub#(#s(@x),#s(@y)) -> c_63(#natsub#(@x,@y)) -->_1 #natsub#(#s(@x),#s(@y)) -> c_63(#natsub#(@x,@y)):54 -->_1 #natsub#(@x,#0()) -> c_62():53 55:W:#pred#(#0()) -> c_64() 56:W:#pred#(#neg(#s(@x))) -> c_65() 57:W:#pred#(#pos(#s(#0()))) -> c_66() 58:W:#pred#(#pos(#s(#s(@x)))) -> c_67() 59:W:#sub#(@x,#0()) -> c_68() 60:W:#sub#(@x,#neg(@y)) -> c_69(#add#(@x,#pos(@y))) -->_1 #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):9 -->_1 #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)):8 -->_1 #add#(#neg(#s(#s(@x))),@y) -> c_17(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):7 -->_1 #add#(#neg(#s(#0())),@y) -> c_16(#pred#(@y)):6 -->_1 #add#(#0(),@y) -> c_15():5 61:W:#sub#(@x,#pos(@y)) -> c_70(#add#(@x,#neg(@y))) -->_1 #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):9 -->_1 #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)):8 -->_1 #add#(#neg(#s(#s(@x))),@y) -> c_17(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):7 -->_1 #add#(#neg(#s(#0())),@y) -> c_16(#pred#(@y)):6 -->_1 #add#(#0(),@y) -> c_15():5 62:W:#succ#(#0()) -> c_71() 63:W:#succ#(#neg(#s(#0()))) -> c_72() 64:W:#succ#(#neg(#s(#s(@x)))) -> c_73() 65:W:#succ#(#pos(#s(@x))) -> c_74() 66:W:*#(@x,@y) -> c_2(#mult#(@x,@y)) -->_1 #mult#(#pos(@x),#pos(@y)) -> c_57(#natmult#(@x,@y)):48 -->_1 #mult#(#pos(@x),#neg(@y)) -> c_56(#natmult#(@x,@y)):47 -->_1 #mult#(#pos(@x),#0()) -> c_55():46 -->_1 #mult#(#neg(@x),#pos(@y)) -> c_54(#natmult#(@x,@y)):45 -->_1 #mult#(#neg(@x),#neg(@y)) -> c_53(#natmult#(@x,@y)):44 -->_1 #mult#(#neg(@x),#0()) -> c_52():43 -->_1 #mult#(#0(),#pos(@y)) -> c_51():42 -->_1 #mult#(#0(),#neg(@y)) -> c_50():41 -->_1 #mult#(#0(),#0()) -> c_49():40 67:W:-#(@x,@y) -> c_3(#sub#(@x,@y)) -->_1 #sub#(@x,#pos(@y)) -> c_70(#add#(@x,#neg(@y))):61 -->_1 #sub#(@x,#neg(@y)) -> c_69(#add#(@x,#pos(@y))):60 -->_1 #sub#(@x,#0()) -> c_68():59 68:W:div#(@x,@y) -> c_4(#div#(@x,@y)) -->_1 #div#(#pos(@x),#pos(@y)) -> c_32(#natdiv#(@x,@y)):22 -->_1 #div#(#pos(@x),#neg(@y)) -> c_31(#natdiv#(@x,@y)):21 -->_1 #div#(#pos(@x),#0()) -> c_30():20 -->_1 #div#(#neg(@x),#pos(@y)) -> c_29(#natdiv#(@x,@y)):19 -->_1 #div#(#neg(@x),#neg(@y)) -> c_28(#natdiv#(@x,@y)):18 -->_1 #div#(#neg(@x),#0()) -> c_27():17 -->_1 #div#(#0(),#pos(@y)) -> c_26():16 -->_1 #div#(#0(),#neg(@y)) -> c_25():15 -->_1 #div#(#0(),#0()) -> c_24():14 69:W:eratos#1#(nil()) -> c_7() 70:W:filter#1#(nil(),@p) -> c_10() 71:W:filter#2#(@xs',@p,@x) -> c_11(filter#3#(#equal(mod(@x,@p),#0()),@x,@xs') ,#equal#(mod(@x,@p),#0()) ,mod#(@x,@p)) -->_3 mod#(@x,@y) -> c_14(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)):74 -->_1 filter#3#(#true(),@x,@xs') -> c_13():73 -->_1 filter#3#(#false(),@x,@xs') -> c_12():72 -->_2 #equal#(@x,@y) -> c_1(#eq#(@x,@y)):39 72:W:filter#3#(#false(),@x,@xs') -> c_12() 73:W:filter#3#(#true(),@x,@xs') -> c_13() 74:W:mod#(@x,@y) -> c_14(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) -->_3 div#(@x,@y) -> c_4(#div#(@x,@y)):68 -->_1 -#(@x,@y) -> c_3(#sub#(@x,@y)):67 -->_2 *#(@x,@y) -> c_2(#mult#(@x,@y)):66 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 69: eratos#1#(nil()) -> c_7() 70: filter#1#(nil(),@p) -> c_10() 71: filter#2#(@xs',@p,@x) -> c_11(filter#3#(#equal(mod(@x,@p),#0()),@x,@xs') ,#equal#(mod(@x,@p),#0()) ,mod#(@x,@p)) 39: #equal#(@x,@y) -> c_1(#eq#(@x,@y)) 35: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_45(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 34: #eq#(#s(@x),#s(@y)) -> c_44(#eq#(@x,@y)) 32: #eq#(#pos(@x),#pos(@y)) -> c_42(#eq#(@x,@y)) 28: #eq#(#neg(@x),#neg(@y)) -> c_38(#eq#(@x,@y)) 10: #and#(#false(),#false()) -> c_20() 11: #and#(#false(),#true()) -> c_21() 12: #and#(#true(),#false()) -> c_22() 13: #and#(#true(),#true()) -> c_23() 23: #eq#(#0(),#0()) -> c_33() 24: #eq#(#0(),#neg(@y)) -> c_34() 25: #eq#(#0(),#pos(@y)) -> c_35() 26: #eq#(#0(),#s(@y)) -> c_36() 27: #eq#(#neg(@x),#0()) -> c_37() 29: #eq#(#neg(@x),#pos(@y)) -> c_39() 30: #eq#(#pos(@x),#0()) -> c_40() 31: #eq#(#pos(@x),#neg(@y)) -> c_41() 33: #eq#(#s(@x),#0()) -> c_43() 36: #eq#(::(@x_1,@x_2),nil()) -> c_46() 37: #eq#(nil(),::(@y_1,@y_2)) -> c_47() 38: #eq#(nil(),nil()) -> c_48() 72: filter#3#(#false(),@x,@xs') -> c_12() 73: filter#3#(#true(),@x,@xs') -> c_13() 74: mod#(@x,@y) -> c_14(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) 66: *#(@x,@y) -> c_2(#mult#(@x,@y)) 40: #mult#(#0(),#0()) -> c_49() 41: #mult#(#0(),#neg(@y)) -> c_50() 42: #mult#(#0(),#pos(@y)) -> c_51() 43: #mult#(#neg(@x),#0()) -> c_52() 44: #mult#(#neg(@x),#neg(@y)) -> c_53(#natmult#(@x,@y)) 45: #mult#(#neg(@x),#pos(@y)) -> c_54(#natmult#(@x,@y)) 46: #mult#(#pos(@x),#0()) -> c_55() 47: #mult#(#pos(@x),#neg(@y)) -> c_56(#natmult#(@x,@y)) 48: #mult#(#pos(@x),#pos(@y)) -> c_57(#natmult#(@x,@y)) 52: #natmult#(#s(@x),@y) -> c_61(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) 51: #natmult#(#0(),@y) -> c_60() 67: -#(@x,@y) -> c_3(#sub#(@x,@y)) 59: #sub#(@x,#0()) -> c_68() 60: #sub#(@x,#neg(@y)) -> c_69(#add#(@x,#pos(@y))) 61: #sub#(@x,#pos(@y)) -> c_70(#add#(@x,#neg(@y))) 5: #add#(#0(),@y) -> c_15() 6: #add#(#neg(#s(#0())),@y) -> c_16(#pred#(@y)) 7: #add#(#neg(#s(#s(@x))),@y) -> c_17(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 55: #pred#(#0()) -> c_64() 56: #pred#(#neg(#s(@x))) -> c_65() 57: #pred#(#pos(#s(#0()))) -> c_66() 58: #pred#(#pos(#s(#s(@x)))) -> c_67() 9: #add#(#pos(#s(#s(@x))),@y) -> c_19(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 8: #add#(#pos(#s(#0())),@y) -> c_18(#succ#(@y)) 62: #succ#(#0()) -> c_71() 63: #succ#(#neg(#s(#0()))) -> c_72() 64: #succ#(#neg(#s(#s(@x)))) -> c_73() 65: #succ#(#pos(#s(@x))) -> c_74() 68: div#(@x,@y) -> c_4(#div#(@x,@y)) 14: #div#(#0(),#0()) -> c_24() 15: #div#(#0(),#neg(@y)) -> c_25() 16: #div#(#0(),#pos(@y)) -> c_26() 17: #div#(#neg(@x),#0()) -> c_27() 18: #div#(#neg(@x),#neg(@y)) -> c_28(#natdiv#(@x,@y)) 19: #div#(#neg(@x),#pos(@y)) -> c_29(#natdiv#(@x,@y)) 20: #div#(#pos(@x),#0()) -> c_30() 21: #div#(#pos(@x),#neg(@y)) -> c_31(#natdiv#(@x,@y)) 22: #div#(#pos(@x),#pos(@y)) -> c_32(#natdiv#(@x,@y)) 49: #natdiv#(#0(),#0()) -> c_58() 50: #natdiv#(#s(@x),#s(@y)) -> c_59(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) 54: #natsub#(#s(@x),#s(@y)) -> c_63(#natsub#(@x,@y)) 53: #natsub#(@x,#0()) -> c_62() * Step 8: SimplifyRHS WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#(@p,@l) -> c_8(filter#1#(@l,@p)) filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/2,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:eratos#(@l) -> c_5(eratos#1#(@l)) -->_1 eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)):2 2:S:eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) -->_2 filter#(@p,@l) -> c_8(filter#1#(@l,@p)):3 -->_1 eratos#(@l) -> c_5(eratos#1#(@l)):1 3:S:filter#(@p,@l) -> c_8(filter#1#(@l,@p)) -->_1 filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)):4 4:S:filter#1#(::(@x,@xs),@p) -> c_9(filter#2#(filter(@p,@xs),@p,@x),filter#(@p,@xs)) -->_2 filter#(@p,@l) -> c_8(filter#1#(@l,@p)):3 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) * Step 9: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#(@p,@l) -> c_8(filter#1#(@l,@p)) filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 4: filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) The strictly oriented rules are moved into the weak component. ** Step 9.a:1: NaturalMI WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#(@p,@l) -> c_8(filter#1#(@l,@p)) filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: NaturalMI {miDimension = 2, 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: The following argument positions are considered usable: uargs(c_5) = {1}, uargs(c_6) = {1,2}, uargs(c_8) = {1}, uargs(c_9) = {1} Following symbols are considered usable: {filter,filter#1,filter#2,filter#3,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub# ,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} TcT has computed the following interpretation: p(#0) = [1] [1] p(#add) = [0] [1] p(#and) = [0 0] x1 + [0 1] x2 + [1] [1 1] [0 0] [1] p(#div) = [1 0] x1 + [1] [0 0] [0] p(#divByZero) = [0] [0] p(#eq) = [0] [0] p(#equal) = [0 0] x1 + [1 0] x2 + [1] [1 0] [0 1] [1] p(#false) = [0] [0] p(#mult) = [0 0] x1 + [1] [0 1] [0] p(#natdiv) = [0 0] x1 + [0 0] x2 + [1] [1 1] [0 1] [0] p(#natmult) = [0 1] x1 + [0] [0 1] [1] p(#natsub) = [1 1] x2 + [1] [1 0] [1] p(#neg) = [0] [0] p(#pos) = [0] [0] p(#pred) = [0] [1] p(#s) = [0] [0] p(#sub) = [1 0] x2 + [1] [0 0] [0] p(#succ) = [0] [1] p(#true) = [1] [1] p(*) = [1 1] x1 + [1 1] x2 + [1] [0 1] [0 1] [1] p(-) = [0 1] x1 + [1 0] x2 + [0] [0 0] [0 1] [0] p(::) = [1 0] x1 + [1 1] x2 + [0] [0 1] [0 1] [1] p(div) = [0 0] x1 + [1 0] x2 + [1] [0 1] [1 0] [1] p(eratos) = [0] [0] p(eratos#1) = [0] [0] p(filter) = [1 0] x2 + [0] [0 1] [0] p(filter#1) = [1 0] x1 + [0] [0 1] [0] p(filter#2) = [1 1] x1 + [1 0] x3 + [0] [0 1] [0 1] [1] p(filter#3) = [1 0] x2 + [1 1] x3 + [0] [0 1] [0 1] [1] p(mod) = [1] [0] p(nil) = [0] [0] p(#add#) = [0] [0] p(#and#) = [0] [0] p(#div#) = [0] [0] p(#eq#) = [0] [0] p(#equal#) = [0] [0] p(#mult#) = [0] [0] p(#natdiv#) = [0] [0] p(#natmult#) = [0] [0] p(#natsub#) = [0] [0] p(#pred#) = [0] [0] p(#sub#) = [0] [0] p(#succ#) = [0] [0] p(*#) = [0] [0] p(-#) = [0] [0] p(div#) = [0] [0] p(eratos#) = [1 1] x1 + [1] [0 0] [0] p(eratos#1#) = [1 1] x1 + [1] [0 0] [1] p(filter#) = [0 1] x2 + [0] [0 0] [1] p(filter#1#) = [0 1] x1 + [0] [0 0] [1] p(filter#2#) = [0] [0] p(filter#3#) = [0] [0] p(mod#) = [0] [0] p(c_1) = [0] [0] p(c_2) = [0] [0] p(c_3) = [0] [0] p(c_4) = [0] [0] p(c_5) = [1 0] x1 + [0] [0 0] [0] p(c_6) = [1 0] x1 + [1 0] x2 + [1] [0 0] [0 1] [0] p(c_7) = [0] [0] p(c_8) = [1 0] x1 + [0] [0 0] [0] p(c_9) = [1 0] x1 + [0] [0 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) = [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] p(c_58) = [0] [0] p(c_59) = [0] [0] p(c_60) = [0] [0] p(c_61) = [0] [0] p(c_62) = [0] [0] p(c_63) = [0] [0] p(c_64) = [0] [0] p(c_65) = [0] [0] p(c_66) = [0] [0] p(c_67) = [0] [0] p(c_68) = [0] [0] p(c_69) = [0] [0] p(c_70) = [0] [0] p(c_71) = [0] [0] p(c_72) = [0] [0] p(c_73) = [0] [0] p(c_74) = [0] [0] Following rules are strictly oriented: filter#1#(::(@x,@xs),@p) = [0 1] @x + [0 1] @xs + [1] [0 0] [0 0] [1] > [0 1] @xs + [0] [0 0] [0] = c_9(filter#(@p,@xs)) Following rules are (at-least) weakly oriented: eratos#(@l) = [1 1] @l + [1] [0 0] [0] >= [1 1] @l + [1] [0 0] [0] = c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) = [1 1] @x + [1 2] @xs + [2] [0 0] [0 0] [1] >= [1 2] @xs + [2] [0 0] [1] = c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#(@p,@l) = [0 1] @l + [0] [0 0] [1] >= [0 1] @l + [0] [0 0] [0] = c_8(filter#1#(@l,@p)) filter(@p,@l) = [1 0] @l + [0] [0 1] [0] >= [1 0] @l + [0] [0 1] [0] = filter#1(@l,@p) filter#1(::(@x,@xs),@p) = [1 0] @x + [1 1] @xs + [0] [0 1] [0 1] [1] >= [1 0] @x + [1 1] @xs + [0] [0 1] [0 1] [1] = filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) = [0] [0] >= [0] [0] = nil() filter#2(@xs',@p,@x) = [1 0] @x + [1 1] @xs' + [0] [0 1] [0 1] [1] >= [1 0] @x + [1 1] @xs' + [0] [0 1] [0 1] [1] = filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') = [1 0] @x + [1 1] @xs' + [0] [0 1] [0 1] [1] >= [1 0] @x + [1 1] @xs' + [0] [0 1] [0 1] [1] = ::(@x,@xs') filter#3(#true(),@x,@xs') = [1 0] @x + [1 1] @xs' + [0] [0 1] [0 1] [1] >= [1 0] @xs' + [0] [0 1] [0] = @xs' ** Step 9.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#(@p,@l) -> c_8(filter#1#(@l,@p)) - Weak DPs: filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () ** Step 9.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#(@p,@l) -> c_8(filter#1#(@l,@p)) - Weak DPs: filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: eratos#(@l) -> c_5(eratos#1#(@l)) Consider the set of all dependency pairs 1: eratos#(@l) -> c_5(eratos#1#(@l)) 2: eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) 3: filter#(@p,@l) -> c_8(filter#1#(@l,@p)) 4: filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) 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} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. *** Step 9.b:1.a:1: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#(@p,@l) -> c_8(filter#1#(@l,@p)) - Weak DPs: filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_5) = {1}, uargs(c_6) = {1,2}, uargs(c_8) = {1}, uargs(c_9) = {1} Following symbols are considered usable: {filter,filter#1,filter#2,filter#3,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub# ,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} TcT has computed the following interpretation: p(#0) = [0] p(#add) = [0] p(#and) = [0] p(#div) = [0] p(#divByZero) = [0] p(#eq) = [4] x1 + [0] p(#equal) = [1] x1 + [0] p(#false) = [0] p(#mult) = [0] p(#natdiv) = [7] p(#natmult) = [4] x1 + [0] p(#natsub) = [0] p(#neg) = [0] p(#pos) = [1] x1 + [1] p(#pred) = [0] p(#s) = [1] p(#sub) = [0] p(#succ) = [0] p(#true) = [0] p(*) = [0] p(-) = [0] p(::) = [1] x2 + [1] p(div) = [0] p(eratos) = [0] p(eratos#1) = [0] p(filter) = [1] x2 + [0] p(filter#1) = [1] x1 + [0] p(filter#2) = [1] x1 + [1] p(filter#3) = [1] x3 + [1] p(mod) = [0] p(nil) = [0] p(#add#) = [0] p(#and#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#mult#) = [0] p(#natdiv#) = [0] p(#natmult#) = [0] p(#natsub#) = [0] p(#pred#) = [0] p(#sub#) = [0] p(#succ#) = [0] p(*#) = [0] p(-#) = [0] p(div#) = [1] x2 + [0] p(eratos#) = [1] x1 + [4] p(eratos#1#) = [1] x1 + [3] p(filter#) = [0] p(filter#1#) = [0] p(filter#2#) = [0] p(filter#3#) = [0] p(mod#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [1] x1 + [0] p(c_6) = [1] x1 + [4] x2 + [0] p(c_7) = [0] p(c_8) = [4] x1 + [0] p(c_9) = [2] x1 + [0] p(c_10) = [0] p(c_11) = [4] x1 + [1] x3 + [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [2] x1 + [4] x2 + [0] p(c_15) = [0] p(c_16) = [1] x1 + [0] p(c_17) = [1] x1 + [4] x2 + [0] p(c_18) = [0] p(c_19) = [1] x1 + [0] p(c_20) = [0] p(c_21) = [0] p(c_22) = [0] p(c_23) = [0] p(c_24) = [0] p(c_25) = [0] p(c_26) = [0] p(c_27) = [0] p(c_28) = [1] x1 + [0] p(c_29) = [0] p(c_30) = [0] p(c_31) = [0] p(c_32) = [2] x1 + [0] p(c_33) = [0] p(c_34) = [0] p(c_35) = [0] p(c_36) = [0] p(c_37) = [0] p(c_38) = [0] p(c_39) = [0] p(c_40) = [0] p(c_41) = [0] p(c_42) = [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [1] x1 + [1] x3 + [0] p(c_46) = [0] p(c_47) = [0] p(c_48) = [0] p(c_49) = [0] p(c_50) = [0] p(c_51) = [0] p(c_52) = [0] p(c_53) = [0] p(c_54) = [2] x1 + [0] p(c_55) = [0] p(c_56) = [1] x1 + [0] p(c_57) = [0] p(c_58) = [0] p(c_59) = [1] x1 + [0] p(c_60) = [0] p(c_61) = [1] x2 + [0] p(c_62) = [0] p(c_63) = [1] x1 + [0] p(c_64) = [0] p(c_65) = [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [0] p(c_69) = [0] p(c_70) = [1] x1 + [0] p(c_71) = [0] p(c_72) = [0] p(c_73) = [0] p(c_74) = [0] Following rules are strictly oriented: eratos#(@l) = [1] @l + [4] > [1] @l + [3] = c_5(eratos#1#(@l)) Following rules are (at-least) weakly oriented: eratos#1#(::(@x,@xs)) = [1] @xs + [4] >= [1] @xs + [4] = c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#(@p,@l) = [0] >= [0] = c_8(filter#1#(@l,@p)) filter#1#(::(@x,@xs),@p) = [0] >= [0] = c_9(filter#(@p,@xs)) filter(@p,@l) = [1] @l + [0] >= [1] @l + [0] = filter#1(@l,@p) filter#1(::(@x,@xs),@p) = [1] @xs + [1] >= [1] @xs + [1] = filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) = [0] >= [0] = nil() filter#2(@xs',@p,@x) = [1] @xs' + [1] >= [1] @xs' + [1] = filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') = [1] @xs' + [1] >= [1] @xs' + [1] = ::(@x,@xs') filter#3(#true(),@x,@xs') = [1] @xs' + [1] >= [1] @xs' + [0] = @xs' *** Step 9.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#(@p,@l) -> c_8(filter#1#(@l,@p)) - Weak DPs: eratos#(@l) -> c_5(eratos#1#(@l)) filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () *** Step 9.b:1.b:1: PredecessorEstimationCP WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: filter#(@p,@l) -> c_8(filter#1#(@l,@p)) - Weak DPs: eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}} + Details: We first use the processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly: 1: filter#(@p,@l) -> c_8(filter#1#(@l,@p)) Consider the set of all dependency pairs 1: filter#(@p,@l) -> c_8(filter#1#(@l,@p)) 2: eratos#(@l) -> c_5(eratos#1#(@l)) 3: eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) 4: filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) Processor NaturalMI {miDimension = 2, 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,4} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. **** Step 9.b:1.b:1.a:1: NaturalMI WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: filter#(@p,@l) -> c_8(filter#1#(@l,@p)) - Weak DPs: eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: NaturalMI {miDimension = 2, 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: The following argument positions are considered usable: uargs(c_5) = {1}, uargs(c_6) = {1,2}, uargs(c_8) = {1}, uargs(c_9) = {1} Following symbols are considered usable: {filter,filter#1,filter#2,filter#3,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub# ,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} TcT has computed the following interpretation: p(#0) = [1] [0] p(#add) = [0] [0] p(#and) = [0] [0] p(#div) = [0 0] x1 + [0] [1 0] [1] p(#divByZero) = [0] [0] p(#eq) = [0 0] x1 + [0] [1 0] [0] p(#equal) = [1 0] x2 + [1] [0 0] [1] p(#false) = [0] [0] p(#mult) = [0] [0] p(#natdiv) = [1 0] x2 + [1] [0 0] [1] p(#natmult) = [1] [0] p(#natsub) = [0 0] x2 + [0] [1 0] [1] p(#neg) = [0] [0] p(#pos) = [0] [0] p(#pred) = [0] [0] p(#s) = [0] [0] p(#sub) = [0] [0] p(#succ) = [0 0] x1 + [0] [1 0] [1] p(#true) = [0] [0] p(*) = [1] [0] p(-) = [0 1] x1 + [1] [0 0] [0] p(::) = [0 0] x1 + [1 1] x2 + [0] [0 1] [0 1] [1] p(div) = [0] [0] p(eratos) = [0] [0] p(eratos#1) = [0] [0] p(filter) = [1 0] x2 + [0] [0 1] [0] p(filter#1) = [1 0] x1 + [0] [0 1] [0] p(filter#2) = [1 1] x1 + [0 0] x3 + [0] [0 1] [0 1] [1] p(filter#3) = [0 0] x2 + [1 1] x3 + [0] [0 1] [0 1] [1] p(mod) = [0] [0] p(nil) = [0] [0] p(#add#) = [0] [0] p(#and#) = [0] [0] p(#div#) = [0] [0] p(#eq#) = [0] [0] p(#equal#) = [0] [0] p(#mult#) = [0] [0] p(#natdiv#) = [0] [0] p(#natmult#) = [0] [0] p(#natsub#) = [0] [0] p(#pred#) = [0] [0] p(#sub#) = [0] [0] p(#succ#) = [0] [0] p(*#) = [0] [0] p(-#) = [0] [0] p(div#) = [0] [0] p(eratos#) = [1 1] x1 + [0] [0 0] [0] p(eratos#1#) = [1 1] x1 + [0] [1 0] [0] p(filter#) = [0 1] x2 + [1] [0 0] [0] p(filter#1#) = [0 1] x1 + [0 0] x2 + [0] [0 1] [1 1] [1] p(filter#2#) = [0] [0] p(filter#3#) = [0] [0] p(mod#) = [0] [0] p(c_1) = [0] [0] p(c_2) = [0] [0] p(c_3) = [0] [0] p(c_4) = [0] [0] p(c_5) = [1 0] x1 + [0] [0 0] [0] p(c_6) = [1 0] x1 + [1 0] x2 + [0] [1 0] [0 0] [0] p(c_7) = [0] [0] p(c_8) = [1 0] x1 + [0] [0 0] [0] p(c_9) = [1 0] x1 + [0] [0 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) = [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] p(c_58) = [0] [0] p(c_59) = [0] [0] p(c_60) = [0] [0] p(c_61) = [0] [0] p(c_62) = [0] [0] p(c_63) = [0] [0] p(c_64) = [0] [0] p(c_65) = [0] [0] p(c_66) = [0] [0] p(c_67) = [0] [0] p(c_68) = [0] [0] p(c_69) = [0] [0] p(c_70) = [0] [0] p(c_71) = [0] [0] p(c_72) = [0] [0] p(c_73) = [0] [0] p(c_74) = [0] [0] Following rules are strictly oriented: filter#(@p,@l) = [0 1] @l + [1] [0 0] [0] > [0 1] @l + [0] [0 0] [0] = c_8(filter#1#(@l,@p)) Following rules are (at-least) weakly oriented: eratos#(@l) = [1 1] @l + [0] [0 0] [0] >= [1 1] @l + [0] [0 0] [0] = c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) = [0 1] @x + [1 2] @xs + [1] [0 0] [1 1] [0] >= [1 2] @xs + [1] [1 1] [0] = c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#1#(::(@x,@xs),@p) = [0 0] @p + [0 1] @x + [0 1] @xs + [1] [1 1] [0 1] [0 1] [2] >= [0 1] @xs + [1] [0 0] [0] = c_9(filter#(@p,@xs)) filter(@p,@l) = [1 0] @l + [0] [0 1] [0] >= [1 0] @l + [0] [0 1] [0] = filter#1(@l,@p) filter#1(::(@x,@xs),@p) = [0 0] @x + [1 1] @xs + [0] [0 1] [0 1] [1] >= [0 0] @x + [1 1] @xs + [0] [0 1] [0 1] [1] = filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) = [0] [0] >= [0] [0] = nil() filter#2(@xs',@p,@x) = [0 0] @x + [1 1] @xs' + [0] [0 1] [0 1] [1] >= [0 0] @x + [1 1] @xs' + [0] [0 1] [0 1] [1] = filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') = [0 0] @x + [1 1] @xs' + [0] [0 1] [0 1] [1] >= [0 0] @x + [1 1] @xs' + [0] [0 1] [0 1] [1] = ::(@x,@xs') filter#3(#true(),@x,@xs') = [0 0] @x + [1 1] @xs' + [0] [0 1] [0 1] [1] >= [1 0] @xs' + [0] [0 1] [0] = @xs' **** Step 9.b:1.b:1.a:2: Assumption WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#(@p,@l) -> c_8(filter#1#(@l,@p)) filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}} + Details: () **** Step 9.b:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: eratos#(@l) -> c_5(eratos#1#(@l)) eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) filter#(@p,@l) -> c_8(filter#1#(@l,@p)) filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:eratos#(@l) -> c_5(eratos#1#(@l)) -->_1 eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)):2 2:W:eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) -->_2 filter#(@p,@l) -> c_8(filter#1#(@l,@p)):3 -->_1 eratos#(@l) -> c_5(eratos#1#(@l)):1 3:W:filter#(@p,@l) -> c_8(filter#1#(@l,@p)) -->_1 filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)):4 4:W:filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) -->_1 filter#(@p,@l) -> c_8(filter#1#(@l,@p)):3 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: eratos#(@l) -> c_5(eratos#1#(@l)) 2: eratos#1#(::(@x,@xs)) -> c_6(eratos#(filter(@x,@xs)),filter#(@x,@xs)) 3: filter#(@p,@l) -> c_8(filter#1#(@l,@p)) 4: filter#1#(::(@x,@xs),@p) -> c_9(filter#(@p,@xs)) **** Step 9.b:1.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #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),nil()) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #equal(@x,@y) -> #eq(@x,@y) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) -(@x,@y) -> #sub(@x,@y) div(@x,@y) -> #div(@x,@y) filter(@p,@l) -> filter#1(@l,@p) filter#1(::(@x,@xs),@p) -> filter#2(filter(@p,@xs),@p,@x) filter#1(nil(),@p) -> nil() filter#2(@xs',@p,@x) -> filter#3(#equal(mod(@x,@p),#0()),@x,@xs') filter#3(#false(),@x,@xs') -> ::(@x,@xs') filter#3(#true(),@x,@xs') -> @xs' mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) - Signature: {#add/2,#and/2,#div/2,#eq/2,#equal/2,#mult/2,#natdiv/2,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,-/2 ,div/2,eratos/1,eratos#1/1,filter/2,filter#1/2,filter#2/3,filter#3/3,mod/2,#add#/2,#and#/2,#div#/2,#eq#/2 ,#equal#/2,#mult#/2,#natdiv#/2,#natmult#/2,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,-#/2,div#/2,eratos#/1 ,eratos#1#/1,filter#/2,filter#1#/2,filter#2#/3,filter#3#/3,mod#/2} / {#0/0,#divByZero/0,#false/0,#neg/1 ,#pos/1,#s/1,#true/0,::/2,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/2,c_7/0,c_8/1,c_9/1,c_10/0,c_11/3,c_12/0 ,c_13/0,c_14/3,c_15/0,c_16/1,c_17/2,c_18/1,c_19/2,c_20/0,c_21/0,c_22/0,c_23/0,c_24/0,c_25/0,c_26/0,c_27/0 ,c_28/1,c_29/1,c_30/0,c_31/1,c_32/1,c_33/0,c_34/0,c_35/0,c_36/0,c_37/0,c_38/1,c_39/0,c_40/0,c_41/0,c_42/1 ,c_43/0,c_44/1,c_45/3,c_46/0,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/1,c_54/1,c_55/0,c_56/1,c_57/1 ,c_58/0,c_59/2,c_60/0,c_61/2,c_62/0,c_63/1,c_64/0,c_65/0,c_66/0,c_67/0,c_68/0,c_69/1,c_70/1,c_71/0,c_72/0 ,c_73/0,c_74/0} - Obligation: innermost runtime complexity wrt. defined symbols {#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,-#,div#,eratos#,eratos#1#,filter#,filter#1#,filter#2#,filter#3# ,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,nil} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). WORST_CASE(?,O(n^2))