WORST_CASE(?,O(n^2)) * Step 1: Sum. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict TRS: #EQUAL(z0,z1) -> c61(#EQ(z0,z1)) *'(z0,z1) -> c62(#MULT(z0,z1)) -'(z0,z1) -> c63(#SUB(z0,z1)) DIV(z0,z1) -> c64(#DIV(z0,z1)) ERATOS(z0) -> c65(ERATOS#1(z0)) ERATOS#1(::(z0,z1)) -> c66(ERATOS(filter(z0,z1)),FILTER(z0,z1)) ERATOS#1(nil()) -> c67() FILTER(z0,z1) -> c68(FILTER#1(z1,z0)) FILTER#1(::(z0,z1),z2) -> c69(FILTER#2(filter(z2,z1),z2,z0),FILTER(z2,z1)) FILTER#1(nil(),z0) -> c70() FILTER#2(z0,z1,z2) -> c71(FILTER#3(#equal(mod(z2,z1),#0()),z2,z0),#EQUAL(mod(z2,z1),#0()),MOD(z2,z1)) FILTER#3(#false(),z0,z1) -> c72() FILTER#3(#true(),z0,z1) -> c73() MOD(z0,z1) -> c74(-'(z0,*(z0,div(z0,z1))),*'(z0,div(z0,z1)),DIV(z0,z1)) - Weak TRS: #ADD(#0(),z0) -> c() #ADD(#neg(#s(#0())),z0) -> c1(#PRED(z0)) #ADD(#neg(#s(#s(z0))),z1) -> c2(#PRED(#add(#pos(#s(z0)),z1)),#ADD(#pos(#s(z0)),z1)) #ADD(#pos(#s(#0())),z0) -> c3(#SUCC(z0)) #ADD(#pos(#s(#s(z0))),z1) -> c4(#SUCC(#add(#pos(#s(z0)),z1)),#ADD(#pos(#s(z0)),z1)) #AND(#false(),#false()) -> c5() #AND(#false(),#true()) -> c6() #AND(#true(),#false()) -> c7() #AND(#true(),#true()) -> c8() #DIV(#0(),#0()) -> c9() #DIV(#0(),#neg(z0)) -> c10() #DIV(#0(),#pos(z0)) -> c11() #DIV(#neg(z0),#0()) -> c12() #DIV(#neg(z0),#neg(z1)) -> c13(#NATDIV(z0,z1)) #DIV(#neg(z0),#pos(z1)) -> c14(#NATDIV(z0,z1)) #DIV(#pos(z0),#0()) -> c15() #DIV(#pos(z0),#neg(z1)) -> c16(#NATDIV(z0,z1)) #DIV(#pos(z0),#pos(z1)) -> c17(#NATDIV(z0,z1)) #EQ(#0(),#0()) -> c18() #EQ(#0(),#neg(z0)) -> c19() #EQ(#0(),#pos(z0)) -> c20() #EQ(#0(),#s(z0)) -> c21() #EQ(#neg(z0),#0()) -> c22() #EQ(#neg(z0),#neg(z1)) -> c23(#EQ(z0,z1)) #EQ(#neg(z0),#pos(z1)) -> c24() #EQ(#pos(z0),#0()) -> c25() #EQ(#pos(z0),#neg(z1)) -> c26() #EQ(#pos(z0),#pos(z1)) -> c27(#EQ(z0,z1)) #EQ(#s(z0),#0()) -> c28() #EQ(#s(z0),#s(z1)) -> c29(#EQ(z0,z1)) #EQ(::(z0,z1),::(z2,z3)) -> c30(#AND(#eq(z0,z2),#eq(z1,z3)),#EQ(z0,z2)) #EQ(::(z0,z1),::(z2,z3)) -> c31(#AND(#eq(z0,z2),#eq(z1,z3)),#EQ(z1,z3)) #EQ(::(z0,z1),nil()) -> c32() #EQ(nil(),::(z0,z1)) -> c33() #EQ(nil(),nil()) -> c34() #MULT(#0(),#0()) -> c35() #MULT(#0(),#neg(z0)) -> c36() #MULT(#0(),#pos(z0)) -> c37() #MULT(#neg(z0),#0()) -> c38() #MULT(#neg(z0),#neg(z1)) -> c39(#NATMULT(z0,z1)) #MULT(#neg(z0),#pos(z1)) -> c40(#NATMULT(z0,z1)) #MULT(#pos(z0),#0()) -> c41() #MULT(#pos(z0),#neg(z1)) -> c42(#NATMULT(z0,z1)) #MULT(#pos(z0),#pos(z1)) -> c43(#NATMULT(z0,z1)) #NATDIV(#0(),#0()) -> c44() #NATDIV(#s(z0),#s(z1)) -> c45(#NATDIV(#natsub(z0,z1),#s(z1)),#NATSUB(z0,z1)) #NATMULT(#0(),z0) -> c46() #NATMULT(#s(z0),z1) -> c47(#ADD(#pos(z1),#natmult(z0,z1)),#NATMULT(z0,z1)) #NATSUB(z0,#0()) -> c48() #NATSUB(#s(z0),#s(z1)) -> c49(#NATSUB(z0,z1)) #PRED(#0()) -> c50() #PRED(#neg(#s(z0))) -> c51() #PRED(#pos(#s(#0()))) -> c52() #PRED(#pos(#s(#s(z0)))) -> c53() #SUB(z0,#0()) -> c54() #SUB(z0,#neg(z1)) -> c55(#ADD(z0,#pos(z1))) #SUB(z0,#pos(z1)) -> c56(#ADD(z0,#neg(z1))) #SUCC(#0()) -> c57() #SUCC(#neg(#s(#0()))) -> c58() #SUCC(#neg(#s(#s(z0)))) -> c59() #SUCC(#pos(#s(z0))) -> c60() #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) eratos(z0) -> eratos#1(z0) eratos#1(::(z0,z1)) -> ::(z0,eratos(filter(z0,z1))) eratos#1(nil()) -> nil() filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1 ,c24/0,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2 ,c40/1,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1 ,c57/0,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0 ,c73/0,c74/3,c8/0,c9/0,nil/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD,#AND,#DIV,#EQ,#EQUAL,#MULT,#NATDIV,#NATMULT,#NATSUB ,#PRED,#SUB,#SUCC,#add,#and,#div,#eq,#equal,#mult,#natdiv,#natmult,#natsub,#pred,#sub,#succ,*,*',-,-',DIV ,ERATOS,ERATOS#1,FILTER,FILTER#1,FILTER#2,FILTER#3,MOD,div,eratos,eratos#1,filter,filter#1,filter#2,filter#3 ,mod} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18 ,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42 ,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67 ,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,nil} + Applied Processor: Sum {left = someStrategy, right = someStrategy} + Details: () * Step 2: DependencyPairs. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict TRS: #EQUAL(z0,z1) -> c61(#EQ(z0,z1)) *'(z0,z1) -> c62(#MULT(z0,z1)) -'(z0,z1) -> c63(#SUB(z0,z1)) DIV(z0,z1) -> c64(#DIV(z0,z1)) ERATOS(z0) -> c65(ERATOS#1(z0)) ERATOS#1(::(z0,z1)) -> c66(ERATOS(filter(z0,z1)),FILTER(z0,z1)) ERATOS#1(nil()) -> c67() FILTER(z0,z1) -> c68(FILTER#1(z1,z0)) FILTER#1(::(z0,z1),z2) -> c69(FILTER#2(filter(z2,z1),z2,z0),FILTER(z2,z1)) FILTER#1(nil(),z0) -> c70() FILTER#2(z0,z1,z2) -> c71(FILTER#3(#equal(mod(z2,z1),#0()),z2,z0),#EQUAL(mod(z2,z1),#0()),MOD(z2,z1)) FILTER#3(#false(),z0,z1) -> c72() FILTER#3(#true(),z0,z1) -> c73() MOD(z0,z1) -> c74(-'(z0,*(z0,div(z0,z1))),*'(z0,div(z0,z1)),DIV(z0,z1)) - Weak TRS: #ADD(#0(),z0) -> c() #ADD(#neg(#s(#0())),z0) -> c1(#PRED(z0)) #ADD(#neg(#s(#s(z0))),z1) -> c2(#PRED(#add(#pos(#s(z0)),z1)),#ADD(#pos(#s(z0)),z1)) #ADD(#pos(#s(#0())),z0) -> c3(#SUCC(z0)) #ADD(#pos(#s(#s(z0))),z1) -> c4(#SUCC(#add(#pos(#s(z0)),z1)),#ADD(#pos(#s(z0)),z1)) #AND(#false(),#false()) -> c5() #AND(#false(),#true()) -> c6() #AND(#true(),#false()) -> c7() #AND(#true(),#true()) -> c8() #DIV(#0(),#0()) -> c9() #DIV(#0(),#neg(z0)) -> c10() #DIV(#0(),#pos(z0)) -> c11() #DIV(#neg(z0),#0()) -> c12() #DIV(#neg(z0),#neg(z1)) -> c13(#NATDIV(z0,z1)) #DIV(#neg(z0),#pos(z1)) -> c14(#NATDIV(z0,z1)) #DIV(#pos(z0),#0()) -> c15() #DIV(#pos(z0),#neg(z1)) -> c16(#NATDIV(z0,z1)) #DIV(#pos(z0),#pos(z1)) -> c17(#NATDIV(z0,z1)) #EQ(#0(),#0()) -> c18() #EQ(#0(),#neg(z0)) -> c19() #EQ(#0(),#pos(z0)) -> c20() #EQ(#0(),#s(z0)) -> c21() #EQ(#neg(z0),#0()) -> c22() #EQ(#neg(z0),#neg(z1)) -> c23(#EQ(z0,z1)) #EQ(#neg(z0),#pos(z1)) -> c24() #EQ(#pos(z0),#0()) -> c25() #EQ(#pos(z0),#neg(z1)) -> c26() #EQ(#pos(z0),#pos(z1)) -> c27(#EQ(z0,z1)) #EQ(#s(z0),#0()) -> c28() #EQ(#s(z0),#s(z1)) -> c29(#EQ(z0,z1)) #EQ(::(z0,z1),::(z2,z3)) -> c30(#AND(#eq(z0,z2),#eq(z1,z3)),#EQ(z0,z2)) #EQ(::(z0,z1),::(z2,z3)) -> c31(#AND(#eq(z0,z2),#eq(z1,z3)),#EQ(z1,z3)) #EQ(::(z0,z1),nil()) -> c32() #EQ(nil(),::(z0,z1)) -> c33() #EQ(nil(),nil()) -> c34() #MULT(#0(),#0()) -> c35() #MULT(#0(),#neg(z0)) -> c36() #MULT(#0(),#pos(z0)) -> c37() #MULT(#neg(z0),#0()) -> c38() #MULT(#neg(z0),#neg(z1)) -> c39(#NATMULT(z0,z1)) #MULT(#neg(z0),#pos(z1)) -> c40(#NATMULT(z0,z1)) #MULT(#pos(z0),#0()) -> c41() #MULT(#pos(z0),#neg(z1)) -> c42(#NATMULT(z0,z1)) #MULT(#pos(z0),#pos(z1)) -> c43(#NATMULT(z0,z1)) #NATDIV(#0(),#0()) -> c44() #NATDIV(#s(z0),#s(z1)) -> c45(#NATDIV(#natsub(z0,z1),#s(z1)),#NATSUB(z0,z1)) #NATMULT(#0(),z0) -> c46() #NATMULT(#s(z0),z1) -> c47(#ADD(#pos(z1),#natmult(z0,z1)),#NATMULT(z0,z1)) #NATSUB(z0,#0()) -> c48() #NATSUB(#s(z0),#s(z1)) -> c49(#NATSUB(z0,z1)) #PRED(#0()) -> c50() #PRED(#neg(#s(z0))) -> c51() #PRED(#pos(#s(#0()))) -> c52() #PRED(#pos(#s(#s(z0)))) -> c53() #SUB(z0,#0()) -> c54() #SUB(z0,#neg(z1)) -> c55(#ADD(z0,#pos(z1))) #SUB(z0,#pos(z1)) -> c56(#ADD(z0,#neg(z1))) #SUCC(#0()) -> c57() #SUCC(#neg(#s(#0()))) -> c58() #SUCC(#neg(#s(#s(z0)))) -> c59() #SUCC(#pos(#s(z0))) -> c60() #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) eratos(z0) -> eratos#1(z0) eratos#1(::(z0,z1)) -> ::(z0,eratos(filter(z0,z1))) eratos#1(nil()) -> nil() filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1 ,c24/0,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2 ,c40/1,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1 ,c57/0,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0 ,c73/0,c74/3,c8/0,c9/0,nil/0} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD,#AND,#DIV,#EQ,#EQUAL,#MULT,#NATDIV,#NATMULT,#NATSUB ,#PRED,#SUB,#SUCC,#add,#and,#div,#eq,#equal,#mult,#natdiv,#natmult,#natsub,#pred,#sub,#succ,*,*',-,-',DIV ,ERATOS,ERATOS#1,FILTER,FILTER#1,FILTER#2,FILTER#3,MOD,div,eratos,eratos#1,filter,filter#1,filter#2,filter#3 ,mod} and constructors {#0,#divByZero,#false,#neg,#pos,#s,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18 ,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42 ,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67 ,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,nil} + Applied Processor: DependencyPairs {dpKind_ = WIDP} + Details: We add the following weak innermost dependency pairs: Strict DPs #EQUAL#(z0,z1) -> c_1(#EQ#(z0,z1)) *'#(z0,z1) -> c_2(#MULT#(z0,z1)) -'#(z0,z1) -> c_3(#SUB#(z0,z1)) DIV#(z0,z1) -> c_4(#DIV#(z0,z1)) ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) ERATOS#1#(nil()) -> c_7() FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)) FILTER#1#(nil(),z0) -> c_10() FILTER#2#(z0,z1,z2) -> c_11(FILTER#3#(#equal(mod(z2,z1),#0()),z2,z0),#EQUAL#(mod(z2,z1),#0()),MOD#(z2,z1)) FILTER#3#(#false(),z0,z1) -> c_12() FILTER#3#(#true(),z0,z1) -> c_13() MOD#(z0,z1) -> c_14(-'#(z0,*(z0,div(z0,z1))),*'#(z0,div(z0,z1)),DIV#(z0,z1)) Weak DPs #ADD#(#0(),z0) -> c_15() #ADD#(#neg(#s(#0())),z0) -> c_16(#PRED#(z0)) #ADD#(#neg(#s(#s(z0))),z1) -> c_17(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)) #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #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(z0)) -> c_25() #DIV#(#0(),#pos(z0)) -> c_26() #DIV#(#neg(z0),#0()) -> c_27() #DIV#(#neg(z0),#neg(z1)) -> c_28(#NATDIV#(z0,z1)) #DIV#(#neg(z0),#pos(z1)) -> c_29(#NATDIV#(z0,z1)) #DIV#(#pos(z0),#0()) -> c_30() #DIV#(#pos(z0),#neg(z1)) -> c_31(#NATDIV#(z0,z1)) #DIV#(#pos(z0),#pos(z1)) -> c_32(#NATDIV#(z0,z1)) #EQ#(#0(),#0()) -> c_33() #EQ#(#0(),#neg(z0)) -> c_34() #EQ#(#0(),#pos(z0)) -> c_35() #EQ#(#0(),#s(z0)) -> c_36() #EQ#(#neg(z0),#0()) -> c_37() #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)) #EQ#(#neg(z0),#pos(z1)) -> c_39() #EQ#(#pos(z0),#0()) -> c_40() #EQ#(#pos(z0),#neg(z1)) -> c_41() #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)) #EQ#(#s(z0),#0()) -> c_43() #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)) #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)) #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)) #EQ#(::(z0,z1),nil()) -> c_47() #EQ#(nil(),::(z0,z1)) -> c_48() #EQ#(nil(),nil()) -> c_49() #MULT#(#0(),#0()) -> c_50() #MULT#(#0(),#neg(z0)) -> c_51() #MULT#(#0(),#pos(z0)) -> c_52() #MULT#(#neg(z0),#0()) -> c_53() #MULT#(#neg(z0),#neg(z1)) -> c_54(#NATMULT#(z0,z1)) #MULT#(#neg(z0),#pos(z1)) -> c_55(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#0()) -> c_56() #MULT#(#pos(z0),#neg(z1)) -> c_57(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#pos(z1)) -> c_58(#NATMULT#(z0,z1)) #NATDIV#(#0(),#0()) -> c_59() #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)) #NATMULT#(#0(),z0) -> c_61() #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) #NATSUB#(z0,#0()) -> c_63() #NATSUB#(#s(z0),#s(z1)) -> c_64(#NATSUB#(z0,z1)) #PRED#(#0()) -> c_65() #PRED#(#neg(#s(z0))) -> c_66() #PRED#(#pos(#s(#0()))) -> c_67() #PRED#(#pos(#s(#s(z0)))) -> c_68() #SUB#(z0,#0()) -> c_69() #SUB#(z0,#neg(z1)) -> c_70(#ADD#(z0,#pos(z1))) #SUB#(z0,#pos(z1)) -> c_71(#ADD#(z0,#neg(z1))) #SUCC#(#0()) -> c_72() #SUCC#(#neg(#s(#0()))) -> c_73() #SUCC#(#neg(#s(#s(z0)))) -> c_74() #SUCC#(#pos(#s(z0))) -> c_75() #add#(#0(),z0) -> c_76() #add#(#neg(#s(#0())),z0) -> c_77(#pred#(z0)) #add#(#neg(#s(#s(z0))),z1) -> c_78(#pred#(#add(#pos(#s(z0)),z1))) #add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)) #add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))) #and#(#false(),#false()) -> c_81() #and#(#false(),#true()) -> c_82() #and#(#true(),#false()) -> c_83() #and#(#true(),#true()) -> c_84() #div#(#0(),#0()) -> c_85() #div#(#0(),#neg(z0)) -> c_86() #div#(#0(),#pos(z0)) -> c_87() #div#(#neg(z0),#0()) -> c_88() #div#(#neg(z0),#neg(z1)) -> c_89(#natdiv#(z0,z1)) #div#(#neg(z0),#pos(z1)) -> c_90(#natdiv#(z0,z1)) #div#(#pos(z0),#0()) -> c_91() #div#(#pos(z0),#neg(z1)) -> c_92(#natdiv#(z0,z1)) #div#(#pos(z0),#pos(z1)) -> c_93(#natdiv#(z0,z1)) #eq#(#0(),#0()) -> c_94() #eq#(#0(),#neg(z0)) -> c_95() #eq#(#0(),#pos(z0)) -> c_96() #eq#(#0(),#s(z0)) -> c_97() #eq#(#neg(z0),#0()) -> c_98() #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)) #eq#(#neg(z0),#pos(z1)) -> c_100() #eq#(#pos(z0),#0()) -> c_101() #eq#(#pos(z0),#neg(z1)) -> c_102() #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)) #eq#(#s(z0),#0()) -> c_104() #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)) #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))) #eq#(::(z0,z1),nil()) -> c_107() #eq#(nil(),::(z0,z1)) -> c_108() #eq#(nil(),nil()) -> c_109() #equal#(z0,z1) -> c_110(#eq#(z0,z1)) #mult#(#0(),#0()) -> c_111() #mult#(#0(),#neg(z0)) -> c_112() #mult#(#0(),#pos(z0)) -> c_113() #mult#(#neg(z0),#0()) -> c_114() #mult#(#neg(z0),#neg(z1)) -> c_115(#natmult#(z0,z1)) #mult#(#neg(z0),#pos(z1)) -> c_116(#natmult#(z0,z1)) #mult#(#pos(z0),#0()) -> c_117() #mult#(#pos(z0),#neg(z1)) -> c_118(#natmult#(z0,z1)) #mult#(#pos(z0),#pos(z1)) -> c_119(#natmult#(z0,z1)) #natdiv#(#0(),#0()) -> c_120() #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))) #natmult#(#0(),z0) -> c_122() #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))) #natsub#(z0,#0()) -> c_124() #natsub#(#s(z0),#s(z1)) -> c_125(#natsub#(z0,z1)) #pred#(#0()) -> c_126() #pred#(#neg(#s(z0))) -> c_127() #pred#(#pos(#s(#0()))) -> c_128() #pred#(#pos(#s(#s(z0)))) -> c_129() #sub#(z0,#0()) -> c_130() #sub#(z0,#neg(z1)) -> c_131(#add#(z0,#pos(z1))) #sub#(z0,#pos(z1)) -> c_132(#add#(z0,#neg(z1))) #succ#(#0()) -> c_133() #succ#(#neg(#s(#0()))) -> c_134() #succ#(#neg(#s(#s(z0)))) -> c_135() #succ#(#pos(#s(z0))) -> c_136() *#(z0,z1) -> c_137(#mult#(z0,z1)) -#(z0,z1) -> c_138(#sub#(z0,z1)) div#(z0,z1) -> c_139(#div#(z0,z1)) eratos#(z0) -> c_140(eratos#1#(z0)) eratos#1#(::(z0,z1)) -> c_141(eratos#(filter(z0,z1))) eratos#1#(nil()) -> c_142() filter#(z0,z1) -> c_143(filter#1#(z1,z0)) filter#1#(::(z0,z1),z2) -> c_144(filter#2#(filter(z2,z1),z2,z0)) filter#1#(nil(),z0) -> c_145() filter#2#(z0,z1,z2) -> c_146(filter#3#(#equal(mod(z2,z1),#0()),z2,z0)) filter#3#(#false(),z0,z1) -> c_147() filter#3#(#true(),z0,z1) -> c_148() mod#(z0,z1) -> c_149(-#(z0,*(z0,div(z0,z1)))) and mark the set of starting terms. * Step 3: UsableRules. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: #EQUAL#(z0,z1) -> c_1(#EQ#(z0,z1)) *'#(z0,z1) -> c_2(#MULT#(z0,z1)) -'#(z0,z1) -> c_3(#SUB#(z0,z1)) DIV#(z0,z1) -> c_4(#DIV#(z0,z1)) ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) ERATOS#1#(nil()) -> c_7() FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)) FILTER#1#(nil(),z0) -> c_10() FILTER#2#(z0,z1,z2) -> c_11(FILTER#3#(#equal(mod(z2,z1),#0()),z2,z0),#EQUAL#(mod(z2,z1),#0()),MOD#(z2,z1)) FILTER#3#(#false(),z0,z1) -> c_12() FILTER#3#(#true(),z0,z1) -> c_13() MOD#(z0,z1) -> c_14(-'#(z0,*(z0,div(z0,z1))),*'#(z0,div(z0,z1)),DIV#(z0,z1)) - Strict TRS: #EQUAL(z0,z1) -> c61(#EQ(z0,z1)) *'(z0,z1) -> c62(#MULT(z0,z1)) -'(z0,z1) -> c63(#SUB(z0,z1)) DIV(z0,z1) -> c64(#DIV(z0,z1)) ERATOS(z0) -> c65(ERATOS#1(z0)) ERATOS#1(::(z0,z1)) -> c66(ERATOS(filter(z0,z1)),FILTER(z0,z1)) ERATOS#1(nil()) -> c67() FILTER(z0,z1) -> c68(FILTER#1(z1,z0)) FILTER#1(::(z0,z1),z2) -> c69(FILTER#2(filter(z2,z1),z2,z0),FILTER(z2,z1)) FILTER#1(nil(),z0) -> c70() FILTER#2(z0,z1,z2) -> c71(FILTER#3(#equal(mod(z2,z1),#0()),z2,z0),#EQUAL(mod(z2,z1),#0()),MOD(z2,z1)) FILTER#3(#false(),z0,z1) -> c72() FILTER#3(#true(),z0,z1) -> c73() MOD(z0,z1) -> c74(-'(z0,*(z0,div(z0,z1))),*'(z0,div(z0,z1)),DIV(z0,z1)) - Weak DPs: #ADD#(#0(),z0) -> c_15() #ADD#(#neg(#s(#0())),z0) -> c_16(#PRED#(z0)) #ADD#(#neg(#s(#s(z0))),z1) -> c_17(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)) #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #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(z0)) -> c_25() #DIV#(#0(),#pos(z0)) -> c_26() #DIV#(#neg(z0),#0()) -> c_27() #DIV#(#neg(z0),#neg(z1)) -> c_28(#NATDIV#(z0,z1)) #DIV#(#neg(z0),#pos(z1)) -> c_29(#NATDIV#(z0,z1)) #DIV#(#pos(z0),#0()) -> c_30() #DIV#(#pos(z0),#neg(z1)) -> c_31(#NATDIV#(z0,z1)) #DIV#(#pos(z0),#pos(z1)) -> c_32(#NATDIV#(z0,z1)) #EQ#(#0(),#0()) -> c_33() #EQ#(#0(),#neg(z0)) -> c_34() #EQ#(#0(),#pos(z0)) -> c_35() #EQ#(#0(),#s(z0)) -> c_36() #EQ#(#neg(z0),#0()) -> c_37() #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)) #EQ#(#neg(z0),#pos(z1)) -> c_39() #EQ#(#pos(z0),#0()) -> c_40() #EQ#(#pos(z0),#neg(z1)) -> c_41() #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)) #EQ#(#s(z0),#0()) -> c_43() #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)) #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)) #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)) #EQ#(::(z0,z1),nil()) -> c_47() #EQ#(nil(),::(z0,z1)) -> c_48() #EQ#(nil(),nil()) -> c_49() #MULT#(#0(),#0()) -> c_50() #MULT#(#0(),#neg(z0)) -> c_51() #MULT#(#0(),#pos(z0)) -> c_52() #MULT#(#neg(z0),#0()) -> c_53() #MULT#(#neg(z0),#neg(z1)) -> c_54(#NATMULT#(z0,z1)) #MULT#(#neg(z0),#pos(z1)) -> c_55(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#0()) -> c_56() #MULT#(#pos(z0),#neg(z1)) -> c_57(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#pos(z1)) -> c_58(#NATMULT#(z0,z1)) #NATDIV#(#0(),#0()) -> c_59() #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)) #NATMULT#(#0(),z0) -> c_61() #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) #NATSUB#(z0,#0()) -> c_63() #NATSUB#(#s(z0),#s(z1)) -> c_64(#NATSUB#(z0,z1)) #PRED#(#0()) -> c_65() #PRED#(#neg(#s(z0))) -> c_66() #PRED#(#pos(#s(#0()))) -> c_67() #PRED#(#pos(#s(#s(z0)))) -> c_68() #SUB#(z0,#0()) -> c_69() #SUB#(z0,#neg(z1)) -> c_70(#ADD#(z0,#pos(z1))) #SUB#(z0,#pos(z1)) -> c_71(#ADD#(z0,#neg(z1))) #SUCC#(#0()) -> c_72() #SUCC#(#neg(#s(#0()))) -> c_73() #SUCC#(#neg(#s(#s(z0)))) -> c_74() #SUCC#(#pos(#s(z0))) -> c_75() #add#(#0(),z0) -> c_76() #add#(#neg(#s(#0())),z0) -> c_77(#pred#(z0)) #add#(#neg(#s(#s(z0))),z1) -> c_78(#pred#(#add(#pos(#s(z0)),z1))) #add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)) #add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))) #and#(#false(),#false()) -> c_81() #and#(#false(),#true()) -> c_82() #and#(#true(),#false()) -> c_83() #and#(#true(),#true()) -> c_84() #div#(#0(),#0()) -> c_85() #div#(#0(),#neg(z0)) -> c_86() #div#(#0(),#pos(z0)) -> c_87() #div#(#neg(z0),#0()) -> c_88() #div#(#neg(z0),#neg(z1)) -> c_89(#natdiv#(z0,z1)) #div#(#neg(z0),#pos(z1)) -> c_90(#natdiv#(z0,z1)) #div#(#pos(z0),#0()) -> c_91() #div#(#pos(z0),#neg(z1)) -> c_92(#natdiv#(z0,z1)) #div#(#pos(z0),#pos(z1)) -> c_93(#natdiv#(z0,z1)) #eq#(#0(),#0()) -> c_94() #eq#(#0(),#neg(z0)) -> c_95() #eq#(#0(),#pos(z0)) -> c_96() #eq#(#0(),#s(z0)) -> c_97() #eq#(#neg(z0),#0()) -> c_98() #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)) #eq#(#neg(z0),#pos(z1)) -> c_100() #eq#(#pos(z0),#0()) -> c_101() #eq#(#pos(z0),#neg(z1)) -> c_102() #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)) #eq#(#s(z0),#0()) -> c_104() #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)) #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))) #eq#(::(z0,z1),nil()) -> c_107() #eq#(nil(),::(z0,z1)) -> c_108() #eq#(nil(),nil()) -> c_109() #equal#(z0,z1) -> c_110(#eq#(z0,z1)) #mult#(#0(),#0()) -> c_111() #mult#(#0(),#neg(z0)) -> c_112() #mult#(#0(),#pos(z0)) -> c_113() #mult#(#neg(z0),#0()) -> c_114() #mult#(#neg(z0),#neg(z1)) -> c_115(#natmult#(z0,z1)) #mult#(#neg(z0),#pos(z1)) -> c_116(#natmult#(z0,z1)) #mult#(#pos(z0),#0()) -> c_117() #mult#(#pos(z0),#neg(z1)) -> c_118(#natmult#(z0,z1)) #mult#(#pos(z0),#pos(z1)) -> c_119(#natmult#(z0,z1)) #natdiv#(#0(),#0()) -> c_120() #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))) #natmult#(#0(),z0) -> c_122() #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))) #natsub#(z0,#0()) -> c_124() #natsub#(#s(z0),#s(z1)) -> c_125(#natsub#(z0,z1)) #pred#(#0()) -> c_126() #pred#(#neg(#s(z0))) -> c_127() #pred#(#pos(#s(#0()))) -> c_128() #pred#(#pos(#s(#s(z0)))) -> c_129() #sub#(z0,#0()) -> c_130() #sub#(z0,#neg(z1)) -> c_131(#add#(z0,#pos(z1))) #sub#(z0,#pos(z1)) -> c_132(#add#(z0,#neg(z1))) #succ#(#0()) -> c_133() #succ#(#neg(#s(#0()))) -> c_134() #succ#(#neg(#s(#s(z0)))) -> c_135() #succ#(#pos(#s(z0))) -> c_136() *#(z0,z1) -> c_137(#mult#(z0,z1)) -#(z0,z1) -> c_138(#sub#(z0,z1)) div#(z0,z1) -> c_139(#div#(z0,z1)) eratos#(z0) -> c_140(eratos#1#(z0)) eratos#1#(::(z0,z1)) -> c_141(eratos#(filter(z0,z1))) eratos#1#(nil()) -> c_142() filter#(z0,z1) -> c_143(filter#1#(z1,z0)) filter#1#(::(z0,z1),z2) -> c_144(filter#2#(filter(z2,z1),z2,z0)) filter#1#(nil(),z0) -> c_145() filter#2#(z0,z1,z2) -> c_146(filter#3#(#equal(mod(z2,z1),#0()),z2,z0)) filter#3#(#false(),z0,z1) -> c_147() filter#3#(#true(),z0,z1) -> c_148() mod#(z0,z1) -> c_149(-#(z0,*(z0,div(z0,z1)))) - Weak TRS: #ADD(#0(),z0) -> c() #ADD(#neg(#s(#0())),z0) -> c1(#PRED(z0)) #ADD(#neg(#s(#s(z0))),z1) -> c2(#PRED(#add(#pos(#s(z0)),z1)),#ADD(#pos(#s(z0)),z1)) #ADD(#pos(#s(#0())),z0) -> c3(#SUCC(z0)) #ADD(#pos(#s(#s(z0))),z1) -> c4(#SUCC(#add(#pos(#s(z0)),z1)),#ADD(#pos(#s(z0)),z1)) #AND(#false(),#false()) -> c5() #AND(#false(),#true()) -> c6() #AND(#true(),#false()) -> c7() #AND(#true(),#true()) -> c8() #DIV(#0(),#0()) -> c9() #DIV(#0(),#neg(z0)) -> c10() #DIV(#0(),#pos(z0)) -> c11() #DIV(#neg(z0),#0()) -> c12() #DIV(#neg(z0),#neg(z1)) -> c13(#NATDIV(z0,z1)) #DIV(#neg(z0),#pos(z1)) -> c14(#NATDIV(z0,z1)) #DIV(#pos(z0),#0()) -> c15() #DIV(#pos(z0),#neg(z1)) -> c16(#NATDIV(z0,z1)) #DIV(#pos(z0),#pos(z1)) -> c17(#NATDIV(z0,z1)) #EQ(#0(),#0()) -> c18() #EQ(#0(),#neg(z0)) -> c19() #EQ(#0(),#pos(z0)) -> c20() #EQ(#0(),#s(z0)) -> c21() #EQ(#neg(z0),#0()) -> c22() #EQ(#neg(z0),#neg(z1)) -> c23(#EQ(z0,z1)) #EQ(#neg(z0),#pos(z1)) -> c24() #EQ(#pos(z0),#0()) -> c25() #EQ(#pos(z0),#neg(z1)) -> c26() #EQ(#pos(z0),#pos(z1)) -> c27(#EQ(z0,z1)) #EQ(#s(z0),#0()) -> c28() #EQ(#s(z0),#s(z1)) -> c29(#EQ(z0,z1)) #EQ(::(z0,z1),::(z2,z3)) -> c30(#AND(#eq(z0,z2),#eq(z1,z3)),#EQ(z0,z2)) #EQ(::(z0,z1),::(z2,z3)) -> c31(#AND(#eq(z0,z2),#eq(z1,z3)),#EQ(z1,z3)) #EQ(::(z0,z1),nil()) -> c32() #EQ(nil(),::(z0,z1)) -> c33() #EQ(nil(),nil()) -> c34() #MULT(#0(),#0()) -> c35() #MULT(#0(),#neg(z0)) -> c36() #MULT(#0(),#pos(z0)) -> c37() #MULT(#neg(z0),#0()) -> c38() #MULT(#neg(z0),#neg(z1)) -> c39(#NATMULT(z0,z1)) #MULT(#neg(z0),#pos(z1)) -> c40(#NATMULT(z0,z1)) #MULT(#pos(z0),#0()) -> c41() #MULT(#pos(z0),#neg(z1)) -> c42(#NATMULT(z0,z1)) #MULT(#pos(z0),#pos(z1)) -> c43(#NATMULT(z0,z1)) #NATDIV(#0(),#0()) -> c44() #NATDIV(#s(z0),#s(z1)) -> c45(#NATDIV(#natsub(z0,z1),#s(z1)),#NATSUB(z0,z1)) #NATMULT(#0(),z0) -> c46() #NATMULT(#s(z0),z1) -> c47(#ADD(#pos(z1),#natmult(z0,z1)),#NATMULT(z0,z1)) #NATSUB(z0,#0()) -> c48() #NATSUB(#s(z0),#s(z1)) -> c49(#NATSUB(z0,z1)) #PRED(#0()) -> c50() #PRED(#neg(#s(z0))) -> c51() #PRED(#pos(#s(#0()))) -> c52() #PRED(#pos(#s(#s(z0)))) -> c53() #SUB(z0,#0()) -> c54() #SUB(z0,#neg(z1)) -> c55(#ADD(z0,#pos(z1))) #SUB(z0,#pos(z1)) -> c56(#ADD(z0,#neg(z1))) #SUCC(#0()) -> c57() #SUCC(#neg(#s(#0()))) -> c58() #SUCC(#neg(#s(#s(z0)))) -> c59() #SUCC(#pos(#s(z0))) -> c60() #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) eratos(z0) -> eratos#1(z0) eratos#1(::(z0,z1)) -> ::(z0,eratos(filter(z0,z1))) eratos#1(nil()) -> nil() filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,nil} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) #ADD#(#0(),z0) -> c_15() #ADD#(#neg(#s(#0())),z0) -> c_16(#PRED#(z0)) #ADD#(#neg(#s(#s(z0))),z1) -> c_17(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)) #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #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(z0)) -> c_25() #DIV#(#0(),#pos(z0)) -> c_26() #DIV#(#neg(z0),#0()) -> c_27() #DIV#(#neg(z0),#neg(z1)) -> c_28(#NATDIV#(z0,z1)) #DIV#(#neg(z0),#pos(z1)) -> c_29(#NATDIV#(z0,z1)) #DIV#(#pos(z0),#0()) -> c_30() #DIV#(#pos(z0),#neg(z1)) -> c_31(#NATDIV#(z0,z1)) #DIV#(#pos(z0),#pos(z1)) -> c_32(#NATDIV#(z0,z1)) #EQ#(#0(),#0()) -> c_33() #EQ#(#0(),#neg(z0)) -> c_34() #EQ#(#0(),#pos(z0)) -> c_35() #EQ#(#0(),#s(z0)) -> c_36() #EQ#(#neg(z0),#0()) -> c_37() #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)) #EQ#(#neg(z0),#pos(z1)) -> c_39() #EQ#(#pos(z0),#0()) -> c_40() #EQ#(#pos(z0),#neg(z1)) -> c_41() #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)) #EQ#(#s(z0),#0()) -> c_43() #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)) #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)) #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)) #EQ#(::(z0,z1),nil()) -> c_47() #EQ#(nil(),::(z0,z1)) -> c_48() #EQ#(nil(),nil()) -> c_49() #EQUAL#(z0,z1) -> c_1(#EQ#(z0,z1)) #MULT#(#0(),#0()) -> c_50() #MULT#(#0(),#neg(z0)) -> c_51() #MULT#(#0(),#pos(z0)) -> c_52() #MULT#(#neg(z0),#0()) -> c_53() #MULT#(#neg(z0),#neg(z1)) -> c_54(#NATMULT#(z0,z1)) #MULT#(#neg(z0),#pos(z1)) -> c_55(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#0()) -> c_56() #MULT#(#pos(z0),#neg(z1)) -> c_57(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#pos(z1)) -> c_58(#NATMULT#(z0,z1)) #NATDIV#(#0(),#0()) -> c_59() #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)) #NATMULT#(#0(),z0) -> c_61() #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) #NATSUB#(z0,#0()) -> c_63() #NATSUB#(#s(z0),#s(z1)) -> c_64(#NATSUB#(z0,z1)) #PRED#(#0()) -> c_65() #PRED#(#neg(#s(z0))) -> c_66() #PRED#(#pos(#s(#0()))) -> c_67() #PRED#(#pos(#s(#s(z0)))) -> c_68() #SUB#(z0,#0()) -> c_69() #SUB#(z0,#neg(z1)) -> c_70(#ADD#(z0,#pos(z1))) #SUB#(z0,#pos(z1)) -> c_71(#ADD#(z0,#neg(z1))) #SUCC#(#0()) -> c_72() #SUCC#(#neg(#s(#0()))) -> c_73() #SUCC#(#neg(#s(#s(z0)))) -> c_74() #SUCC#(#pos(#s(z0))) -> c_75() #add#(#0(),z0) -> c_76() #add#(#neg(#s(#0())),z0) -> c_77(#pred#(z0)) #add#(#neg(#s(#s(z0))),z1) -> c_78(#pred#(#add(#pos(#s(z0)),z1))) #add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)) #add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))) #and#(#false(),#false()) -> c_81() #and#(#false(),#true()) -> c_82() #and#(#true(),#false()) -> c_83() #and#(#true(),#true()) -> c_84() #div#(#0(),#0()) -> c_85() #div#(#0(),#neg(z0)) -> c_86() #div#(#0(),#pos(z0)) -> c_87() #div#(#neg(z0),#0()) -> c_88() #div#(#neg(z0),#neg(z1)) -> c_89(#natdiv#(z0,z1)) #div#(#neg(z0),#pos(z1)) -> c_90(#natdiv#(z0,z1)) #div#(#pos(z0),#0()) -> c_91() #div#(#pos(z0),#neg(z1)) -> c_92(#natdiv#(z0,z1)) #div#(#pos(z0),#pos(z1)) -> c_93(#natdiv#(z0,z1)) #eq#(#0(),#0()) -> c_94() #eq#(#0(),#neg(z0)) -> c_95() #eq#(#0(),#pos(z0)) -> c_96() #eq#(#0(),#s(z0)) -> c_97() #eq#(#neg(z0),#0()) -> c_98() #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)) #eq#(#neg(z0),#pos(z1)) -> c_100() #eq#(#pos(z0),#0()) -> c_101() #eq#(#pos(z0),#neg(z1)) -> c_102() #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)) #eq#(#s(z0),#0()) -> c_104() #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)) #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))) #eq#(::(z0,z1),nil()) -> c_107() #eq#(nil(),::(z0,z1)) -> c_108() #eq#(nil(),nil()) -> c_109() #equal#(z0,z1) -> c_110(#eq#(z0,z1)) #mult#(#0(),#0()) -> c_111() #mult#(#0(),#neg(z0)) -> c_112() #mult#(#0(),#pos(z0)) -> c_113() #mult#(#neg(z0),#0()) -> c_114() #mult#(#neg(z0),#neg(z1)) -> c_115(#natmult#(z0,z1)) #mult#(#neg(z0),#pos(z1)) -> c_116(#natmult#(z0,z1)) #mult#(#pos(z0),#0()) -> c_117() #mult#(#pos(z0),#neg(z1)) -> c_118(#natmult#(z0,z1)) #mult#(#pos(z0),#pos(z1)) -> c_119(#natmult#(z0,z1)) #natdiv#(#0(),#0()) -> c_120() #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))) #natmult#(#0(),z0) -> c_122() #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))) #natsub#(z0,#0()) -> c_124() #natsub#(#s(z0),#s(z1)) -> c_125(#natsub#(z0,z1)) #pred#(#0()) -> c_126() #pred#(#neg(#s(z0))) -> c_127() #pred#(#pos(#s(#0()))) -> c_128() #pred#(#pos(#s(#s(z0)))) -> c_129() #sub#(z0,#0()) -> c_130() #sub#(z0,#neg(z1)) -> c_131(#add#(z0,#pos(z1))) #sub#(z0,#pos(z1)) -> c_132(#add#(z0,#neg(z1))) #succ#(#0()) -> c_133() #succ#(#neg(#s(#0()))) -> c_134() #succ#(#neg(#s(#s(z0)))) -> c_135() #succ#(#pos(#s(z0))) -> c_136() *#(z0,z1) -> c_137(#mult#(z0,z1)) *'#(z0,z1) -> c_2(#MULT#(z0,z1)) -#(z0,z1) -> c_138(#sub#(z0,z1)) -'#(z0,z1) -> c_3(#SUB#(z0,z1)) DIV#(z0,z1) -> c_4(#DIV#(z0,z1)) ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) ERATOS#1#(nil()) -> c_7() FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)) FILTER#1#(nil(),z0) -> c_10() FILTER#2#(z0,z1,z2) -> c_11(FILTER#3#(#equal(mod(z2,z1),#0()),z2,z0),#EQUAL#(mod(z2,z1),#0()),MOD#(z2,z1)) FILTER#3#(#false(),z0,z1) -> c_12() FILTER#3#(#true(),z0,z1) -> c_13() MOD#(z0,z1) -> c_14(-'#(z0,*(z0,div(z0,z1))),*'#(z0,div(z0,z1)),DIV#(z0,z1)) div#(z0,z1) -> c_139(#div#(z0,z1)) eratos#(z0) -> c_140(eratos#1#(z0)) eratos#1#(::(z0,z1)) -> c_141(eratos#(filter(z0,z1))) eratos#1#(nil()) -> c_142() filter#(z0,z1) -> c_143(filter#1#(z1,z0)) filter#1#(::(z0,z1),z2) -> c_144(filter#2#(filter(z2,z1),z2,z0)) filter#1#(nil(),z0) -> c_145() filter#2#(z0,z1,z2) -> c_146(filter#3#(#equal(mod(z2,z1),#0()),z2,z0)) filter#3#(#false(),z0,z1) -> c_147() filter#3#(#true(),z0,z1) -> c_148() mod#(z0,z1) -> c_149(-#(z0,*(z0,div(z0,z1)))) * Step 4: PredecessorEstimation. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: #EQUAL#(z0,z1) -> c_1(#EQ#(z0,z1)) *'#(z0,z1) -> c_2(#MULT#(z0,z1)) -'#(z0,z1) -> c_3(#SUB#(z0,z1)) DIV#(z0,z1) -> c_4(#DIV#(z0,z1)) ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) ERATOS#1#(nil()) -> c_7() FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)) FILTER#1#(nil(),z0) -> c_10() FILTER#2#(z0,z1,z2) -> c_11(FILTER#3#(#equal(mod(z2,z1),#0()),z2,z0),#EQUAL#(mod(z2,z1),#0()),MOD#(z2,z1)) FILTER#3#(#false(),z0,z1) -> c_12() FILTER#3#(#true(),z0,z1) -> c_13() MOD#(z0,z1) -> c_14(-'#(z0,*(z0,div(z0,z1))),*'#(z0,div(z0,z1)),DIV#(z0,z1)) - Weak DPs: #ADD#(#0(),z0) -> c_15() #ADD#(#neg(#s(#0())),z0) -> c_16(#PRED#(z0)) #ADD#(#neg(#s(#s(z0))),z1) -> c_17(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)) #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #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(z0)) -> c_25() #DIV#(#0(),#pos(z0)) -> c_26() #DIV#(#neg(z0),#0()) -> c_27() #DIV#(#neg(z0),#neg(z1)) -> c_28(#NATDIV#(z0,z1)) #DIV#(#neg(z0),#pos(z1)) -> c_29(#NATDIV#(z0,z1)) #DIV#(#pos(z0),#0()) -> c_30() #DIV#(#pos(z0),#neg(z1)) -> c_31(#NATDIV#(z0,z1)) #DIV#(#pos(z0),#pos(z1)) -> c_32(#NATDIV#(z0,z1)) #EQ#(#0(),#0()) -> c_33() #EQ#(#0(),#neg(z0)) -> c_34() #EQ#(#0(),#pos(z0)) -> c_35() #EQ#(#0(),#s(z0)) -> c_36() #EQ#(#neg(z0),#0()) -> c_37() #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)) #EQ#(#neg(z0),#pos(z1)) -> c_39() #EQ#(#pos(z0),#0()) -> c_40() #EQ#(#pos(z0),#neg(z1)) -> c_41() #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)) #EQ#(#s(z0),#0()) -> c_43() #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)) #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)) #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)) #EQ#(::(z0,z1),nil()) -> c_47() #EQ#(nil(),::(z0,z1)) -> c_48() #EQ#(nil(),nil()) -> c_49() #MULT#(#0(),#0()) -> c_50() #MULT#(#0(),#neg(z0)) -> c_51() #MULT#(#0(),#pos(z0)) -> c_52() #MULT#(#neg(z0),#0()) -> c_53() #MULT#(#neg(z0),#neg(z1)) -> c_54(#NATMULT#(z0,z1)) #MULT#(#neg(z0),#pos(z1)) -> c_55(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#0()) -> c_56() #MULT#(#pos(z0),#neg(z1)) -> c_57(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#pos(z1)) -> c_58(#NATMULT#(z0,z1)) #NATDIV#(#0(),#0()) -> c_59() #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)) #NATMULT#(#0(),z0) -> c_61() #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) #NATSUB#(z0,#0()) -> c_63() #NATSUB#(#s(z0),#s(z1)) -> c_64(#NATSUB#(z0,z1)) #PRED#(#0()) -> c_65() #PRED#(#neg(#s(z0))) -> c_66() #PRED#(#pos(#s(#0()))) -> c_67() #PRED#(#pos(#s(#s(z0)))) -> c_68() #SUB#(z0,#0()) -> c_69() #SUB#(z0,#neg(z1)) -> c_70(#ADD#(z0,#pos(z1))) #SUB#(z0,#pos(z1)) -> c_71(#ADD#(z0,#neg(z1))) #SUCC#(#0()) -> c_72() #SUCC#(#neg(#s(#0()))) -> c_73() #SUCC#(#neg(#s(#s(z0)))) -> c_74() #SUCC#(#pos(#s(z0))) -> c_75() #add#(#0(),z0) -> c_76() #add#(#neg(#s(#0())),z0) -> c_77(#pred#(z0)) #add#(#neg(#s(#s(z0))),z1) -> c_78(#pred#(#add(#pos(#s(z0)),z1))) #add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)) #add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))) #and#(#false(),#false()) -> c_81() #and#(#false(),#true()) -> c_82() #and#(#true(),#false()) -> c_83() #and#(#true(),#true()) -> c_84() #div#(#0(),#0()) -> c_85() #div#(#0(),#neg(z0)) -> c_86() #div#(#0(),#pos(z0)) -> c_87() #div#(#neg(z0),#0()) -> c_88() #div#(#neg(z0),#neg(z1)) -> c_89(#natdiv#(z0,z1)) #div#(#neg(z0),#pos(z1)) -> c_90(#natdiv#(z0,z1)) #div#(#pos(z0),#0()) -> c_91() #div#(#pos(z0),#neg(z1)) -> c_92(#natdiv#(z0,z1)) #div#(#pos(z0),#pos(z1)) -> c_93(#natdiv#(z0,z1)) #eq#(#0(),#0()) -> c_94() #eq#(#0(),#neg(z0)) -> c_95() #eq#(#0(),#pos(z0)) -> c_96() #eq#(#0(),#s(z0)) -> c_97() #eq#(#neg(z0),#0()) -> c_98() #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)) #eq#(#neg(z0),#pos(z1)) -> c_100() #eq#(#pos(z0),#0()) -> c_101() #eq#(#pos(z0),#neg(z1)) -> c_102() #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)) #eq#(#s(z0),#0()) -> c_104() #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)) #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))) #eq#(::(z0,z1),nil()) -> c_107() #eq#(nil(),::(z0,z1)) -> c_108() #eq#(nil(),nil()) -> c_109() #equal#(z0,z1) -> c_110(#eq#(z0,z1)) #mult#(#0(),#0()) -> c_111() #mult#(#0(),#neg(z0)) -> c_112() #mult#(#0(),#pos(z0)) -> c_113() #mult#(#neg(z0),#0()) -> c_114() #mult#(#neg(z0),#neg(z1)) -> c_115(#natmult#(z0,z1)) #mult#(#neg(z0),#pos(z1)) -> c_116(#natmult#(z0,z1)) #mult#(#pos(z0),#0()) -> c_117() #mult#(#pos(z0),#neg(z1)) -> c_118(#natmult#(z0,z1)) #mult#(#pos(z0),#pos(z1)) -> c_119(#natmult#(z0,z1)) #natdiv#(#0(),#0()) -> c_120() #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))) #natmult#(#0(),z0) -> c_122() #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))) #natsub#(z0,#0()) -> c_124() #natsub#(#s(z0),#s(z1)) -> c_125(#natsub#(z0,z1)) #pred#(#0()) -> c_126() #pred#(#neg(#s(z0))) -> c_127() #pred#(#pos(#s(#0()))) -> c_128() #pred#(#pos(#s(#s(z0)))) -> c_129() #sub#(z0,#0()) -> c_130() #sub#(z0,#neg(z1)) -> c_131(#add#(z0,#pos(z1))) #sub#(z0,#pos(z1)) -> c_132(#add#(z0,#neg(z1))) #succ#(#0()) -> c_133() #succ#(#neg(#s(#0()))) -> c_134() #succ#(#neg(#s(#s(z0)))) -> c_135() #succ#(#pos(#s(z0))) -> c_136() *#(z0,z1) -> c_137(#mult#(z0,z1)) -#(z0,z1) -> c_138(#sub#(z0,z1)) div#(z0,z1) -> c_139(#div#(z0,z1)) eratos#(z0) -> c_140(eratos#1#(z0)) eratos#1#(::(z0,z1)) -> c_141(eratos#(filter(z0,z1))) eratos#1#(nil()) -> c_142() filter#(z0,z1) -> c_143(filter#1#(z1,z0)) filter#1#(::(z0,z1),z2) -> c_144(filter#2#(filter(z2,z1),z2,z0)) filter#1#(nil(),z0) -> c_145() filter#2#(z0,z1,z2) -> c_146(filter#3#(#equal(mod(z2,z1),#0()),z2,z0)) filter#3#(#false(),z0,z1) -> c_147() filter#3#(#true(),z0,z1) -> c_148() mod#(z0,z1) -> c_149(-#(z0,*(z0,div(z0,z1)))) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,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#(z0,z1) -> c_1(#EQ#(z0,z1)) 2: *'#(z0,z1) -> c_2(#MULT#(z0,z1)) 3: -'#(z0,z1) -> c_3(#SUB#(z0,z1)) 4: DIV#(z0,z1) -> c_4(#DIV#(z0,z1)) 5: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) 6: ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) 7: ERATOS#1#(nil()) -> c_7() 8: FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) 9: FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)) 10: FILTER#1#(nil(),z0) -> c_10() 11: FILTER#2#(z0,z1,z2) -> c_11(FILTER#3#(#equal(mod(z2,z1),#0()),z2,z0) ,#EQUAL#(mod(z2,z1),#0()) ,MOD#(z2,z1)) 12: FILTER#3#(#false(),z0,z1) -> c_12() 13: FILTER#3#(#true(),z0,z1) -> c_13() 14: MOD#(z0,z1) -> c_14(-'#(z0,*(z0,div(z0,z1))),*'#(z0,div(z0,z1)),DIV#(z0,z1)) 15: #ADD#(#0(),z0) -> c_15() 16: #ADD#(#neg(#s(#0())),z0) -> c_16(#PRED#(z0)) 17: #ADD#(#neg(#s(#s(z0))),z1) -> c_17(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) 18: #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)) 19: #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) 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(z0)) -> c_25() 26: #DIV#(#0(),#pos(z0)) -> c_26() 27: #DIV#(#neg(z0),#0()) -> c_27() 28: #DIV#(#neg(z0),#neg(z1)) -> c_28(#NATDIV#(z0,z1)) 29: #DIV#(#neg(z0),#pos(z1)) -> c_29(#NATDIV#(z0,z1)) 30: #DIV#(#pos(z0),#0()) -> c_30() 31: #DIV#(#pos(z0),#neg(z1)) -> c_31(#NATDIV#(z0,z1)) 32: #DIV#(#pos(z0),#pos(z1)) -> c_32(#NATDIV#(z0,z1)) 33: #EQ#(#0(),#0()) -> c_33() 34: #EQ#(#0(),#neg(z0)) -> c_34() 35: #EQ#(#0(),#pos(z0)) -> c_35() 36: #EQ#(#0(),#s(z0)) -> c_36() 37: #EQ#(#neg(z0),#0()) -> c_37() 38: #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)) 39: #EQ#(#neg(z0),#pos(z1)) -> c_39() 40: #EQ#(#pos(z0),#0()) -> c_40() 41: #EQ#(#pos(z0),#neg(z1)) -> c_41() 42: #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)) 43: #EQ#(#s(z0),#0()) -> c_43() 44: #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)) 45: #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)) 46: #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)) 47: #EQ#(::(z0,z1),nil()) -> c_47() 48: #EQ#(nil(),::(z0,z1)) -> c_48() 49: #EQ#(nil(),nil()) -> c_49() 50: #MULT#(#0(),#0()) -> c_50() 51: #MULT#(#0(),#neg(z0)) -> c_51() 52: #MULT#(#0(),#pos(z0)) -> c_52() 53: #MULT#(#neg(z0),#0()) -> c_53() 54: #MULT#(#neg(z0),#neg(z1)) -> c_54(#NATMULT#(z0,z1)) 55: #MULT#(#neg(z0),#pos(z1)) -> c_55(#NATMULT#(z0,z1)) 56: #MULT#(#pos(z0),#0()) -> c_56() 57: #MULT#(#pos(z0),#neg(z1)) -> c_57(#NATMULT#(z0,z1)) 58: #MULT#(#pos(z0),#pos(z1)) -> c_58(#NATMULT#(z0,z1)) 59: #NATDIV#(#0(),#0()) -> c_59() 60: #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)) 61: #NATMULT#(#0(),z0) -> c_61() 62: #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) 63: #NATSUB#(z0,#0()) -> c_63() 64: #NATSUB#(#s(z0),#s(z1)) -> c_64(#NATSUB#(z0,z1)) 65: #PRED#(#0()) -> c_65() 66: #PRED#(#neg(#s(z0))) -> c_66() 67: #PRED#(#pos(#s(#0()))) -> c_67() 68: #PRED#(#pos(#s(#s(z0)))) -> c_68() 69: #SUB#(z0,#0()) -> c_69() 70: #SUB#(z0,#neg(z1)) -> c_70(#ADD#(z0,#pos(z1))) 71: #SUB#(z0,#pos(z1)) -> c_71(#ADD#(z0,#neg(z1))) 72: #SUCC#(#0()) -> c_72() 73: #SUCC#(#neg(#s(#0()))) -> c_73() 74: #SUCC#(#neg(#s(#s(z0)))) -> c_74() 75: #SUCC#(#pos(#s(z0))) -> c_75() 76: #add#(#0(),z0) -> c_76() 77: #add#(#neg(#s(#0())),z0) -> c_77(#pred#(z0)) 78: #add#(#neg(#s(#s(z0))),z1) -> c_78(#pred#(#add(#pos(#s(z0)),z1))) 79: #add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)) 80: #add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))) 81: #and#(#false(),#false()) -> c_81() 82: #and#(#false(),#true()) -> c_82() 83: #and#(#true(),#false()) -> c_83() 84: #and#(#true(),#true()) -> c_84() 85: #div#(#0(),#0()) -> c_85() 86: #div#(#0(),#neg(z0)) -> c_86() 87: #div#(#0(),#pos(z0)) -> c_87() 88: #div#(#neg(z0),#0()) -> c_88() 89: #div#(#neg(z0),#neg(z1)) -> c_89(#natdiv#(z0,z1)) 90: #div#(#neg(z0),#pos(z1)) -> c_90(#natdiv#(z0,z1)) 91: #div#(#pos(z0),#0()) -> c_91() 92: #div#(#pos(z0),#neg(z1)) -> c_92(#natdiv#(z0,z1)) 93: #div#(#pos(z0),#pos(z1)) -> c_93(#natdiv#(z0,z1)) 94: #eq#(#0(),#0()) -> c_94() 95: #eq#(#0(),#neg(z0)) -> c_95() 96: #eq#(#0(),#pos(z0)) -> c_96() 97: #eq#(#0(),#s(z0)) -> c_97() 98: #eq#(#neg(z0),#0()) -> c_98() 99: #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)) 100: #eq#(#neg(z0),#pos(z1)) -> c_100() 101: #eq#(#pos(z0),#0()) -> c_101() 102: #eq#(#pos(z0),#neg(z1)) -> c_102() 103: #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)) 104: #eq#(#s(z0),#0()) -> c_104() 105: #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)) 106: #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))) 107: #eq#(::(z0,z1),nil()) -> c_107() 108: #eq#(nil(),::(z0,z1)) -> c_108() 109: #eq#(nil(),nil()) -> c_109() 110: #equal#(z0,z1) -> c_110(#eq#(z0,z1)) 111: #mult#(#0(),#0()) -> c_111() 112: #mult#(#0(),#neg(z0)) -> c_112() 113: #mult#(#0(),#pos(z0)) -> c_113() 114: #mult#(#neg(z0),#0()) -> c_114() 115: #mult#(#neg(z0),#neg(z1)) -> c_115(#natmult#(z0,z1)) 116: #mult#(#neg(z0),#pos(z1)) -> c_116(#natmult#(z0,z1)) 117: #mult#(#pos(z0),#0()) -> c_117() 118: #mult#(#pos(z0),#neg(z1)) -> c_118(#natmult#(z0,z1)) 119: #mult#(#pos(z0),#pos(z1)) -> c_119(#natmult#(z0,z1)) 120: #natdiv#(#0(),#0()) -> c_120() 121: #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))) 122: #natmult#(#0(),z0) -> c_122() 123: #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))) 124: #natsub#(z0,#0()) -> c_124() 125: #natsub#(#s(z0),#s(z1)) -> c_125(#natsub#(z0,z1)) 126: #pred#(#0()) -> c_126() 127: #pred#(#neg(#s(z0))) -> c_127() 128: #pred#(#pos(#s(#0()))) -> c_128() 129: #pred#(#pos(#s(#s(z0)))) -> c_129() 130: #sub#(z0,#0()) -> c_130() 131: #sub#(z0,#neg(z1)) -> c_131(#add#(z0,#pos(z1))) 132: #sub#(z0,#pos(z1)) -> c_132(#add#(z0,#neg(z1))) 133: #succ#(#0()) -> c_133() 134: #succ#(#neg(#s(#0()))) -> c_134() 135: #succ#(#neg(#s(#s(z0)))) -> c_135() 136: #succ#(#pos(#s(z0))) -> c_136() 137: *#(z0,z1) -> c_137(#mult#(z0,z1)) 138: -#(z0,z1) -> c_138(#sub#(z0,z1)) 139: div#(z0,z1) -> c_139(#div#(z0,z1)) 140: eratos#(z0) -> c_140(eratos#1#(z0)) 141: eratos#1#(::(z0,z1)) -> c_141(eratos#(filter(z0,z1))) 142: eratos#1#(nil()) -> c_142() 143: filter#(z0,z1) -> c_143(filter#1#(z1,z0)) 144: filter#1#(::(z0,z1),z2) -> c_144(filter#2#(filter(z2,z1),z2,z0)) 145: filter#1#(nil(),z0) -> c_145() 146: filter#2#(z0,z1,z2) -> c_146(filter#3#(#equal(mod(z2,z1),#0()),z2,z0)) 147: filter#3#(#false(),z0,z1) -> c_147() 148: filter#3#(#true(),z0,z1) -> c_148() 149: mod#(z0,z1) -> c_149(-#(z0,*(z0,div(z0,z1)))) * Step 5: PredecessorEstimation. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)) FILTER#2#(z0,z1,z2) -> c_11(FILTER#3#(#equal(mod(z2,z1),#0()),z2,z0),#EQUAL#(mod(z2,z1),#0()),MOD#(z2,z1)) MOD#(z0,z1) -> c_14(-'#(z0,*(z0,div(z0,z1))),*'#(z0,div(z0,z1)),DIV#(z0,z1)) - Weak DPs: #ADD#(#0(),z0) -> c_15() #ADD#(#neg(#s(#0())),z0) -> c_16(#PRED#(z0)) #ADD#(#neg(#s(#s(z0))),z1) -> c_17(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)) #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #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(z0)) -> c_25() #DIV#(#0(),#pos(z0)) -> c_26() #DIV#(#neg(z0),#0()) -> c_27() #DIV#(#neg(z0),#neg(z1)) -> c_28(#NATDIV#(z0,z1)) #DIV#(#neg(z0),#pos(z1)) -> c_29(#NATDIV#(z0,z1)) #DIV#(#pos(z0),#0()) -> c_30() #DIV#(#pos(z0),#neg(z1)) -> c_31(#NATDIV#(z0,z1)) #DIV#(#pos(z0),#pos(z1)) -> c_32(#NATDIV#(z0,z1)) #EQ#(#0(),#0()) -> c_33() #EQ#(#0(),#neg(z0)) -> c_34() #EQ#(#0(),#pos(z0)) -> c_35() #EQ#(#0(),#s(z0)) -> c_36() #EQ#(#neg(z0),#0()) -> c_37() #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)) #EQ#(#neg(z0),#pos(z1)) -> c_39() #EQ#(#pos(z0),#0()) -> c_40() #EQ#(#pos(z0),#neg(z1)) -> c_41() #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)) #EQ#(#s(z0),#0()) -> c_43() #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)) #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)) #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)) #EQ#(::(z0,z1),nil()) -> c_47() #EQ#(nil(),::(z0,z1)) -> c_48() #EQ#(nil(),nil()) -> c_49() #EQUAL#(z0,z1) -> c_1(#EQ#(z0,z1)) #MULT#(#0(),#0()) -> c_50() #MULT#(#0(),#neg(z0)) -> c_51() #MULT#(#0(),#pos(z0)) -> c_52() #MULT#(#neg(z0),#0()) -> c_53() #MULT#(#neg(z0),#neg(z1)) -> c_54(#NATMULT#(z0,z1)) #MULT#(#neg(z0),#pos(z1)) -> c_55(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#0()) -> c_56() #MULT#(#pos(z0),#neg(z1)) -> c_57(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#pos(z1)) -> c_58(#NATMULT#(z0,z1)) #NATDIV#(#0(),#0()) -> c_59() #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)) #NATMULT#(#0(),z0) -> c_61() #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) #NATSUB#(z0,#0()) -> c_63() #NATSUB#(#s(z0),#s(z1)) -> c_64(#NATSUB#(z0,z1)) #PRED#(#0()) -> c_65() #PRED#(#neg(#s(z0))) -> c_66() #PRED#(#pos(#s(#0()))) -> c_67() #PRED#(#pos(#s(#s(z0)))) -> c_68() #SUB#(z0,#0()) -> c_69() #SUB#(z0,#neg(z1)) -> c_70(#ADD#(z0,#pos(z1))) #SUB#(z0,#pos(z1)) -> c_71(#ADD#(z0,#neg(z1))) #SUCC#(#0()) -> c_72() #SUCC#(#neg(#s(#0()))) -> c_73() #SUCC#(#neg(#s(#s(z0)))) -> c_74() #SUCC#(#pos(#s(z0))) -> c_75() #add#(#0(),z0) -> c_76() #add#(#neg(#s(#0())),z0) -> c_77(#pred#(z0)) #add#(#neg(#s(#s(z0))),z1) -> c_78(#pred#(#add(#pos(#s(z0)),z1))) #add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)) #add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))) #and#(#false(),#false()) -> c_81() #and#(#false(),#true()) -> c_82() #and#(#true(),#false()) -> c_83() #and#(#true(),#true()) -> c_84() #div#(#0(),#0()) -> c_85() #div#(#0(),#neg(z0)) -> c_86() #div#(#0(),#pos(z0)) -> c_87() #div#(#neg(z0),#0()) -> c_88() #div#(#neg(z0),#neg(z1)) -> c_89(#natdiv#(z0,z1)) #div#(#neg(z0),#pos(z1)) -> c_90(#natdiv#(z0,z1)) #div#(#pos(z0),#0()) -> c_91() #div#(#pos(z0),#neg(z1)) -> c_92(#natdiv#(z0,z1)) #div#(#pos(z0),#pos(z1)) -> c_93(#natdiv#(z0,z1)) #eq#(#0(),#0()) -> c_94() #eq#(#0(),#neg(z0)) -> c_95() #eq#(#0(),#pos(z0)) -> c_96() #eq#(#0(),#s(z0)) -> c_97() #eq#(#neg(z0),#0()) -> c_98() #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)) #eq#(#neg(z0),#pos(z1)) -> c_100() #eq#(#pos(z0),#0()) -> c_101() #eq#(#pos(z0),#neg(z1)) -> c_102() #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)) #eq#(#s(z0),#0()) -> c_104() #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)) #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))) #eq#(::(z0,z1),nil()) -> c_107() #eq#(nil(),::(z0,z1)) -> c_108() #eq#(nil(),nil()) -> c_109() #equal#(z0,z1) -> c_110(#eq#(z0,z1)) #mult#(#0(),#0()) -> c_111() #mult#(#0(),#neg(z0)) -> c_112() #mult#(#0(),#pos(z0)) -> c_113() #mult#(#neg(z0),#0()) -> c_114() #mult#(#neg(z0),#neg(z1)) -> c_115(#natmult#(z0,z1)) #mult#(#neg(z0),#pos(z1)) -> c_116(#natmult#(z0,z1)) #mult#(#pos(z0),#0()) -> c_117() #mult#(#pos(z0),#neg(z1)) -> c_118(#natmult#(z0,z1)) #mult#(#pos(z0),#pos(z1)) -> c_119(#natmult#(z0,z1)) #natdiv#(#0(),#0()) -> c_120() #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))) #natmult#(#0(),z0) -> c_122() #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))) #natsub#(z0,#0()) -> c_124() #natsub#(#s(z0),#s(z1)) -> c_125(#natsub#(z0,z1)) #pred#(#0()) -> c_126() #pred#(#neg(#s(z0))) -> c_127() #pred#(#pos(#s(#0()))) -> c_128() #pred#(#pos(#s(#s(z0)))) -> c_129() #sub#(z0,#0()) -> c_130() #sub#(z0,#neg(z1)) -> c_131(#add#(z0,#pos(z1))) #sub#(z0,#pos(z1)) -> c_132(#add#(z0,#neg(z1))) #succ#(#0()) -> c_133() #succ#(#neg(#s(#0()))) -> c_134() #succ#(#neg(#s(#s(z0)))) -> c_135() #succ#(#pos(#s(z0))) -> c_136() *#(z0,z1) -> c_137(#mult#(z0,z1)) *'#(z0,z1) -> c_2(#MULT#(z0,z1)) -#(z0,z1) -> c_138(#sub#(z0,z1)) -'#(z0,z1) -> c_3(#SUB#(z0,z1)) DIV#(z0,z1) -> c_4(#DIV#(z0,z1)) ERATOS#1#(nil()) -> c_7() FILTER#1#(nil(),z0) -> c_10() FILTER#3#(#false(),z0,z1) -> c_12() FILTER#3#(#true(),z0,z1) -> c_13() div#(z0,z1) -> c_139(#div#(z0,z1)) eratos#(z0) -> c_140(eratos#1#(z0)) eratos#1#(::(z0,z1)) -> c_141(eratos#(filter(z0,z1))) eratos#1#(nil()) -> c_142() filter#(z0,z1) -> c_143(filter#1#(z1,z0)) filter#1#(::(z0,z1),z2) -> c_144(filter#2#(filter(z2,z1),z2,z0)) filter#1#(nil(),z0) -> c_145() filter#2#(z0,z1,z2) -> c_146(filter#3#(#equal(mod(z2,z1),#0()),z2,z0)) filter#3#(#false(),z0,z1) -> c_147() filter#3#(#true(),z0,z1) -> c_148() mod#(z0,z1) -> c_149(-#(z0,*(z0,div(z0,z1)))) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,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#(z0) -> c_5(ERATOS#1#(z0)) 2: ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) 3: FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) 4: FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)) 5: FILTER#2#(z0,z1,z2) -> c_11(FILTER#3#(#equal(mod(z2,z1),#0()),z2,z0) ,#EQUAL#(mod(z2,z1),#0()) ,MOD#(z2,z1)) 6: MOD#(z0,z1) -> c_14(-'#(z0,*(z0,div(z0,z1))),*'#(z0,div(z0,z1)),DIV#(z0,z1)) 7: #ADD#(#0(),z0) -> c_15() 8: #ADD#(#neg(#s(#0())),z0) -> c_16(#PRED#(z0)) 9: #ADD#(#neg(#s(#s(z0))),z1) -> c_17(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) 10: #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)) 11: #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) 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(z0)) -> c_25() 18: #DIV#(#0(),#pos(z0)) -> c_26() 19: #DIV#(#neg(z0),#0()) -> c_27() 20: #DIV#(#neg(z0),#neg(z1)) -> c_28(#NATDIV#(z0,z1)) 21: #DIV#(#neg(z0),#pos(z1)) -> c_29(#NATDIV#(z0,z1)) 22: #DIV#(#pos(z0),#0()) -> c_30() 23: #DIV#(#pos(z0),#neg(z1)) -> c_31(#NATDIV#(z0,z1)) 24: #DIV#(#pos(z0),#pos(z1)) -> c_32(#NATDIV#(z0,z1)) 25: #EQ#(#0(),#0()) -> c_33() 26: #EQ#(#0(),#neg(z0)) -> c_34() 27: #EQ#(#0(),#pos(z0)) -> c_35() 28: #EQ#(#0(),#s(z0)) -> c_36() 29: #EQ#(#neg(z0),#0()) -> c_37() 30: #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)) 31: #EQ#(#neg(z0),#pos(z1)) -> c_39() 32: #EQ#(#pos(z0),#0()) -> c_40() 33: #EQ#(#pos(z0),#neg(z1)) -> c_41() 34: #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)) 35: #EQ#(#s(z0),#0()) -> c_43() 36: #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)) 37: #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)) 38: #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)) 39: #EQ#(::(z0,z1),nil()) -> c_47() 40: #EQ#(nil(),::(z0,z1)) -> c_48() 41: #EQ#(nil(),nil()) -> c_49() 42: #EQUAL#(z0,z1) -> c_1(#EQ#(z0,z1)) 43: #MULT#(#0(),#0()) -> c_50() 44: #MULT#(#0(),#neg(z0)) -> c_51() 45: #MULT#(#0(),#pos(z0)) -> c_52() 46: #MULT#(#neg(z0),#0()) -> c_53() 47: #MULT#(#neg(z0),#neg(z1)) -> c_54(#NATMULT#(z0,z1)) 48: #MULT#(#neg(z0),#pos(z1)) -> c_55(#NATMULT#(z0,z1)) 49: #MULT#(#pos(z0),#0()) -> c_56() 50: #MULT#(#pos(z0),#neg(z1)) -> c_57(#NATMULT#(z0,z1)) 51: #MULT#(#pos(z0),#pos(z1)) -> c_58(#NATMULT#(z0,z1)) 52: #NATDIV#(#0(),#0()) -> c_59() 53: #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)) 54: #NATMULT#(#0(),z0) -> c_61() 55: #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) 56: #NATSUB#(z0,#0()) -> c_63() 57: #NATSUB#(#s(z0),#s(z1)) -> c_64(#NATSUB#(z0,z1)) 58: #PRED#(#0()) -> c_65() 59: #PRED#(#neg(#s(z0))) -> c_66() 60: #PRED#(#pos(#s(#0()))) -> c_67() 61: #PRED#(#pos(#s(#s(z0)))) -> c_68() 62: #SUB#(z0,#0()) -> c_69() 63: #SUB#(z0,#neg(z1)) -> c_70(#ADD#(z0,#pos(z1))) 64: #SUB#(z0,#pos(z1)) -> c_71(#ADD#(z0,#neg(z1))) 65: #SUCC#(#0()) -> c_72() 66: #SUCC#(#neg(#s(#0()))) -> c_73() 67: #SUCC#(#neg(#s(#s(z0)))) -> c_74() 68: #SUCC#(#pos(#s(z0))) -> c_75() 69: #add#(#0(),z0) -> c_76() 70: #add#(#neg(#s(#0())),z0) -> c_77(#pred#(z0)) 71: #add#(#neg(#s(#s(z0))),z1) -> c_78(#pred#(#add(#pos(#s(z0)),z1))) 72: #add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)) 73: #add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))) 74: #and#(#false(),#false()) -> c_81() 75: #and#(#false(),#true()) -> c_82() 76: #and#(#true(),#false()) -> c_83() 77: #and#(#true(),#true()) -> c_84() 78: #div#(#0(),#0()) -> c_85() 79: #div#(#0(),#neg(z0)) -> c_86() 80: #div#(#0(),#pos(z0)) -> c_87() 81: #div#(#neg(z0),#0()) -> c_88() 82: #div#(#neg(z0),#neg(z1)) -> c_89(#natdiv#(z0,z1)) 83: #div#(#neg(z0),#pos(z1)) -> c_90(#natdiv#(z0,z1)) 84: #div#(#pos(z0),#0()) -> c_91() 85: #div#(#pos(z0),#neg(z1)) -> c_92(#natdiv#(z0,z1)) 86: #div#(#pos(z0),#pos(z1)) -> c_93(#natdiv#(z0,z1)) 87: #eq#(#0(),#0()) -> c_94() 88: #eq#(#0(),#neg(z0)) -> c_95() 89: #eq#(#0(),#pos(z0)) -> c_96() 90: #eq#(#0(),#s(z0)) -> c_97() 91: #eq#(#neg(z0),#0()) -> c_98() 92: #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)) 93: #eq#(#neg(z0),#pos(z1)) -> c_100() 94: #eq#(#pos(z0),#0()) -> c_101() 95: #eq#(#pos(z0),#neg(z1)) -> c_102() 96: #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)) 97: #eq#(#s(z0),#0()) -> c_104() 98: #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)) 99: #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))) 100: #eq#(::(z0,z1),nil()) -> c_107() 101: #eq#(nil(),::(z0,z1)) -> c_108() 102: #eq#(nil(),nil()) -> c_109() 103: #equal#(z0,z1) -> c_110(#eq#(z0,z1)) 104: #mult#(#0(),#0()) -> c_111() 105: #mult#(#0(),#neg(z0)) -> c_112() 106: #mult#(#0(),#pos(z0)) -> c_113() 107: #mult#(#neg(z0),#0()) -> c_114() 108: #mult#(#neg(z0),#neg(z1)) -> c_115(#natmult#(z0,z1)) 109: #mult#(#neg(z0),#pos(z1)) -> c_116(#natmult#(z0,z1)) 110: #mult#(#pos(z0),#0()) -> c_117() 111: #mult#(#pos(z0),#neg(z1)) -> c_118(#natmult#(z0,z1)) 112: #mult#(#pos(z0),#pos(z1)) -> c_119(#natmult#(z0,z1)) 113: #natdiv#(#0(),#0()) -> c_120() 114: #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))) 115: #natmult#(#0(),z0) -> c_122() 116: #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))) 117: #natsub#(z0,#0()) -> c_124() 118: #natsub#(#s(z0),#s(z1)) -> c_125(#natsub#(z0,z1)) 119: #pred#(#0()) -> c_126() 120: #pred#(#neg(#s(z0))) -> c_127() 121: #pred#(#pos(#s(#0()))) -> c_128() 122: #pred#(#pos(#s(#s(z0)))) -> c_129() 123: #sub#(z0,#0()) -> c_130() 124: #sub#(z0,#neg(z1)) -> c_131(#add#(z0,#pos(z1))) 125: #sub#(z0,#pos(z1)) -> c_132(#add#(z0,#neg(z1))) 126: #succ#(#0()) -> c_133() 127: #succ#(#neg(#s(#0()))) -> c_134() 128: #succ#(#neg(#s(#s(z0)))) -> c_135() 129: #succ#(#pos(#s(z0))) -> c_136() 130: *#(z0,z1) -> c_137(#mult#(z0,z1)) 131: *'#(z0,z1) -> c_2(#MULT#(z0,z1)) 132: -#(z0,z1) -> c_138(#sub#(z0,z1)) 133: -'#(z0,z1) -> c_3(#SUB#(z0,z1)) 134: DIV#(z0,z1) -> c_4(#DIV#(z0,z1)) 135: ERATOS#1#(nil()) -> c_7() 136: FILTER#1#(nil(),z0) -> c_10() 137: FILTER#3#(#false(),z0,z1) -> c_12() 138: FILTER#3#(#true(),z0,z1) -> c_13() 139: div#(z0,z1) -> c_139(#div#(z0,z1)) 140: eratos#(z0) -> c_140(eratos#1#(z0)) 141: eratos#1#(::(z0,z1)) -> c_141(eratos#(filter(z0,z1))) 142: eratos#1#(nil()) -> c_142() 143: filter#(z0,z1) -> c_143(filter#1#(z1,z0)) 144: filter#1#(::(z0,z1),z2) -> c_144(filter#2#(filter(z2,z1),z2,z0)) 145: filter#1#(nil(),z0) -> c_145() 146: filter#2#(z0,z1,z2) -> c_146(filter#3#(#equal(mod(z2,z1),#0()),z2,z0)) 147: filter#3#(#false(),z0,z1) -> c_147() 148: filter#3#(#true(),z0,z1) -> c_148() 149: mod#(z0,z1) -> c_149(-#(z0,*(z0,div(z0,z1)))) * Step 6: PredecessorEstimation. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)) FILTER#2#(z0,z1,z2) -> c_11(FILTER#3#(#equal(mod(z2,z1),#0()),z2,z0),#EQUAL#(mod(z2,z1),#0()),MOD#(z2,z1)) - Weak DPs: #ADD#(#0(),z0) -> c_15() #ADD#(#neg(#s(#0())),z0) -> c_16(#PRED#(z0)) #ADD#(#neg(#s(#s(z0))),z1) -> c_17(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)) #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #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(z0)) -> c_25() #DIV#(#0(),#pos(z0)) -> c_26() #DIV#(#neg(z0),#0()) -> c_27() #DIV#(#neg(z0),#neg(z1)) -> c_28(#NATDIV#(z0,z1)) #DIV#(#neg(z0),#pos(z1)) -> c_29(#NATDIV#(z0,z1)) #DIV#(#pos(z0),#0()) -> c_30() #DIV#(#pos(z0),#neg(z1)) -> c_31(#NATDIV#(z0,z1)) #DIV#(#pos(z0),#pos(z1)) -> c_32(#NATDIV#(z0,z1)) #EQ#(#0(),#0()) -> c_33() #EQ#(#0(),#neg(z0)) -> c_34() #EQ#(#0(),#pos(z0)) -> c_35() #EQ#(#0(),#s(z0)) -> c_36() #EQ#(#neg(z0),#0()) -> c_37() #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)) #EQ#(#neg(z0),#pos(z1)) -> c_39() #EQ#(#pos(z0),#0()) -> c_40() #EQ#(#pos(z0),#neg(z1)) -> c_41() #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)) #EQ#(#s(z0),#0()) -> c_43() #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)) #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)) #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)) #EQ#(::(z0,z1),nil()) -> c_47() #EQ#(nil(),::(z0,z1)) -> c_48() #EQ#(nil(),nil()) -> c_49() #EQUAL#(z0,z1) -> c_1(#EQ#(z0,z1)) #MULT#(#0(),#0()) -> c_50() #MULT#(#0(),#neg(z0)) -> c_51() #MULT#(#0(),#pos(z0)) -> c_52() #MULT#(#neg(z0),#0()) -> c_53() #MULT#(#neg(z0),#neg(z1)) -> c_54(#NATMULT#(z0,z1)) #MULT#(#neg(z0),#pos(z1)) -> c_55(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#0()) -> c_56() #MULT#(#pos(z0),#neg(z1)) -> c_57(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#pos(z1)) -> c_58(#NATMULT#(z0,z1)) #NATDIV#(#0(),#0()) -> c_59() #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)) #NATMULT#(#0(),z0) -> c_61() #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) #NATSUB#(z0,#0()) -> c_63() #NATSUB#(#s(z0),#s(z1)) -> c_64(#NATSUB#(z0,z1)) #PRED#(#0()) -> c_65() #PRED#(#neg(#s(z0))) -> c_66() #PRED#(#pos(#s(#0()))) -> c_67() #PRED#(#pos(#s(#s(z0)))) -> c_68() #SUB#(z0,#0()) -> c_69() #SUB#(z0,#neg(z1)) -> c_70(#ADD#(z0,#pos(z1))) #SUB#(z0,#pos(z1)) -> c_71(#ADD#(z0,#neg(z1))) #SUCC#(#0()) -> c_72() #SUCC#(#neg(#s(#0()))) -> c_73() #SUCC#(#neg(#s(#s(z0)))) -> c_74() #SUCC#(#pos(#s(z0))) -> c_75() #add#(#0(),z0) -> c_76() #add#(#neg(#s(#0())),z0) -> c_77(#pred#(z0)) #add#(#neg(#s(#s(z0))),z1) -> c_78(#pred#(#add(#pos(#s(z0)),z1))) #add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)) #add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))) #and#(#false(),#false()) -> c_81() #and#(#false(),#true()) -> c_82() #and#(#true(),#false()) -> c_83() #and#(#true(),#true()) -> c_84() #div#(#0(),#0()) -> c_85() #div#(#0(),#neg(z0)) -> c_86() #div#(#0(),#pos(z0)) -> c_87() #div#(#neg(z0),#0()) -> c_88() #div#(#neg(z0),#neg(z1)) -> c_89(#natdiv#(z0,z1)) #div#(#neg(z0),#pos(z1)) -> c_90(#natdiv#(z0,z1)) #div#(#pos(z0),#0()) -> c_91() #div#(#pos(z0),#neg(z1)) -> c_92(#natdiv#(z0,z1)) #div#(#pos(z0),#pos(z1)) -> c_93(#natdiv#(z0,z1)) #eq#(#0(),#0()) -> c_94() #eq#(#0(),#neg(z0)) -> c_95() #eq#(#0(),#pos(z0)) -> c_96() #eq#(#0(),#s(z0)) -> c_97() #eq#(#neg(z0),#0()) -> c_98() #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)) #eq#(#neg(z0),#pos(z1)) -> c_100() #eq#(#pos(z0),#0()) -> c_101() #eq#(#pos(z0),#neg(z1)) -> c_102() #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)) #eq#(#s(z0),#0()) -> c_104() #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)) #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))) #eq#(::(z0,z1),nil()) -> c_107() #eq#(nil(),::(z0,z1)) -> c_108() #eq#(nil(),nil()) -> c_109() #equal#(z0,z1) -> c_110(#eq#(z0,z1)) #mult#(#0(),#0()) -> c_111() #mult#(#0(),#neg(z0)) -> c_112() #mult#(#0(),#pos(z0)) -> c_113() #mult#(#neg(z0),#0()) -> c_114() #mult#(#neg(z0),#neg(z1)) -> c_115(#natmult#(z0,z1)) #mult#(#neg(z0),#pos(z1)) -> c_116(#natmult#(z0,z1)) #mult#(#pos(z0),#0()) -> c_117() #mult#(#pos(z0),#neg(z1)) -> c_118(#natmult#(z0,z1)) #mult#(#pos(z0),#pos(z1)) -> c_119(#natmult#(z0,z1)) #natdiv#(#0(),#0()) -> c_120() #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))) #natmult#(#0(),z0) -> c_122() #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))) #natsub#(z0,#0()) -> c_124() #natsub#(#s(z0),#s(z1)) -> c_125(#natsub#(z0,z1)) #pred#(#0()) -> c_126() #pred#(#neg(#s(z0))) -> c_127() #pred#(#pos(#s(#0()))) -> c_128() #pred#(#pos(#s(#s(z0)))) -> c_129() #sub#(z0,#0()) -> c_130() #sub#(z0,#neg(z1)) -> c_131(#add#(z0,#pos(z1))) #sub#(z0,#pos(z1)) -> c_132(#add#(z0,#neg(z1))) #succ#(#0()) -> c_133() #succ#(#neg(#s(#0()))) -> c_134() #succ#(#neg(#s(#s(z0)))) -> c_135() #succ#(#pos(#s(z0))) -> c_136() *#(z0,z1) -> c_137(#mult#(z0,z1)) *'#(z0,z1) -> c_2(#MULT#(z0,z1)) -#(z0,z1) -> c_138(#sub#(z0,z1)) -'#(z0,z1) -> c_3(#SUB#(z0,z1)) DIV#(z0,z1) -> c_4(#DIV#(z0,z1)) ERATOS#1#(nil()) -> c_7() FILTER#1#(nil(),z0) -> c_10() FILTER#3#(#false(),z0,z1) -> c_12() FILTER#3#(#true(),z0,z1) -> c_13() MOD#(z0,z1) -> c_14(-'#(z0,*(z0,div(z0,z1))),*'#(z0,div(z0,z1)),DIV#(z0,z1)) div#(z0,z1) -> c_139(#div#(z0,z1)) eratos#(z0) -> c_140(eratos#1#(z0)) eratos#1#(::(z0,z1)) -> c_141(eratos#(filter(z0,z1))) eratos#1#(nil()) -> c_142() filter#(z0,z1) -> c_143(filter#1#(z1,z0)) filter#1#(::(z0,z1),z2) -> c_144(filter#2#(filter(z2,z1),z2,z0)) filter#1#(nil(),z0) -> c_145() filter#2#(z0,z1,z2) -> c_146(filter#3#(#equal(mod(z2,z1),#0()),z2,z0)) filter#3#(#false(),z0,z1) -> c_147() filter#3#(#true(),z0,z1) -> c_148() mod#(z0,z1) -> c_149(-#(z0,*(z0,div(z0,z1)))) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,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#(z0) -> c_5(ERATOS#1#(z0)) 2: ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) 3: FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) 4: FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)) 5: FILTER#2#(z0,z1,z2) -> c_11(FILTER#3#(#equal(mod(z2,z1),#0()),z2,z0) ,#EQUAL#(mod(z2,z1),#0()) ,MOD#(z2,z1)) 6: #ADD#(#0(),z0) -> c_15() 7: #ADD#(#neg(#s(#0())),z0) -> c_16(#PRED#(z0)) 8: #ADD#(#neg(#s(#s(z0))),z1) -> c_17(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) 9: #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)) 10: #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) 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(z0)) -> c_25() 17: #DIV#(#0(),#pos(z0)) -> c_26() 18: #DIV#(#neg(z0),#0()) -> c_27() 19: #DIV#(#neg(z0),#neg(z1)) -> c_28(#NATDIV#(z0,z1)) 20: #DIV#(#neg(z0),#pos(z1)) -> c_29(#NATDIV#(z0,z1)) 21: #DIV#(#pos(z0),#0()) -> c_30() 22: #DIV#(#pos(z0),#neg(z1)) -> c_31(#NATDIV#(z0,z1)) 23: #DIV#(#pos(z0),#pos(z1)) -> c_32(#NATDIV#(z0,z1)) 24: #EQ#(#0(),#0()) -> c_33() 25: #EQ#(#0(),#neg(z0)) -> c_34() 26: #EQ#(#0(),#pos(z0)) -> c_35() 27: #EQ#(#0(),#s(z0)) -> c_36() 28: #EQ#(#neg(z0),#0()) -> c_37() 29: #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)) 30: #EQ#(#neg(z0),#pos(z1)) -> c_39() 31: #EQ#(#pos(z0),#0()) -> c_40() 32: #EQ#(#pos(z0),#neg(z1)) -> c_41() 33: #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)) 34: #EQ#(#s(z0),#0()) -> c_43() 35: #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)) 36: #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)) 37: #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)) 38: #EQ#(::(z0,z1),nil()) -> c_47() 39: #EQ#(nil(),::(z0,z1)) -> c_48() 40: #EQ#(nil(),nil()) -> c_49() 41: #EQUAL#(z0,z1) -> c_1(#EQ#(z0,z1)) 42: #MULT#(#0(),#0()) -> c_50() 43: #MULT#(#0(),#neg(z0)) -> c_51() 44: #MULT#(#0(),#pos(z0)) -> c_52() 45: #MULT#(#neg(z0),#0()) -> c_53() 46: #MULT#(#neg(z0),#neg(z1)) -> c_54(#NATMULT#(z0,z1)) 47: #MULT#(#neg(z0),#pos(z1)) -> c_55(#NATMULT#(z0,z1)) 48: #MULT#(#pos(z0),#0()) -> c_56() 49: #MULT#(#pos(z0),#neg(z1)) -> c_57(#NATMULT#(z0,z1)) 50: #MULT#(#pos(z0),#pos(z1)) -> c_58(#NATMULT#(z0,z1)) 51: #NATDIV#(#0(),#0()) -> c_59() 52: #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)) 53: #NATMULT#(#0(),z0) -> c_61() 54: #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) 55: #NATSUB#(z0,#0()) -> c_63() 56: #NATSUB#(#s(z0),#s(z1)) -> c_64(#NATSUB#(z0,z1)) 57: #PRED#(#0()) -> c_65() 58: #PRED#(#neg(#s(z0))) -> c_66() 59: #PRED#(#pos(#s(#0()))) -> c_67() 60: #PRED#(#pos(#s(#s(z0)))) -> c_68() 61: #SUB#(z0,#0()) -> c_69() 62: #SUB#(z0,#neg(z1)) -> c_70(#ADD#(z0,#pos(z1))) 63: #SUB#(z0,#pos(z1)) -> c_71(#ADD#(z0,#neg(z1))) 64: #SUCC#(#0()) -> c_72() 65: #SUCC#(#neg(#s(#0()))) -> c_73() 66: #SUCC#(#neg(#s(#s(z0)))) -> c_74() 67: #SUCC#(#pos(#s(z0))) -> c_75() 68: #add#(#0(),z0) -> c_76() 69: #add#(#neg(#s(#0())),z0) -> c_77(#pred#(z0)) 70: #add#(#neg(#s(#s(z0))),z1) -> c_78(#pred#(#add(#pos(#s(z0)),z1))) 71: #add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)) 72: #add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))) 73: #and#(#false(),#false()) -> c_81() 74: #and#(#false(),#true()) -> c_82() 75: #and#(#true(),#false()) -> c_83() 76: #and#(#true(),#true()) -> c_84() 77: #div#(#0(),#0()) -> c_85() 78: #div#(#0(),#neg(z0)) -> c_86() 79: #div#(#0(),#pos(z0)) -> c_87() 80: #div#(#neg(z0),#0()) -> c_88() 81: #div#(#neg(z0),#neg(z1)) -> c_89(#natdiv#(z0,z1)) 82: #div#(#neg(z0),#pos(z1)) -> c_90(#natdiv#(z0,z1)) 83: #div#(#pos(z0),#0()) -> c_91() 84: #div#(#pos(z0),#neg(z1)) -> c_92(#natdiv#(z0,z1)) 85: #div#(#pos(z0),#pos(z1)) -> c_93(#natdiv#(z0,z1)) 86: #eq#(#0(),#0()) -> c_94() 87: #eq#(#0(),#neg(z0)) -> c_95() 88: #eq#(#0(),#pos(z0)) -> c_96() 89: #eq#(#0(),#s(z0)) -> c_97() 90: #eq#(#neg(z0),#0()) -> c_98() 91: #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)) 92: #eq#(#neg(z0),#pos(z1)) -> c_100() 93: #eq#(#pos(z0),#0()) -> c_101() 94: #eq#(#pos(z0),#neg(z1)) -> c_102() 95: #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)) 96: #eq#(#s(z0),#0()) -> c_104() 97: #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)) 98: #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))) 99: #eq#(::(z0,z1),nil()) -> c_107() 100: #eq#(nil(),::(z0,z1)) -> c_108() 101: #eq#(nil(),nil()) -> c_109() 102: #equal#(z0,z1) -> c_110(#eq#(z0,z1)) 103: #mult#(#0(),#0()) -> c_111() 104: #mult#(#0(),#neg(z0)) -> c_112() 105: #mult#(#0(),#pos(z0)) -> c_113() 106: #mult#(#neg(z0),#0()) -> c_114() 107: #mult#(#neg(z0),#neg(z1)) -> c_115(#natmult#(z0,z1)) 108: #mult#(#neg(z0),#pos(z1)) -> c_116(#natmult#(z0,z1)) 109: #mult#(#pos(z0),#0()) -> c_117() 110: #mult#(#pos(z0),#neg(z1)) -> c_118(#natmult#(z0,z1)) 111: #mult#(#pos(z0),#pos(z1)) -> c_119(#natmult#(z0,z1)) 112: #natdiv#(#0(),#0()) -> c_120() 113: #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))) 114: #natmult#(#0(),z0) -> c_122() 115: #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))) 116: #natsub#(z0,#0()) -> c_124() 117: #natsub#(#s(z0),#s(z1)) -> c_125(#natsub#(z0,z1)) 118: #pred#(#0()) -> c_126() 119: #pred#(#neg(#s(z0))) -> c_127() 120: #pred#(#pos(#s(#0()))) -> c_128() 121: #pred#(#pos(#s(#s(z0)))) -> c_129() 122: #sub#(z0,#0()) -> c_130() 123: #sub#(z0,#neg(z1)) -> c_131(#add#(z0,#pos(z1))) 124: #sub#(z0,#pos(z1)) -> c_132(#add#(z0,#neg(z1))) 125: #succ#(#0()) -> c_133() 126: #succ#(#neg(#s(#0()))) -> c_134() 127: #succ#(#neg(#s(#s(z0)))) -> c_135() 128: #succ#(#pos(#s(z0))) -> c_136() 129: *#(z0,z1) -> c_137(#mult#(z0,z1)) 130: *'#(z0,z1) -> c_2(#MULT#(z0,z1)) 131: -#(z0,z1) -> c_138(#sub#(z0,z1)) 132: -'#(z0,z1) -> c_3(#SUB#(z0,z1)) 133: DIV#(z0,z1) -> c_4(#DIV#(z0,z1)) 134: ERATOS#1#(nil()) -> c_7() 135: FILTER#1#(nil(),z0) -> c_10() 136: FILTER#3#(#false(),z0,z1) -> c_12() 137: FILTER#3#(#true(),z0,z1) -> c_13() 138: MOD#(z0,z1) -> c_14(-'#(z0,*(z0,div(z0,z1))),*'#(z0,div(z0,z1)),DIV#(z0,z1)) 139: div#(z0,z1) -> c_139(#div#(z0,z1)) 140: eratos#(z0) -> c_140(eratos#1#(z0)) 141: eratos#1#(::(z0,z1)) -> c_141(eratos#(filter(z0,z1))) 142: eratos#1#(nil()) -> c_142() 143: filter#(z0,z1) -> c_143(filter#1#(z1,z0)) 144: filter#1#(::(z0,z1),z2) -> c_144(filter#2#(filter(z2,z1),z2,z0)) 145: filter#1#(nil(),z0) -> c_145() 146: filter#2#(z0,z1,z2) -> c_146(filter#3#(#equal(mod(z2,z1),#0()),z2,z0)) 147: filter#3#(#false(),z0,z1) -> c_147() 148: filter#3#(#true(),z0,z1) -> c_148() 149: mod#(z0,z1) -> c_149(-#(z0,*(z0,div(z0,z1)))) * Step 7: RemoveWeakSuffixes. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)) - Weak DPs: #ADD#(#0(),z0) -> c_15() #ADD#(#neg(#s(#0())),z0) -> c_16(#PRED#(z0)) #ADD#(#neg(#s(#s(z0))),z1) -> c_17(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)) #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) #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(z0)) -> c_25() #DIV#(#0(),#pos(z0)) -> c_26() #DIV#(#neg(z0),#0()) -> c_27() #DIV#(#neg(z0),#neg(z1)) -> c_28(#NATDIV#(z0,z1)) #DIV#(#neg(z0),#pos(z1)) -> c_29(#NATDIV#(z0,z1)) #DIV#(#pos(z0),#0()) -> c_30() #DIV#(#pos(z0),#neg(z1)) -> c_31(#NATDIV#(z0,z1)) #DIV#(#pos(z0),#pos(z1)) -> c_32(#NATDIV#(z0,z1)) #EQ#(#0(),#0()) -> c_33() #EQ#(#0(),#neg(z0)) -> c_34() #EQ#(#0(),#pos(z0)) -> c_35() #EQ#(#0(),#s(z0)) -> c_36() #EQ#(#neg(z0),#0()) -> c_37() #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)) #EQ#(#neg(z0),#pos(z1)) -> c_39() #EQ#(#pos(z0),#0()) -> c_40() #EQ#(#pos(z0),#neg(z1)) -> c_41() #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)) #EQ#(#s(z0),#0()) -> c_43() #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)) #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)) #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)) #EQ#(::(z0,z1),nil()) -> c_47() #EQ#(nil(),::(z0,z1)) -> c_48() #EQ#(nil(),nil()) -> c_49() #EQUAL#(z0,z1) -> c_1(#EQ#(z0,z1)) #MULT#(#0(),#0()) -> c_50() #MULT#(#0(),#neg(z0)) -> c_51() #MULT#(#0(),#pos(z0)) -> c_52() #MULT#(#neg(z0),#0()) -> c_53() #MULT#(#neg(z0),#neg(z1)) -> c_54(#NATMULT#(z0,z1)) #MULT#(#neg(z0),#pos(z1)) -> c_55(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#0()) -> c_56() #MULT#(#pos(z0),#neg(z1)) -> c_57(#NATMULT#(z0,z1)) #MULT#(#pos(z0),#pos(z1)) -> c_58(#NATMULT#(z0,z1)) #NATDIV#(#0(),#0()) -> c_59() #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)) #NATMULT#(#0(),z0) -> c_61() #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) #NATSUB#(z0,#0()) -> c_63() #NATSUB#(#s(z0),#s(z1)) -> c_64(#NATSUB#(z0,z1)) #PRED#(#0()) -> c_65() #PRED#(#neg(#s(z0))) -> c_66() #PRED#(#pos(#s(#0()))) -> c_67() #PRED#(#pos(#s(#s(z0)))) -> c_68() #SUB#(z0,#0()) -> c_69() #SUB#(z0,#neg(z1)) -> c_70(#ADD#(z0,#pos(z1))) #SUB#(z0,#pos(z1)) -> c_71(#ADD#(z0,#neg(z1))) #SUCC#(#0()) -> c_72() #SUCC#(#neg(#s(#0()))) -> c_73() #SUCC#(#neg(#s(#s(z0)))) -> c_74() #SUCC#(#pos(#s(z0))) -> c_75() #add#(#0(),z0) -> c_76() #add#(#neg(#s(#0())),z0) -> c_77(#pred#(z0)) #add#(#neg(#s(#s(z0))),z1) -> c_78(#pred#(#add(#pos(#s(z0)),z1))) #add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)) #add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))) #and#(#false(),#false()) -> c_81() #and#(#false(),#true()) -> c_82() #and#(#true(),#false()) -> c_83() #and#(#true(),#true()) -> c_84() #div#(#0(),#0()) -> c_85() #div#(#0(),#neg(z0)) -> c_86() #div#(#0(),#pos(z0)) -> c_87() #div#(#neg(z0),#0()) -> c_88() #div#(#neg(z0),#neg(z1)) -> c_89(#natdiv#(z0,z1)) #div#(#neg(z0),#pos(z1)) -> c_90(#natdiv#(z0,z1)) #div#(#pos(z0),#0()) -> c_91() #div#(#pos(z0),#neg(z1)) -> c_92(#natdiv#(z0,z1)) #div#(#pos(z0),#pos(z1)) -> c_93(#natdiv#(z0,z1)) #eq#(#0(),#0()) -> c_94() #eq#(#0(),#neg(z0)) -> c_95() #eq#(#0(),#pos(z0)) -> c_96() #eq#(#0(),#s(z0)) -> c_97() #eq#(#neg(z0),#0()) -> c_98() #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)) #eq#(#neg(z0),#pos(z1)) -> c_100() #eq#(#pos(z0),#0()) -> c_101() #eq#(#pos(z0),#neg(z1)) -> c_102() #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)) #eq#(#s(z0),#0()) -> c_104() #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)) #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))) #eq#(::(z0,z1),nil()) -> c_107() #eq#(nil(),::(z0,z1)) -> c_108() #eq#(nil(),nil()) -> c_109() #equal#(z0,z1) -> c_110(#eq#(z0,z1)) #mult#(#0(),#0()) -> c_111() #mult#(#0(),#neg(z0)) -> c_112() #mult#(#0(),#pos(z0)) -> c_113() #mult#(#neg(z0),#0()) -> c_114() #mult#(#neg(z0),#neg(z1)) -> c_115(#natmult#(z0,z1)) #mult#(#neg(z0),#pos(z1)) -> c_116(#natmult#(z0,z1)) #mult#(#pos(z0),#0()) -> c_117() #mult#(#pos(z0),#neg(z1)) -> c_118(#natmult#(z0,z1)) #mult#(#pos(z0),#pos(z1)) -> c_119(#natmult#(z0,z1)) #natdiv#(#0(),#0()) -> c_120() #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))) #natmult#(#0(),z0) -> c_122() #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))) #natsub#(z0,#0()) -> c_124() #natsub#(#s(z0),#s(z1)) -> c_125(#natsub#(z0,z1)) #pred#(#0()) -> c_126() #pred#(#neg(#s(z0))) -> c_127() #pred#(#pos(#s(#0()))) -> c_128() #pred#(#pos(#s(#s(z0)))) -> c_129() #sub#(z0,#0()) -> c_130() #sub#(z0,#neg(z1)) -> c_131(#add#(z0,#pos(z1))) #sub#(z0,#pos(z1)) -> c_132(#add#(z0,#neg(z1))) #succ#(#0()) -> c_133() #succ#(#neg(#s(#0()))) -> c_134() #succ#(#neg(#s(#s(z0)))) -> c_135() #succ#(#pos(#s(z0))) -> c_136() *#(z0,z1) -> c_137(#mult#(z0,z1)) *'#(z0,z1) -> c_2(#MULT#(z0,z1)) -#(z0,z1) -> c_138(#sub#(z0,z1)) -'#(z0,z1) -> c_3(#SUB#(z0,z1)) DIV#(z0,z1) -> c_4(#DIV#(z0,z1)) ERATOS#1#(nil()) -> c_7() FILTER#1#(nil(),z0) -> c_10() FILTER#2#(z0,z1,z2) -> c_11(FILTER#3#(#equal(mod(z2,z1),#0()),z2,z0),#EQUAL#(mod(z2,z1),#0()),MOD#(z2,z1)) FILTER#3#(#false(),z0,z1) -> c_12() FILTER#3#(#true(),z0,z1) -> c_13() MOD#(z0,z1) -> c_14(-'#(z0,*(z0,div(z0,z1))),*'#(z0,div(z0,z1)),DIV#(z0,z1)) div#(z0,z1) -> c_139(#div#(z0,z1)) eratos#(z0) -> c_140(eratos#1#(z0)) eratos#1#(::(z0,z1)) -> c_141(eratos#(filter(z0,z1))) eratos#1#(nil()) -> c_142() filter#(z0,z1) -> c_143(filter#1#(z1,z0)) filter#1#(::(z0,z1),z2) -> c_144(filter#2#(filter(z2,z1),z2,z0)) filter#1#(nil(),z0) -> c_145() filter#2#(z0,z1,z2) -> c_146(filter#3#(#equal(mod(z2,z1),#0()),z2,z0)) filter#3#(#false(),z0,z1) -> c_147() filter#3#(#true(),z0,z1) -> c_148() mod#(z0,z1) -> c_149(-#(z0,*(z0,div(z0,z1)))) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,nil} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:ERATOS#(z0) -> c_5(ERATOS#1#(z0)) -->_1 ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)):2 -->_1 ERATOS#1#(nil()) -> c_7():133 2:S:ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) -->_2 FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)):3 -->_1 ERATOS#(z0) -> c_5(ERATOS#1#(z0)):1 3:S:FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) -->_1 FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)):4 -->_1 FILTER#1#(nil(),z0) -> c_10():134 4:S:FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)) -->_1 FILTER#2#(z0,z1,z2) -> c_11(FILTER#3#(#equal(mod(z2,z1),#0()),z2,z0) ,#EQUAL#(mod(z2,z1),#0()) ,MOD#(z2,z1)):135 -->_2 FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)):3 5:W:#ADD#(#0(),z0) -> c_15() 6:W:#ADD#(#neg(#s(#0())),z0) -> c_16(#PRED#(z0)) -->_1 #PRED#(#pos(#s(#s(z0)))) -> c_68():59 -->_1 #PRED#(#pos(#s(#0()))) -> c_67():58 -->_1 #PRED#(#neg(#s(z0))) -> c_66():57 -->_1 #PRED#(#0()) -> c_65():56 7:W:#ADD#(#neg(#s(#s(z0))),z1) -> c_17(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) -->_2 #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)):9 -->_2 #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)):8 -->_1 #PRED#(#pos(#s(#s(z0)))) -> c_68():59 -->_1 #PRED#(#pos(#s(#0()))) -> c_67():58 -->_1 #PRED#(#neg(#s(z0))) -> c_66():57 -->_1 #PRED#(#0()) -> c_65():56 8:W:#ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)) -->_1 #SUCC#(#pos(#s(z0))) -> c_75():66 -->_1 #SUCC#(#neg(#s(#s(z0)))) -> c_74():65 -->_1 #SUCC#(#neg(#s(#0()))) -> c_73():64 -->_1 #SUCC#(#0()) -> c_72():63 9:W:#ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) -->_1 #SUCC#(#pos(#s(z0))) -> c_75():66 -->_1 #SUCC#(#neg(#s(#s(z0)))) -> c_74():65 -->_1 #SUCC#(#neg(#s(#0()))) -> c_73():64 -->_1 #SUCC#(#0()) -> c_72():63 -->_2 #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)):9 -->_2 #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)):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(z0)) -> c_25() 16:W:#DIV#(#0(),#pos(z0)) -> c_26() 17:W:#DIV#(#neg(z0),#0()) -> c_27() 18:W:#DIV#(#neg(z0),#neg(z1)) -> c_28(#NATDIV#(z0,z1)) -->_1 #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)):51 -->_1 #NATDIV#(#0(),#0()) -> c_59():50 19:W:#DIV#(#neg(z0),#pos(z1)) -> c_29(#NATDIV#(z0,z1)) -->_1 #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)):51 -->_1 #NATDIV#(#0(),#0()) -> c_59():50 20:W:#DIV#(#pos(z0),#0()) -> c_30() 21:W:#DIV#(#pos(z0),#neg(z1)) -> c_31(#NATDIV#(z0,z1)) -->_1 #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)):51 -->_1 #NATDIV#(#0(),#0()) -> c_59():50 22:W:#DIV#(#pos(z0),#pos(z1)) -> c_32(#NATDIV#(z0,z1)) -->_1 #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)):51 -->_1 #NATDIV#(#0(),#0()) -> c_59():50 23:W:#EQ#(#0(),#0()) -> c_33() 24:W:#EQ#(#0(),#neg(z0)) -> c_34() 25:W:#EQ#(#0(),#pos(z0)) -> c_35() 26:W:#EQ#(#0(),#s(z0)) -> c_36() 27:W:#EQ#(#neg(z0),#0()) -> c_37() 28:W:#EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)) -->_1 #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)):36 -->_1 #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)):35 -->_1 #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)):34 -->_1 #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)):32 -->_1 #EQ#(nil(),nil()) -> c_49():39 -->_1 #EQ#(nil(),::(z0,z1)) -> c_48():38 -->_1 #EQ#(::(z0,z1),nil()) -> c_47():37 -->_1 #EQ#(#s(z0),#0()) -> c_43():33 -->_1 #EQ#(#pos(z0),#neg(z1)) -> c_41():31 -->_1 #EQ#(#pos(z0),#0()) -> c_40():30 -->_1 #EQ#(#neg(z0),#pos(z1)) -> c_39():29 -->_1 #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)):28 -->_1 #EQ#(#neg(z0),#0()) -> c_37():27 -->_1 #EQ#(#0(),#s(z0)) -> c_36():26 -->_1 #EQ#(#0(),#pos(z0)) -> c_35():25 -->_1 #EQ#(#0(),#neg(z0)) -> c_34():24 -->_1 #EQ#(#0(),#0()) -> c_33():23 29:W:#EQ#(#neg(z0),#pos(z1)) -> c_39() 30:W:#EQ#(#pos(z0),#0()) -> c_40() 31:W:#EQ#(#pos(z0),#neg(z1)) -> c_41() 32:W:#EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)) -->_1 #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)):36 -->_1 #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)):35 -->_1 #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)):34 -->_1 #EQ#(nil(),nil()) -> c_49():39 -->_1 #EQ#(nil(),::(z0,z1)) -> c_48():38 -->_1 #EQ#(::(z0,z1),nil()) -> c_47():37 -->_1 #EQ#(#s(z0),#0()) -> c_43():33 -->_1 #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)):32 -->_1 #EQ#(#pos(z0),#neg(z1)) -> c_41():31 -->_1 #EQ#(#pos(z0),#0()) -> c_40():30 -->_1 #EQ#(#neg(z0),#pos(z1)) -> c_39():29 -->_1 #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)):28 -->_1 #EQ#(#neg(z0),#0()) -> c_37():27 -->_1 #EQ#(#0(),#s(z0)) -> c_36():26 -->_1 #EQ#(#0(),#pos(z0)) -> c_35():25 -->_1 #EQ#(#0(),#neg(z0)) -> c_34():24 -->_1 #EQ#(#0(),#0()) -> c_33():23 33:W:#EQ#(#s(z0),#0()) -> c_43() 34:W:#EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)) -->_1 #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)):36 -->_1 #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)):35 -->_1 #EQ#(nil(),nil()) -> c_49():39 -->_1 #EQ#(nil(),::(z0,z1)) -> c_48():38 -->_1 #EQ#(::(z0,z1),nil()) -> c_47():37 -->_1 #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)):34 -->_1 #EQ#(#s(z0),#0()) -> c_43():33 -->_1 #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)):32 -->_1 #EQ#(#pos(z0),#neg(z1)) -> c_41():31 -->_1 #EQ#(#pos(z0),#0()) -> c_40():30 -->_1 #EQ#(#neg(z0),#pos(z1)) -> c_39():29 -->_1 #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)):28 -->_1 #EQ#(#neg(z0),#0()) -> c_37():27 -->_1 #EQ#(#0(),#s(z0)) -> c_36():26 -->_1 #EQ#(#0(),#pos(z0)) -> c_35():25 -->_1 #EQ#(#0(),#neg(z0)) -> c_34():24 -->_1 #EQ#(#0(),#0()) -> c_33():23 35:W:#EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)) -->_2 #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)):36 -->_2 #EQ#(nil(),nil()) -> c_49():39 -->_2 #EQ#(nil(),::(z0,z1)) -> c_48():38 -->_2 #EQ#(::(z0,z1),nil()) -> c_47():37 -->_2 #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)):35 -->_2 #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)):34 -->_2 #EQ#(#s(z0),#0()) -> c_43():33 -->_2 #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)):32 -->_2 #EQ#(#pos(z0),#neg(z1)) -> c_41():31 -->_2 #EQ#(#pos(z0),#0()) -> c_40():30 -->_2 #EQ#(#neg(z0),#pos(z1)) -> c_39():29 -->_2 #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)):28 -->_2 #EQ#(#neg(z0),#0()) -> c_37():27 -->_2 #EQ#(#0(),#s(z0)) -> c_36():26 -->_2 #EQ#(#0(),#pos(z0)) -> c_35():25 -->_2 #EQ#(#0(),#neg(z0)) -> c_34():24 -->_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#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)) -->_2 #EQ#(nil(),nil()) -> c_49():39 -->_2 #EQ#(nil(),::(z0,z1)) -> c_48():38 -->_2 #EQ#(::(z0,z1),nil()) -> c_47():37 -->_2 #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)):36 -->_2 #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)):35 -->_2 #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)):34 -->_2 #EQ#(#s(z0),#0()) -> c_43():33 -->_2 #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)):32 -->_2 #EQ#(#pos(z0),#neg(z1)) -> c_41():31 -->_2 #EQ#(#pos(z0),#0()) -> c_40():30 -->_2 #EQ#(#neg(z0),#pos(z1)) -> c_39():29 -->_2 #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)):28 -->_2 #EQ#(#neg(z0),#0()) -> c_37():27 -->_2 #EQ#(#0(),#s(z0)) -> c_36():26 -->_2 #EQ#(#0(),#pos(z0)) -> c_35():25 -->_2 #EQ#(#0(),#neg(z0)) -> c_34():24 -->_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 37:W:#EQ#(::(z0,z1),nil()) -> c_47() 38:W:#EQ#(nil(),::(z0,z1)) -> c_48() 39:W:#EQ#(nil(),nil()) -> c_49() 40:W:#EQUAL#(z0,z1) -> c_1(#EQ#(z0,z1)) -->_1 #EQ#(nil(),nil()) -> c_49():39 -->_1 #EQ#(nil(),::(z0,z1)) -> c_48():38 -->_1 #EQ#(::(z0,z1),nil()) -> c_47():37 -->_1 #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)):36 -->_1 #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)):35 -->_1 #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)):34 -->_1 #EQ#(#s(z0),#0()) -> c_43():33 -->_1 #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)):32 -->_1 #EQ#(#pos(z0),#neg(z1)) -> c_41():31 -->_1 #EQ#(#pos(z0),#0()) -> c_40():30 -->_1 #EQ#(#neg(z0),#pos(z1)) -> c_39():29 -->_1 #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)):28 -->_1 #EQ#(#neg(z0),#0()) -> c_37():27 -->_1 #EQ#(#0(),#s(z0)) -> c_36():26 -->_1 #EQ#(#0(),#pos(z0)) -> c_35():25 -->_1 #EQ#(#0(),#neg(z0)) -> c_34():24 -->_1 #EQ#(#0(),#0()) -> c_33():23 41:W:#MULT#(#0(),#0()) -> c_50() 42:W:#MULT#(#0(),#neg(z0)) -> c_51() 43:W:#MULT#(#0(),#pos(z0)) -> c_52() 44:W:#MULT#(#neg(z0),#0()) -> c_53() 45:W:#MULT#(#neg(z0),#neg(z1)) -> c_54(#NATMULT#(z0,z1)) -->_1 #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)):53 -->_1 #NATMULT#(#0(),z0) -> c_61():52 46:W:#MULT#(#neg(z0),#pos(z1)) -> c_55(#NATMULT#(z0,z1)) -->_1 #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)):53 -->_1 #NATMULT#(#0(),z0) -> c_61():52 47:W:#MULT#(#pos(z0),#0()) -> c_56() 48:W:#MULT#(#pos(z0),#neg(z1)) -> c_57(#NATMULT#(z0,z1)) -->_1 #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)):53 -->_1 #NATMULT#(#0(),z0) -> c_61():52 49:W:#MULT#(#pos(z0),#pos(z1)) -> c_58(#NATMULT#(z0,z1)) -->_1 #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)):53 -->_1 #NATMULT#(#0(),z0) -> c_61():52 50:W:#NATDIV#(#0(),#0()) -> c_59() 51:W:#NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)) -->_2 #NATSUB#(#s(z0),#s(z1)) -> c_64(#NATSUB#(z0,z1)):55 -->_2 #NATSUB#(z0,#0()) -> c_63():54 -->_1 #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)):51 52:W:#NATMULT#(#0(),z0) -> c_61() 53:W:#NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) -->_2 #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)):53 -->_2 #NATMULT#(#0(),z0) -> c_61():52 -->_1 #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)):9 -->_1 #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)):8 54:W:#NATSUB#(z0,#0()) -> c_63() 55:W:#NATSUB#(#s(z0),#s(z1)) -> c_64(#NATSUB#(z0,z1)) -->_1 #NATSUB#(#s(z0),#s(z1)) -> c_64(#NATSUB#(z0,z1)):55 -->_1 #NATSUB#(z0,#0()) -> c_63():54 56:W:#PRED#(#0()) -> c_65() 57:W:#PRED#(#neg(#s(z0))) -> c_66() 58:W:#PRED#(#pos(#s(#0()))) -> c_67() 59:W:#PRED#(#pos(#s(#s(z0)))) -> c_68() 60:W:#SUB#(z0,#0()) -> c_69() 61:W:#SUB#(z0,#neg(z1)) -> c_70(#ADD#(z0,#pos(z1))) -->_1 #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)):9 -->_1 #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)):8 -->_1 #ADD#(#neg(#s(#s(z0))),z1) -> c_17(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)):7 -->_1 #ADD#(#neg(#s(#0())),z0) -> c_16(#PRED#(z0)):6 -->_1 #ADD#(#0(),z0) -> c_15():5 62:W:#SUB#(z0,#pos(z1)) -> c_71(#ADD#(z0,#neg(z1))) -->_1 #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)):9 -->_1 #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)):8 -->_1 #ADD#(#neg(#s(#s(z0))),z1) -> c_17(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)):7 -->_1 #ADD#(#neg(#s(#0())),z0) -> c_16(#PRED#(z0)):6 -->_1 #ADD#(#0(),z0) -> c_15():5 63:W:#SUCC#(#0()) -> c_72() 64:W:#SUCC#(#neg(#s(#0()))) -> c_73() 65:W:#SUCC#(#neg(#s(#s(z0)))) -> c_74() 66:W:#SUCC#(#pos(#s(z0))) -> c_75() 67:W:#add#(#0(),z0) -> c_76() 68:W:#add#(#neg(#s(#0())),z0) -> c_77(#pred#(z0)) -->_1 #pred#(#pos(#s(#s(z0)))) -> c_129():120 -->_1 #pred#(#pos(#s(#0()))) -> c_128():119 -->_1 #pred#(#neg(#s(z0))) -> c_127():118 -->_1 #pred#(#0()) -> c_126():117 69:W:#add#(#neg(#s(#s(z0))),z1) -> c_78(#pred#(#add(#pos(#s(z0)),z1))) -->_1 #pred#(#pos(#s(#s(z0)))) -> c_129():120 -->_1 #pred#(#pos(#s(#0()))) -> c_128():119 -->_1 #pred#(#neg(#s(z0))) -> c_127():118 -->_1 #pred#(#0()) -> c_126():117 70:W:#add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)) -->_1 #succ#(#pos(#s(z0))) -> c_136():127 -->_1 #succ#(#neg(#s(#s(z0)))) -> c_135():126 -->_1 #succ#(#neg(#s(#0()))) -> c_134():125 -->_1 #succ#(#0()) -> c_133():124 71:W:#add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))) -->_1 #succ#(#pos(#s(z0))) -> c_136():127 -->_1 #succ#(#neg(#s(#s(z0)))) -> c_135():126 -->_1 #succ#(#neg(#s(#0()))) -> c_134():125 -->_1 #succ#(#0()) -> c_133():124 72:W:#and#(#false(),#false()) -> c_81() 73:W:#and#(#false(),#true()) -> c_82() 74:W:#and#(#true(),#false()) -> c_83() 75:W:#and#(#true(),#true()) -> c_84() 76:W:#div#(#0(),#0()) -> c_85() 77:W:#div#(#0(),#neg(z0)) -> c_86() 78:W:#div#(#0(),#pos(z0)) -> c_87() 79:W:#div#(#neg(z0),#0()) -> c_88() 80:W:#div#(#neg(z0),#neg(z1)) -> c_89(#natdiv#(z0,z1)) -->_1 #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))):112 -->_1 #natdiv#(#0(),#0()) -> c_120():111 81:W:#div#(#neg(z0),#pos(z1)) -> c_90(#natdiv#(z0,z1)) -->_1 #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))):112 -->_1 #natdiv#(#0(),#0()) -> c_120():111 82:W:#div#(#pos(z0),#0()) -> c_91() 83:W:#div#(#pos(z0),#neg(z1)) -> c_92(#natdiv#(z0,z1)) -->_1 #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))):112 -->_1 #natdiv#(#0(),#0()) -> c_120():111 84:W:#div#(#pos(z0),#pos(z1)) -> c_93(#natdiv#(z0,z1)) -->_1 #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))):112 -->_1 #natdiv#(#0(),#0()) -> c_120():111 85:W:#eq#(#0(),#0()) -> c_94() 86:W:#eq#(#0(),#neg(z0)) -> c_95() 87:W:#eq#(#0(),#pos(z0)) -> c_96() 88:W:#eq#(#0(),#s(z0)) -> c_97() 89:W:#eq#(#neg(z0),#0()) -> c_98() 90:W:#eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)) -->_1 #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))):97 -->_1 #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)):96 -->_1 #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)):94 -->_1 #eq#(nil(),nil()) -> c_109():100 -->_1 #eq#(nil(),::(z0,z1)) -> c_108():99 -->_1 #eq#(::(z0,z1),nil()) -> c_107():98 -->_1 #eq#(#s(z0),#0()) -> c_104():95 -->_1 #eq#(#pos(z0),#neg(z1)) -> c_102():93 -->_1 #eq#(#pos(z0),#0()) -> c_101():92 -->_1 #eq#(#neg(z0),#pos(z1)) -> c_100():91 -->_1 #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)):90 -->_1 #eq#(#neg(z0),#0()) -> c_98():89 -->_1 #eq#(#0(),#s(z0)) -> c_97():88 -->_1 #eq#(#0(),#pos(z0)) -> c_96():87 -->_1 #eq#(#0(),#neg(z0)) -> c_95():86 -->_1 #eq#(#0(),#0()) -> c_94():85 91:W:#eq#(#neg(z0),#pos(z1)) -> c_100() 92:W:#eq#(#pos(z0),#0()) -> c_101() 93:W:#eq#(#pos(z0),#neg(z1)) -> c_102() 94:W:#eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)) -->_1 #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))):97 -->_1 #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)):96 -->_1 #eq#(nil(),nil()) -> c_109():100 -->_1 #eq#(nil(),::(z0,z1)) -> c_108():99 -->_1 #eq#(::(z0,z1),nil()) -> c_107():98 -->_1 #eq#(#s(z0),#0()) -> c_104():95 -->_1 #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)):94 -->_1 #eq#(#pos(z0),#neg(z1)) -> c_102():93 -->_1 #eq#(#pos(z0),#0()) -> c_101():92 -->_1 #eq#(#neg(z0),#pos(z1)) -> c_100():91 -->_1 #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)):90 -->_1 #eq#(#neg(z0),#0()) -> c_98():89 -->_1 #eq#(#0(),#s(z0)) -> c_97():88 -->_1 #eq#(#0(),#pos(z0)) -> c_96():87 -->_1 #eq#(#0(),#neg(z0)) -> c_95():86 -->_1 #eq#(#0(),#0()) -> c_94():85 95:W:#eq#(#s(z0),#0()) -> c_104() 96:W:#eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)) -->_1 #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))):97 -->_1 #eq#(nil(),nil()) -> c_109():100 -->_1 #eq#(nil(),::(z0,z1)) -> c_108():99 -->_1 #eq#(::(z0,z1),nil()) -> c_107():98 -->_1 #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)):96 -->_1 #eq#(#s(z0),#0()) -> c_104():95 -->_1 #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)):94 -->_1 #eq#(#pos(z0),#neg(z1)) -> c_102():93 -->_1 #eq#(#pos(z0),#0()) -> c_101():92 -->_1 #eq#(#neg(z0),#pos(z1)) -> c_100():91 -->_1 #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)):90 -->_1 #eq#(#neg(z0),#0()) -> c_98():89 -->_1 #eq#(#0(),#s(z0)) -> c_97():88 -->_1 #eq#(#0(),#pos(z0)) -> c_96():87 -->_1 #eq#(#0(),#neg(z0)) -> c_95():86 -->_1 #eq#(#0(),#0()) -> c_94():85 97:W:#eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))) -->_1 #and#(#true(),#true()) -> c_84():75 -->_1 #and#(#true(),#false()) -> c_83():74 -->_1 #and#(#false(),#true()) -> c_82():73 -->_1 #and#(#false(),#false()) -> c_81():72 98:W:#eq#(::(z0,z1),nil()) -> c_107() 99:W:#eq#(nil(),::(z0,z1)) -> c_108() 100:W:#eq#(nil(),nil()) -> c_109() 101:W:#equal#(z0,z1) -> c_110(#eq#(z0,z1)) -->_1 #eq#(nil(),nil()) -> c_109():100 -->_1 #eq#(nil(),::(z0,z1)) -> c_108():99 -->_1 #eq#(::(z0,z1),nil()) -> c_107():98 -->_1 #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))):97 -->_1 #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)):96 -->_1 #eq#(#s(z0),#0()) -> c_104():95 -->_1 #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)):94 -->_1 #eq#(#pos(z0),#neg(z1)) -> c_102():93 -->_1 #eq#(#pos(z0),#0()) -> c_101():92 -->_1 #eq#(#neg(z0),#pos(z1)) -> c_100():91 -->_1 #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)):90 -->_1 #eq#(#neg(z0),#0()) -> c_98():89 -->_1 #eq#(#0(),#s(z0)) -> c_97():88 -->_1 #eq#(#0(),#pos(z0)) -> c_96():87 -->_1 #eq#(#0(),#neg(z0)) -> c_95():86 -->_1 #eq#(#0(),#0()) -> c_94():85 102:W:#mult#(#0(),#0()) -> c_111() 103:W:#mult#(#0(),#neg(z0)) -> c_112() 104:W:#mult#(#0(),#pos(z0)) -> c_113() 105:W:#mult#(#neg(z0),#0()) -> c_114() 106:W:#mult#(#neg(z0),#neg(z1)) -> c_115(#natmult#(z0,z1)) -->_1 #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))):114 -->_1 #natmult#(#0(),z0) -> c_122():113 107:W:#mult#(#neg(z0),#pos(z1)) -> c_116(#natmult#(z0,z1)) -->_1 #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))):114 -->_1 #natmult#(#0(),z0) -> c_122():113 108:W:#mult#(#pos(z0),#0()) -> c_117() 109:W:#mult#(#pos(z0),#neg(z1)) -> c_118(#natmult#(z0,z1)) -->_1 #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))):114 -->_1 #natmult#(#0(),z0) -> c_122():113 110:W:#mult#(#pos(z0),#pos(z1)) -> c_119(#natmult#(z0,z1)) -->_1 #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))):114 -->_1 #natmult#(#0(),z0) -> c_122():113 111:W:#natdiv#(#0(),#0()) -> c_120() 112:W:#natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))) -->_1 #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))):112 113:W:#natmult#(#0(),z0) -> c_122() 114:W:#natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))) -->_1 #add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))):71 -->_1 #add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)):70 115:W:#natsub#(z0,#0()) -> c_124() 116:W:#natsub#(#s(z0),#s(z1)) -> c_125(#natsub#(z0,z1)) -->_1 #natsub#(#s(z0),#s(z1)) -> c_125(#natsub#(z0,z1)):116 -->_1 #natsub#(z0,#0()) -> c_124():115 117:W:#pred#(#0()) -> c_126() 118:W:#pred#(#neg(#s(z0))) -> c_127() 119:W:#pred#(#pos(#s(#0()))) -> c_128() 120:W:#pred#(#pos(#s(#s(z0)))) -> c_129() 121:W:#sub#(z0,#0()) -> c_130() 122:W:#sub#(z0,#neg(z1)) -> c_131(#add#(z0,#pos(z1))) -->_1 #add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))):71 -->_1 #add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)):70 -->_1 #add#(#neg(#s(#s(z0))),z1) -> c_78(#pred#(#add(#pos(#s(z0)),z1))):69 -->_1 #add#(#neg(#s(#0())),z0) -> c_77(#pred#(z0)):68 -->_1 #add#(#0(),z0) -> c_76():67 123:W:#sub#(z0,#pos(z1)) -> c_132(#add#(z0,#neg(z1))) -->_1 #add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))):71 -->_1 #add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)):70 -->_1 #add#(#neg(#s(#s(z0))),z1) -> c_78(#pred#(#add(#pos(#s(z0)),z1))):69 -->_1 #add#(#neg(#s(#0())),z0) -> c_77(#pred#(z0)):68 -->_1 #add#(#0(),z0) -> c_76():67 124:W:#succ#(#0()) -> c_133() 125:W:#succ#(#neg(#s(#0()))) -> c_134() 126:W:#succ#(#neg(#s(#s(z0)))) -> c_135() 127:W:#succ#(#pos(#s(z0))) -> c_136() 128:W:*#(z0,z1) -> c_137(#mult#(z0,z1)) -->_1 #mult#(#pos(z0),#pos(z1)) -> c_119(#natmult#(z0,z1)):110 -->_1 #mult#(#pos(z0),#neg(z1)) -> c_118(#natmult#(z0,z1)):109 -->_1 #mult#(#pos(z0),#0()) -> c_117():108 -->_1 #mult#(#neg(z0),#pos(z1)) -> c_116(#natmult#(z0,z1)):107 -->_1 #mult#(#neg(z0),#neg(z1)) -> c_115(#natmult#(z0,z1)):106 -->_1 #mult#(#neg(z0),#0()) -> c_114():105 -->_1 #mult#(#0(),#pos(z0)) -> c_113():104 -->_1 #mult#(#0(),#neg(z0)) -> c_112():103 -->_1 #mult#(#0(),#0()) -> c_111():102 129:W:*'#(z0,z1) -> c_2(#MULT#(z0,z1)) -->_1 #MULT#(#pos(z0),#pos(z1)) -> c_58(#NATMULT#(z0,z1)):49 -->_1 #MULT#(#pos(z0),#neg(z1)) -> c_57(#NATMULT#(z0,z1)):48 -->_1 #MULT#(#pos(z0),#0()) -> c_56():47 -->_1 #MULT#(#neg(z0),#pos(z1)) -> c_55(#NATMULT#(z0,z1)):46 -->_1 #MULT#(#neg(z0),#neg(z1)) -> c_54(#NATMULT#(z0,z1)):45 -->_1 #MULT#(#neg(z0),#0()) -> c_53():44 -->_1 #MULT#(#0(),#pos(z0)) -> c_52():43 -->_1 #MULT#(#0(),#neg(z0)) -> c_51():42 -->_1 #MULT#(#0(),#0()) -> c_50():41 130:W:-#(z0,z1) -> c_138(#sub#(z0,z1)) -->_1 #sub#(z0,#pos(z1)) -> c_132(#add#(z0,#neg(z1))):123 -->_1 #sub#(z0,#neg(z1)) -> c_131(#add#(z0,#pos(z1))):122 -->_1 #sub#(z0,#0()) -> c_130():121 131:W:-'#(z0,z1) -> c_3(#SUB#(z0,z1)) -->_1 #SUB#(z0,#pos(z1)) -> c_71(#ADD#(z0,#neg(z1))):62 -->_1 #SUB#(z0,#neg(z1)) -> c_70(#ADD#(z0,#pos(z1))):61 -->_1 #SUB#(z0,#0()) -> c_69():60 132:W:DIV#(z0,z1) -> c_4(#DIV#(z0,z1)) -->_1 #DIV#(#pos(z0),#pos(z1)) -> c_32(#NATDIV#(z0,z1)):22 -->_1 #DIV#(#pos(z0),#neg(z1)) -> c_31(#NATDIV#(z0,z1)):21 -->_1 #DIV#(#pos(z0),#0()) -> c_30():20 -->_1 #DIV#(#neg(z0),#pos(z1)) -> c_29(#NATDIV#(z0,z1)):19 -->_1 #DIV#(#neg(z0),#neg(z1)) -> c_28(#NATDIV#(z0,z1)):18 -->_1 #DIV#(#neg(z0),#0()) -> c_27():17 -->_1 #DIV#(#0(),#pos(z0)) -> c_26():16 -->_1 #DIV#(#0(),#neg(z0)) -> c_25():15 -->_1 #DIV#(#0(),#0()) -> c_24():14 133:W:ERATOS#1#(nil()) -> c_7() 134:W:FILTER#1#(nil(),z0) -> c_10() 135:W:FILTER#2#(z0,z1,z2) -> c_11(FILTER#3#(#equal(mod(z2,z1),#0()),z2,z0) ,#EQUAL#(mod(z2,z1),#0()) ,MOD#(z2,z1)) -->_3 MOD#(z0,z1) -> c_14(-'#(z0,*(z0,div(z0,z1))),*'#(z0,div(z0,z1)),DIV#(z0,z1)):138 -->_1 FILTER#3#(#true(),z0,z1) -> c_13():137 -->_1 FILTER#3#(#false(),z0,z1) -> c_12():136 -->_2 #EQUAL#(z0,z1) -> c_1(#EQ#(z0,z1)):40 136:W:FILTER#3#(#false(),z0,z1) -> c_12() 137:W:FILTER#3#(#true(),z0,z1) -> c_13() 138:W:MOD#(z0,z1) -> c_14(-'#(z0,*(z0,div(z0,z1))),*'#(z0,div(z0,z1)),DIV#(z0,z1)) -->_3 DIV#(z0,z1) -> c_4(#DIV#(z0,z1)):132 -->_1 -'#(z0,z1) -> c_3(#SUB#(z0,z1)):131 -->_2 *'#(z0,z1) -> c_2(#MULT#(z0,z1)):129 139:W:div#(z0,z1) -> c_139(#div#(z0,z1)) -->_1 #div#(#pos(z0),#pos(z1)) -> c_93(#natdiv#(z0,z1)):84 -->_1 #div#(#pos(z0),#neg(z1)) -> c_92(#natdiv#(z0,z1)):83 -->_1 #div#(#pos(z0),#0()) -> c_91():82 -->_1 #div#(#neg(z0),#pos(z1)) -> c_90(#natdiv#(z0,z1)):81 -->_1 #div#(#neg(z0),#neg(z1)) -> c_89(#natdiv#(z0,z1)):80 -->_1 #div#(#neg(z0),#0()) -> c_88():79 -->_1 #div#(#0(),#pos(z0)) -> c_87():78 -->_1 #div#(#0(),#neg(z0)) -> c_86():77 -->_1 #div#(#0(),#0()) -> c_85():76 140:W:eratos#(z0) -> c_140(eratos#1#(z0)) -->_1 eratos#1#(::(z0,z1)) -> c_141(eratos#(filter(z0,z1))):141 -->_1 eratos#1#(nil()) -> c_142():142 141:W:eratos#1#(::(z0,z1)) -> c_141(eratos#(filter(z0,z1))) -->_1 eratos#(z0) -> c_140(eratos#1#(z0)):140 142:W:eratos#1#(nil()) -> c_142() 143:W:filter#(z0,z1) -> c_143(filter#1#(z1,z0)) -->_1 filter#1#(::(z0,z1),z2) -> c_144(filter#2#(filter(z2,z1),z2,z0)):144 -->_1 filter#1#(nil(),z0) -> c_145():145 144:W:filter#1#(::(z0,z1),z2) -> c_144(filter#2#(filter(z2,z1),z2,z0)) -->_1 filter#2#(z0,z1,z2) -> c_146(filter#3#(#equal(mod(z2,z1),#0()),z2,z0)):146 145:W:filter#1#(nil(),z0) -> c_145() 146:W:filter#2#(z0,z1,z2) -> c_146(filter#3#(#equal(mod(z2,z1),#0()),z2,z0)) -->_1 filter#3#(#true(),z0,z1) -> c_148():148 -->_1 filter#3#(#false(),z0,z1) -> c_147():147 147:W:filter#3#(#false(),z0,z1) -> c_147() 148:W:filter#3#(#true(),z0,z1) -> c_148() 149:W:mod#(z0,z1) -> c_149(-#(z0,*(z0,div(z0,z1)))) -->_1 -#(z0,z1) -> c_138(#sub#(z0,z1)):130 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 149: mod#(z0,z1) -> c_149(-#(z0,*(z0,div(z0,z1)))) 143: filter#(z0,z1) -> c_143(filter#1#(z1,z0)) 145: filter#1#(nil(),z0) -> c_145() 144: filter#1#(::(z0,z1),z2) -> c_144(filter#2#(filter(z2,z1),z2,z0)) 146: filter#2#(z0,z1,z2) -> c_146(filter#3#(#equal(mod(z2,z1),#0()),z2,z0)) 147: filter#3#(#false(),z0,z1) -> c_147() 148: filter#3#(#true(),z0,z1) -> c_148() 140: eratos#(z0) -> c_140(eratos#1#(z0)) 141: eratos#1#(::(z0,z1)) -> c_141(eratos#(filter(z0,z1))) 142: eratos#1#(nil()) -> c_142() 139: div#(z0,z1) -> c_139(#div#(z0,z1)) 130: -#(z0,z1) -> c_138(#sub#(z0,z1)) 128: *#(z0,z1) -> c_137(#mult#(z0,z1)) 123: #sub#(z0,#pos(z1)) -> c_132(#add#(z0,#neg(z1))) 122: #sub#(z0,#neg(z1)) -> c_131(#add#(z0,#pos(z1))) 121: #sub#(z0,#0()) -> c_130() 116: #natsub#(#s(z0),#s(z1)) -> c_125(#natsub#(z0,z1)) 115: #natsub#(z0,#0()) -> c_124() 110: #mult#(#pos(z0),#pos(z1)) -> c_119(#natmult#(z0,z1)) 109: #mult#(#pos(z0),#neg(z1)) -> c_118(#natmult#(z0,z1)) 108: #mult#(#pos(z0),#0()) -> c_117() 107: #mult#(#neg(z0),#pos(z1)) -> c_116(#natmult#(z0,z1)) 106: #mult#(#neg(z0),#neg(z1)) -> c_115(#natmult#(z0,z1)) 113: #natmult#(#0(),z0) -> c_122() 114: #natmult#(#s(z0),z1) -> c_123(#add#(#pos(z1),#natmult(z0,z1))) 105: #mult#(#neg(z0),#0()) -> c_114() 104: #mult#(#0(),#pos(z0)) -> c_113() 103: #mult#(#0(),#neg(z0)) -> c_112() 102: #mult#(#0(),#0()) -> c_111() 101: #equal#(z0,z1) -> c_110(#eq#(z0,z1)) 90: #eq#(#neg(z0),#neg(z1)) -> c_99(#eq#(z0,z1)) 96: #eq#(#s(z0),#s(z1)) -> c_105(#eq#(z0,z1)) 94: #eq#(#pos(z0),#pos(z1)) -> c_103(#eq#(z0,z1)) 91: #eq#(#neg(z0),#pos(z1)) -> c_100() 92: #eq#(#pos(z0),#0()) -> c_101() 93: #eq#(#pos(z0),#neg(z1)) -> c_102() 95: #eq#(#s(z0),#0()) -> c_104() 98: #eq#(::(z0,z1),nil()) -> c_107() 99: #eq#(nil(),::(z0,z1)) -> c_108() 100: #eq#(nil(),nil()) -> c_109() 97: #eq#(::(z0,z1),::(z2,z3)) -> c_106(#and#(#eq(z0,z2),#eq(z1,z3))) 89: #eq#(#neg(z0),#0()) -> c_98() 88: #eq#(#0(),#s(z0)) -> c_97() 87: #eq#(#0(),#pos(z0)) -> c_96() 86: #eq#(#0(),#neg(z0)) -> c_95() 85: #eq#(#0(),#0()) -> c_94() 84: #div#(#pos(z0),#pos(z1)) -> c_93(#natdiv#(z0,z1)) 83: #div#(#pos(z0),#neg(z1)) -> c_92(#natdiv#(z0,z1)) 82: #div#(#pos(z0),#0()) -> c_91() 81: #div#(#neg(z0),#pos(z1)) -> c_90(#natdiv#(z0,z1)) 80: #div#(#neg(z0),#neg(z1)) -> c_89(#natdiv#(z0,z1)) 111: #natdiv#(#0(),#0()) -> c_120() 112: #natdiv#(#s(z0),#s(z1)) -> c_121(#natdiv#(#natsub(z0,z1),#s(z1))) 79: #div#(#neg(z0),#0()) -> c_88() 78: #div#(#0(),#pos(z0)) -> c_87() 77: #div#(#0(),#neg(z0)) -> c_86() 76: #div#(#0(),#0()) -> c_85() 75: #and#(#true(),#true()) -> c_84() 74: #and#(#true(),#false()) -> c_83() 73: #and#(#false(),#true()) -> c_82() 72: #and#(#false(),#false()) -> c_81() 71: #add#(#pos(#s(#s(z0))),z1) -> c_80(#succ#(#add(#pos(#s(z0)),z1))) 70: #add#(#pos(#s(#0())),z0) -> c_79(#succ#(z0)) 124: #succ#(#0()) -> c_133() 125: #succ#(#neg(#s(#0()))) -> c_134() 126: #succ#(#neg(#s(#s(z0)))) -> c_135() 127: #succ#(#pos(#s(z0))) -> c_136() 69: #add#(#neg(#s(#s(z0))),z1) -> c_78(#pred#(#add(#pos(#s(z0)),z1))) 68: #add#(#neg(#s(#0())),z0) -> c_77(#pred#(z0)) 117: #pred#(#0()) -> c_126() 118: #pred#(#neg(#s(z0))) -> c_127() 119: #pred#(#pos(#s(#0()))) -> c_128() 120: #pred#(#pos(#s(#s(z0)))) -> c_129() 67: #add#(#0(),z0) -> c_76() 133: ERATOS#1#(nil()) -> c_7() 134: FILTER#1#(nil(),z0) -> c_10() 135: FILTER#2#(z0,z1,z2) -> c_11(FILTER#3#(#equal(mod(z2,z1),#0()),z2,z0) ,#EQUAL#(mod(z2,z1),#0()) ,MOD#(z2,z1)) 40: #EQUAL#(z0,z1) -> c_1(#EQ#(z0,z1)) 36: #EQ#(::(z0,z1),::(z2,z3)) -> c_46(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z1,z3)) 35: #EQ#(::(z0,z1),::(z2,z3)) -> c_45(#AND#(#eq(z0,z2),#eq(z1,z3)),#EQ#(z0,z2)) 34: #EQ#(#s(z0),#s(z1)) -> c_44(#EQ#(z0,z1)) 32: #EQ#(#pos(z0),#pos(z1)) -> c_42(#EQ#(z0,z1)) 28: #EQ#(#neg(z0),#neg(z1)) -> c_38(#EQ#(z0,z1)) 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(z0)) -> c_34() 25: #EQ#(#0(),#pos(z0)) -> c_35() 26: #EQ#(#0(),#s(z0)) -> c_36() 27: #EQ#(#neg(z0),#0()) -> c_37() 29: #EQ#(#neg(z0),#pos(z1)) -> c_39() 30: #EQ#(#pos(z0),#0()) -> c_40() 31: #EQ#(#pos(z0),#neg(z1)) -> c_41() 33: #EQ#(#s(z0),#0()) -> c_43() 37: #EQ#(::(z0,z1),nil()) -> c_47() 38: #EQ#(nil(),::(z0,z1)) -> c_48() 39: #EQ#(nil(),nil()) -> c_49() 136: FILTER#3#(#false(),z0,z1) -> c_12() 137: FILTER#3#(#true(),z0,z1) -> c_13() 138: MOD#(z0,z1) -> c_14(-'#(z0,*(z0,div(z0,z1))),*'#(z0,div(z0,z1)),DIV#(z0,z1)) 129: *'#(z0,z1) -> c_2(#MULT#(z0,z1)) 41: #MULT#(#0(),#0()) -> c_50() 42: #MULT#(#0(),#neg(z0)) -> c_51() 43: #MULT#(#0(),#pos(z0)) -> c_52() 44: #MULT#(#neg(z0),#0()) -> c_53() 45: #MULT#(#neg(z0),#neg(z1)) -> c_54(#NATMULT#(z0,z1)) 46: #MULT#(#neg(z0),#pos(z1)) -> c_55(#NATMULT#(z0,z1)) 47: #MULT#(#pos(z0),#0()) -> c_56() 48: #MULT#(#pos(z0),#neg(z1)) -> c_57(#NATMULT#(z0,z1)) 49: #MULT#(#pos(z0),#pos(z1)) -> c_58(#NATMULT#(z0,z1)) 53: #NATMULT#(#s(z0),z1) -> c_62(#ADD#(#pos(z1),#natmult(z0,z1)),#NATMULT#(z0,z1)) 52: #NATMULT#(#0(),z0) -> c_61() 131: -'#(z0,z1) -> c_3(#SUB#(z0,z1)) 60: #SUB#(z0,#0()) -> c_69() 61: #SUB#(z0,#neg(z1)) -> c_70(#ADD#(z0,#pos(z1))) 62: #SUB#(z0,#pos(z1)) -> c_71(#ADD#(z0,#neg(z1))) 5: #ADD#(#0(),z0) -> c_15() 6: #ADD#(#neg(#s(#0())),z0) -> c_16(#PRED#(z0)) 7: #ADD#(#neg(#s(#s(z0))),z1) -> c_17(#PRED#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) 56: #PRED#(#0()) -> c_65() 57: #PRED#(#neg(#s(z0))) -> c_66() 58: #PRED#(#pos(#s(#0()))) -> c_67() 59: #PRED#(#pos(#s(#s(z0)))) -> c_68() 9: #ADD#(#pos(#s(#s(z0))),z1) -> c_19(#SUCC#(#add(#pos(#s(z0)),z1)),#ADD#(#pos(#s(z0)),z1)) 8: #ADD#(#pos(#s(#0())),z0) -> c_18(#SUCC#(z0)) 63: #SUCC#(#0()) -> c_72() 64: #SUCC#(#neg(#s(#0()))) -> c_73() 65: #SUCC#(#neg(#s(#s(z0)))) -> c_74() 66: #SUCC#(#pos(#s(z0))) -> c_75() 132: DIV#(z0,z1) -> c_4(#DIV#(z0,z1)) 14: #DIV#(#0(),#0()) -> c_24() 15: #DIV#(#0(),#neg(z0)) -> c_25() 16: #DIV#(#0(),#pos(z0)) -> c_26() 17: #DIV#(#neg(z0),#0()) -> c_27() 18: #DIV#(#neg(z0),#neg(z1)) -> c_28(#NATDIV#(z0,z1)) 19: #DIV#(#neg(z0),#pos(z1)) -> c_29(#NATDIV#(z0,z1)) 20: #DIV#(#pos(z0),#0()) -> c_30() 21: #DIV#(#pos(z0),#neg(z1)) -> c_31(#NATDIV#(z0,z1)) 22: #DIV#(#pos(z0),#pos(z1)) -> c_32(#NATDIV#(z0,z1)) 50: #NATDIV#(#0(),#0()) -> c_59() 51: #NATDIV#(#s(z0),#s(z1)) -> c_60(#NATDIV#(#natsub(z0,z1),#s(z1)),#NATSUB#(z0,z1)) 55: #NATSUB#(#s(z0),#s(z1)) -> c_64(#NATSUB#(z0,z1)) 54: #NATSUB#(z0,#0()) -> c_63() * Step 8: SimplifyRHS. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,nil} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:ERATOS#(z0) -> c_5(ERATOS#1#(z0)) -->_1 ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)):2 2:S:ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) -->_2 FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)):3 -->_1 ERATOS#(z0) -> c_5(ERATOS#1#(z0)):1 3:S:FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) -->_1 FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)):4 4:S:FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#2#(filter(z2,z1),z2,z0),FILTER#(z2,z1)) -->_2 FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)):3 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#(z2,z1)) * Step 9: PredecessorEstimationCP. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#(z2,z1)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,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: 3: FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) Consider the set of all dependency pairs 1: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) 2: ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) 3: FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) 4: FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#(z2,z1)) Processor NaturalMI {miDimension = 2, miDegree = 2, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^2)) BEST_CASE TIME (?,?) SPACE(?,?)on application of the dependency pairs {3} These cover all (indirect) predecessors of dependency pairs {3,4} their number of applications is equally bounded. The dependency pairs are shifted into the weak component. ** Step 9.a:1: NaturalMI. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#(z2,z1)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,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#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ# ,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,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] 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(#add) = [1 0] x1 + [0 0] x2 + [0] [0 0] [0 1] [0] p(#and) = [1] [0] p(#div) = [1 0] x2 + [0] [1 0] [0] p(#divByZero) = [0] [0] p(#eq) = [0] [0] p(#equal) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [1] p(#false) = [0] [0] p(#mult) = [1] [0] p(#natdiv) = [1] [1] p(#natmult) = [0 0] x1 + [0] [1 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) = [1 0] x2 + [0] [0 0] [0] p(#succ) = [0] [0] p(#true) = [0] [0] p(*) = [0 1] x1 + [0] [0 1] [0] p(*') = [0] [0] p(-) = [0 1] x1 + [1 1] x2 + [1] [0 0] [0 1] [0] p(-') = [0] [0] p(::) = [1 1] x2 + [0] [0 1] [1] p(DIV) = [0] [0] p(ERATOS) = [0] [0] p(ERATOS#1) = [0] [0] p(FILTER) = [0] [0] p(FILTER#1) = [0] [0] p(FILTER#2) = [0] [0] p(FILTER#3) = [0] [0] p(MOD) = [0] [0] p(c) = [0] [0] p(c1) = [0] [0] p(c10) = [0] [0] p(c11) = [0] [0] p(c12) = [0] [0] p(c13) = [0] [0] p(c14) = [0] [0] p(c15) = [0] [0] p(c16) = [0] [0] p(c17) = [0] [0] p(c18) = [0] [0] p(c19) = [0] [0] p(c2) = [0] [0] p(c20) = [0] [0] p(c21) = [0] [0] p(c22) = [0] [0] p(c23) = [0] [0] p(c24) = [0] [0] p(c25) = [0] [0] p(c26) = [0] [0] p(c27) = [0] [0] p(c28) = [0] [0] p(c29) = [0] [0] p(c3) = [0] [0] p(c30) = [0] [0] p(c31) = [0] [0] p(c32) = [0] [0] p(c33) = [0] [0] p(c34) = [0] [0] p(c35) = [0] [0] p(c36) = [0] [0] p(c37) = [0] [0] p(c38) = [0] [0] p(c39) = [0] [0] p(c4) = [0] [0] p(c40) = [0] [0] p(c41) = [0] [0] p(c42) = [0] [0] p(c43) = [0] [0] p(c44) = [0] [0] p(c45) = [0] [0] p(c46) = [0] [0] p(c47) = [0] [0] p(c48) = [0] [0] p(c49) = [0] [0] p(c5) = [0] [0] p(c50) = [0] [0] p(c51) = [0] [0] p(c52) = [0] [0] p(c53) = [0] [0] p(c54) = [0] [0] p(c55) = [0] [0] p(c56) = [0] [0] p(c57) = [0] [0] p(c58) = [0] [0] p(c59) = [0] [0] p(c6) = [0] [0] p(c60) = [0] [0] p(c61) = [0] [0] p(c62) = [0] [0] p(c63) = [0] [0] p(c64) = [0] [0] p(c65) = [0] [0] p(c66) = [0] [0] p(c67) = [0] [0] p(c68) = [0] [0] p(c69) = [0] [0] p(c7) = [0] [0] p(c70) = [0] [0] p(c71) = [0] [0] p(c72) = [0] [0] p(c73) = [0] [0] p(c74) = [0] [0] p(c8) = [0] [0] p(c9) = [0] [0] 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 1] [1] p(filter#3) = [1 1] x3 + [0] [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(#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(-#) = [0] [0] p(-'#) = [0] [0] p(DIV#) = [0] [0] p(ERATOS#) = [1 1] x1 + [0] [0 1] [0] p(ERATOS#1#) = [1 1] x1 + [0] [0 0] [1] p(FILTER#) = [0 0] x1 + [0 1] x2 + [1] [0 1] [0 1] [0] p(FILTER#1#) = [0 1] x1 + [0] [0 1] [1] p(FILTER#2#) = [0] [0] p(FILTER#3#) = [0] [0] p(MOD#) = [0] [0] p(div#) = [0] [0] p(eratos#) = [0] [0] p(eratos#1#) = [0] [0] p(filter#) = [0] [0] p(filter#1#) = [0] [0] 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] [0 0] [0 0] [0] p(c_7) = [0] [0] p(c_8) = [1 0] x1 + [0] [1 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] p(c_75) = [0] [0] p(c_76) = [0] [0] p(c_77) = [0] [0] p(c_78) = [0] [0] p(c_79) = [0] [0] p(c_80) = [0] [0] p(c_81) = [0] [0] p(c_82) = [0] [0] p(c_83) = [0] [0] p(c_84) = [0] [0] p(c_85) = [0] [0] p(c_86) = [0] [0] p(c_87) = [0] [0] p(c_88) = [0] [0] p(c_89) = [0] [0] p(c_90) = [0] [0] p(c_91) = [0] [0] p(c_92) = [0] [0] p(c_93) = [0] [0] p(c_94) = [0] [0] p(c_95) = [0] [0] p(c_96) = [0] [0] p(c_97) = [0] [0] p(c_98) = [0] [0] p(c_99) = [0] [0] p(c_100) = [0] [0] p(c_101) = [0] [0] p(c_102) = [0] [0] p(c_103) = [0] [0] p(c_104) = [0] [0] p(c_105) = [0] [0] p(c_106) = [0] [0] p(c_107) = [0] [0] p(c_108) = [0] [0] p(c_109) = [0] [0] p(c_110) = [0] [0] p(c_111) = [0] [0] p(c_112) = [0] [0] p(c_113) = [0] [0] p(c_114) = [0] [0] p(c_115) = [0] [0] p(c_116) = [0] [0] p(c_117) = [0] [0] p(c_118) = [0] [0] p(c_119) = [0] [0] p(c_120) = [0] [0] p(c_121) = [0] [0] p(c_122) = [0] [0] p(c_123) = [0] [0] p(c_124) = [0] [0] p(c_125) = [0] [0] p(c_126) = [0] [0] p(c_127) = [0] [0] p(c_128) = [0] [0] p(c_129) = [0] [0] p(c_130) = [0] [0] p(c_131) = [0] [0] p(c_132) = [0] [0] p(c_133) = [0] [0] p(c_134) = [0] [0] p(c_135) = [0] [0] p(c_136) = [0] [0] p(c_137) = [0] [0] p(c_138) = [0] [0] p(c_139) = [0] [0] p(c_140) = [0] [0] p(c_141) = [0] [0] p(c_142) = [0] [0] p(c_143) = [0] [0] p(c_144) = [0] [0] p(c_145) = [0] [0] p(c_146) = [0] [0] p(c_147) = [0] [0] p(c_148) = [0] [0] p(c_149) = [0] [0] Following rules are strictly oriented: FILTER#(z0,z1) = [0 0] z0 + [0 1] z1 + [1] [0 1] [0 1] [0] > [0 1] z1 + [0] [0 1] [0] = c_8(FILTER#1#(z1,z0)) Following rules are (at-least) weakly oriented: ERATOS#(z0) = [1 1] z0 + [0] [0 1] [0] >= [1 1] z0 + [0] [0 0] [0] = c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) = [1 2] z1 + [1] [0 0] [1] >= [1 2] z1 + [1] [0 0] [0] = c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) FILTER#1#(::(z0,z1),z2) = [0 1] z1 + [1] [0 1] [2] >= [0 1] z1 + [1] [0 0] [0] = c_9(FILTER#(z2,z1)) filter(z0,z1) = [1 0] z1 + [0] [0 1] [0] >= [1 0] z1 + [0] [0 1] [0] = filter#1(z1,z0) filter#1(::(z0,z1),z2) = [1 1] z1 + [0] [0 1] [1] >= [1 1] z1 + [0] [0 1] [1] = filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) = [0] [0] >= [0] [0] = nil() filter#2(z0,z1,z2) = [1 1] z0 + [0] [0 1] [1] >= [1 1] z0 + [0] [0 1] [1] = filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) = [1 1] z1 + [0] [0 1] [1] >= [1 1] z1 + [0] [0 1] [1] = ::(z0,z1) filter#3(#true(),z0,z1) = [1 1] z1 + [0] [0 1] [1] >= [1 0] z1 + [0] [0 1] [0] = z1 ** Step 9.a:2: Assumption. WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#(z2,z1)) - Weak DPs: FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,nil} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown, timeBCUB = Unknown, timeBCLB = Unknown}} + Details: () ** Step 9.b:1: RemoveWeakSuffixes. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) - Weak DPs: FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#(z2,z1)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,nil} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:ERATOS#(z0) -> c_5(ERATOS#1#(z0)) -->_1 ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)):2 2:S:ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) -->_2 FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)):3 -->_1 ERATOS#(z0) -> c_5(ERATOS#1#(z0)):1 3:W:FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) -->_1 FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#(z2,z1)):4 4:W:FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#(z2,z1)) -->_1 FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)):3 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 3: FILTER#(z0,z1) -> c_8(FILTER#1#(z1,z0)) 4: FILTER#1#(::(z0,z1),z2) -> c_9(FILTER#(z2,z1)) ** Step 9.b:2: SimplifyRHS. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,nil} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:ERATOS#(z0) -> c_5(ERATOS#1#(z0)) -->_1 ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)):2 2:S:ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1)),FILTER#(z0,z1)) -->_1 ERATOS#(z0) -> c_5(ERATOS#1#(z0)):1 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1))) ** Step 9.b:3: PredecessorEstimationCP. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1))) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/1,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,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#(z0) -> c_5(ERATOS#1#(z0)) Consider the set of all dependency pairs 1: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) 2: ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1))) Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1)) BEST_CASE TIME (?,?) 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:3.a:1: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1))) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/1,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,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} Following symbols are considered usable: {filter,filter#1,filter#2,filter#3,#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT#,#NATSUB# ,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ# ,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos#,eratos#1# ,filter#,filter#1#,filter#2#,filter#3#,mod#} TcT has computed the following interpretation: p(#0) = [1] 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(#add) = [1] p(#and) = [1] x1 + [0] p(#div) = [0] p(#divByZero) = [0] p(#eq) = [0] p(#equal) = [2] x1 + [4] x2 + [4] p(#false) = [0] p(#mult) = [0] p(#natdiv) = [0] p(#natmult) = [1] x1 + [1] x2 + [1] p(#natsub) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [0] p(#pred) = [1] p(#s) = [4] p(#sub) = [0] p(#succ) = [0] p(#true) = [2] p(*) = [0] p(*') = [0] p(-) = [4] x2 + [0] p(-') = [0] p(::) = [1] x2 + [1] p(DIV) = [0] p(ERATOS) = [0] p(ERATOS#1) = [0] p(FILTER) = [0] p(FILTER#1) = [0] p(FILTER#2) = [0] p(FILTER#3) = [0] p(MOD) = [0] p(c) = [0] p(c1) = [1] x1 + [0] p(c10) = [0] p(c11) = [0] p(c12) = [0] p(c13) = [1] x1 + [0] p(c14) = [1] x1 + [0] p(c15) = [0] p(c16) = [1] x1 + [0] p(c17) = [1] x1 + [0] p(c18) = [0] p(c19) = [0] p(c2) = [1] x1 + [1] x2 + [0] p(c20) = [0] p(c21) = [0] p(c22) = [0] p(c23) = [1] x1 + [0] p(c24) = [0] p(c25) = [0] p(c26) = [0] p(c27) = [1] x1 + [0] p(c28) = [0] p(c29) = [1] x1 + [0] p(c3) = [1] x1 + [0] p(c30) = [1] x1 + [1] x2 + [0] p(c31) = [1] x1 + [0] p(c32) = [0] p(c33) = [0] p(c34) = [0] p(c35) = [0] p(c36) = [0] p(c37) = [0] p(c38) = [0] p(c39) = [1] x1 + [0] p(c4) = [1] x1 + [1] x2 + [0] p(c40) = [1] x1 + [0] p(c41) = [0] p(c42) = [1] x1 + [0] p(c43) = [1] x1 + [0] p(c44) = [0] p(c45) = [1] x1 + [1] x2 + [0] p(c46) = [0] p(c47) = [1] x1 + [1] x2 + [0] p(c48) = [0] p(c49) = [0] p(c5) = [0] p(c50) = [0] p(c51) = [0] p(c52) = [0] p(c53) = [0] p(c54) = [0] p(c55) = [1] x1 + [0] p(c56) = [1] x1 + [0] p(c57) = [0] p(c58) = [0] p(c59) = [0] p(c6) = [0] p(c60) = [0] p(c61) = [1] x1 + [0] p(c62) = [1] x1 + [0] p(c63) = [1] x1 + [0] p(c64) = [1] x1 + [0] p(c65) = [1] x1 + [0] p(c66) = [1] x1 + [1] x2 + [0] p(c67) = [0] p(c68) = [1] x1 + [0] p(c69) = [1] x1 + [1] x2 + [0] p(c7) = [0] p(c70) = [0] p(c71) = [1] x1 + [1] x2 + [1] x3 + [0] p(c72) = [0] p(c73) = [0] p(c74) = [1] x1 + [1] x2 + [1] x3 + [0] p(c8) = [0] p(c9) = [0] 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) = [7] x1 + [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(#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(-#) = [0] p(-'#) = [0] p(DIV#) = [0] p(ERATOS#) = [1] x1 + [5] p(ERATOS#1#) = [1] x1 + [4] p(FILTER#) = [0] p(FILTER#1#) = [0] p(FILTER#2#) = [0] p(FILTER#3#) = [0] p(MOD#) = [0] p(div#) = [0] p(eratos#) = [0] p(eratos#1#) = [0] 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) = [4] x1 + [0] p(c_5) = [1] x1 + [0] p(c_6) = [1] x1 + [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [1] x1 + [0] p(c_10) = [0] p(c_11) = [2] x2 + [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [1] x1 + [0] p(c_15) = [0] p(c_16) = [4] x1 + [0] p(c_17) = [1] x2 + [0] p(c_18) = [0] p(c_19) = [2] x1 + [2] x2 + [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) = [4] x1 + [0] p(c_29) = [0] p(c_30) = [0] p(c_31) = [1] x1 + [0] p(c_32) = [4] 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) = [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) = [0] p(c_55) = [0] p(c_56) = [0] p(c_57) = [0] p(c_58) = [0] p(c_59) = [0] p(c_60) = [1] x1 + [1] x2 + [0] p(c_61) = [0] p(c_62) = [4] x2 + [0] p(c_63) = [0] p(c_64) = [4] x1 + [0] p(c_65) = [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [0] p(c_69) = [0] p(c_70) = [4] x1 + [0] p(c_71) = [0] p(c_72) = [0] p(c_73) = [0] p(c_74) = [0] p(c_75) = [0] p(c_76) = [0] p(c_77) = [2] x1 + [0] p(c_78) = [4] x1 + [0] p(c_79) = [0] p(c_80) = [4] x1 + [0] p(c_81) = [0] p(c_82) = [0] p(c_83) = [0] p(c_84) = [0] p(c_85) = [0] p(c_86) = [0] p(c_87) = [0] p(c_88) = [0] p(c_89) = [4] x1 + [0] p(c_90) = [1] x1 + [0] p(c_91) = [0] p(c_92) = [0] p(c_93) = [0] p(c_94) = [0] p(c_95) = [0] p(c_96) = [0] p(c_97) = [0] p(c_98) = [0] p(c_99) = [0] p(c_100) = [0] p(c_101) = [0] p(c_102) = [0] p(c_103) = [2] x1 + [0] p(c_104) = [0] p(c_105) = [0] p(c_106) = [0] p(c_107) = [0] p(c_108) = [0] p(c_109) = [0] p(c_110) = [2] x1 + [0] p(c_111) = [0] p(c_112) = [0] p(c_113) = [0] p(c_114) = [0] p(c_115) = [1] x1 + [0] p(c_116) = [4] x1 + [0] p(c_117) = [0] p(c_118) = [0] p(c_119) = [0] p(c_120) = [0] p(c_121) = [1] x1 + [0] p(c_122) = [0] p(c_123) = [4] x1 + [0] p(c_124) = [0] p(c_125) = [0] p(c_126) = [0] p(c_127) = [0] p(c_128) = [0] p(c_129) = [0] p(c_130) = [0] p(c_131) = [4] x1 + [0] p(c_132) = [0] p(c_133) = [0] p(c_134) = [0] p(c_135) = [0] p(c_136) = [0] p(c_137) = [2] x1 + [0] p(c_138) = [0] p(c_139) = [0] p(c_140) = [1] x1 + [0] p(c_141) = [2] x1 + [0] p(c_142) = [0] p(c_143) = [1] x1 + [0] p(c_144) = [4] x1 + [0] p(c_145) = [0] p(c_146) = [0] p(c_147) = [0] p(c_148) = [0] p(c_149) = [4] x1 + [0] Following rules are strictly oriented: ERATOS#(z0) = [1] z0 + [5] > [1] z0 + [4] = c_5(ERATOS#1#(z0)) Following rules are (at-least) weakly oriented: ERATOS#1#(::(z0,z1)) = [1] z1 + [5] >= [1] z1 + [5] = c_6(ERATOS#(filter(z0,z1))) filter(z0,z1) = [1] z1 + [0] >= [1] z1 + [0] = filter#1(z1,z0) filter#1(::(z0,z1),z2) = [1] z1 + [1] >= [1] z1 + [1] = filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) = [0] >= [0] = nil() filter#2(z0,z1,z2) = [1] z0 + [1] >= [1] z0 + [1] = filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) = [1] z1 + [1] >= [1] z1 + [1] = ::(z0,z1) filter#3(#true(),z0,z1) = [1] z1 + [1] >= [1] z1 + [0] = z1 *** Step 9.b:3.a:2: Assumption. WORST_CASE(?,O(1)) + Considered Problem: - Strict DPs: ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1))) - Weak DPs: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/1,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,nil} + Applied Processor: Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown, timeBCUB = Unknown, timeBCLB = Unknown}} + Details: () *** Step 9.b:3.b:1: RemoveWeakSuffixes. WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1))) - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/1,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,nil} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:W:ERATOS#(z0) -> c_5(ERATOS#1#(z0)) -->_1 ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1))):2 2:W:ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1))) -->_1 ERATOS#(z0) -> c_5(ERATOS#1#(z0)):1 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 1: ERATOS#(z0) -> c_5(ERATOS#1#(z0)) 2: ERATOS#1#(::(z0,z1)) -> c_6(ERATOS#(filter(z0,z1))) *** Step 9.b:3.b:2: EmptyProcessor. WORST_CASE(?,O(1)) + Considered Problem: - Weak TRS: #add(#0(),z0) -> z0 #add(#neg(#s(#0())),z0) -> #pred(z0) #add(#neg(#s(#s(z0))),z1) -> #pred(#add(#pos(#s(z0)),z1)) #add(#pos(#s(#0())),z0) -> #succ(z0) #add(#pos(#s(#s(z0))),z1) -> #succ(#add(#pos(#s(z0)),z1)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(z0)) -> #0() #div(#0(),#pos(z0)) -> #0() #div(#neg(z0),#0()) -> #divByZero() #div(#neg(z0),#neg(z1)) -> #pos(#natdiv(z0,z1)) #div(#neg(z0),#pos(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#0()) -> #divByZero() #div(#pos(z0),#neg(z1)) -> #neg(#natdiv(z0,z1)) #div(#pos(z0),#pos(z1)) -> #pos(#natdiv(z0,z1)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(z0)) -> #false() #eq(#0(),#pos(z0)) -> #false() #eq(#0(),#s(z0)) -> #false() #eq(#neg(z0),#0()) -> #false() #eq(#neg(z0),#neg(z1)) -> #eq(z0,z1) #eq(#neg(z0),#pos(z1)) -> #false() #eq(#pos(z0),#0()) -> #false() #eq(#pos(z0),#neg(z1)) -> #false() #eq(#pos(z0),#pos(z1)) -> #eq(z0,z1) #eq(#s(z0),#0()) -> #false() #eq(#s(z0),#s(z1)) -> #eq(z0,z1) #eq(::(z0,z1),::(z2,z3)) -> #and(#eq(z0,z2),#eq(z1,z3)) #eq(::(z0,z1),nil()) -> #false() #eq(nil(),::(z0,z1)) -> #false() #eq(nil(),nil()) -> #true() #equal(z0,z1) -> #eq(z0,z1) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(z0)) -> #0() #mult(#0(),#pos(z0)) -> #0() #mult(#neg(z0),#0()) -> #0() #mult(#neg(z0),#neg(z1)) -> #pos(#natmult(z0,z1)) #mult(#neg(z0),#pos(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#0()) -> #0() #mult(#pos(z0),#neg(z1)) -> #neg(#natmult(z0,z1)) #mult(#pos(z0),#pos(z1)) -> #pos(#natmult(z0,z1)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(z0),#s(z1)) -> #s(#natdiv(#natsub(z0,z1),#s(z1))) #natmult(#0(),z0) -> #0() #natmult(#s(z0),z1) -> #add(#pos(z1),#natmult(z0,z1)) #natsub(z0,#0()) -> z0 #natsub(#s(z0),#s(z1)) -> #natsub(z0,z1) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0,#0()) -> z0 #sub(z0,#neg(z1)) -> #add(z0,#pos(z1)) #sub(z0,#pos(z1)) -> #add(z0,#neg(z1)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) *(z0,z1) -> #mult(z0,z1) -(z0,z1) -> #sub(z0,z1) div(z0,z1) -> #div(z0,z1) filter(z0,z1) -> filter#1(z1,z0) filter#1(::(z0,z1),z2) -> filter#2(filter(z2,z1),z2,z0) filter#1(nil(),z0) -> nil() filter#2(z0,z1,z2) -> filter#3(#equal(mod(z2,z1),#0()),z2,z0) filter#3(#false(),z0,z1) -> ::(z0,z1) filter#3(#true(),z0,z1) -> z1 mod(z0,z1) -> -(z0,*(z0,div(z0,z1))) - 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,#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,-/2 ,-'/2,DIV/2,ERATOS/1,ERATOS#1/1,FILTER/2,FILTER#1/2,FILTER#2/3,FILTER#3/3,MOD/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,#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,-#/2,-'#/2,DIV#/2,ERATOS#/1 ,ERATOS#1#/1,FILTER#/2,FILTER#1#/2,FILTER#2#/3,FILTER#3#/3,MOD#/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 ,c/0,c1/1,c10/0,c11/0,c12/0,c13/1,c14/1,c15/0,c16/1,c17/1,c18/0,c19/0,c2/2,c20/0,c21/0,c22/0,c23/1,c24/0 ,c25/0,c26/0,c27/1,c28/0,c29/1,c3/1,c30/2,c31/2,c32/0,c33/0,c34/0,c35/0,c36/0,c37/0,c38/0,c39/1,c4/2,c40/1 ,c41/0,c42/1,c43/1,c44/0,c45/2,c46/0,c47/2,c48/0,c49/1,c5/0,c50/0,c51/0,c52/0,c53/0,c54/0,c55/1,c56/1,c57/0 ,c58/0,c59/0,c6/0,c60/0,c61/1,c62/1,c63/1,c64/1,c65/1,c66/2,c67/0,c68/1,c69/2,c7/0,c70/0,c71/3,c72/0,c73/0 ,c74/3,c8/0,c9/0,nil/0,c_1/1,c_2/1,c_3/1,c_4/1,c_5/1,c_6/1,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/2,c_46/2,c_47/0,c_48/0,c_49/0,c_50/0,c_51/0,c_52/0,c_53/0,c_54/1,c_55/1,c_56/0,c_57/1,c_58/1 ,c_59/0,c_60/2,c_61/0,c_62/2,c_63/0,c_64/1,c_65/0,c_66/0,c_67/0,c_68/0,c_69/0,c_70/1,c_71/1,c_72/0,c_73/0 ,c_74/0,c_75/0,c_76/0,c_77/1,c_78/1,c_79/1,c_80/1,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/0,c_87/0,c_88/0 ,c_89/1,c_90/1,c_91/0,c_92/1,c_93/1,c_94/0,c_95/0,c_96/0,c_97/0,c_98/0,c_99/1,c_100/0,c_101/0,c_102/0 ,c_103/1,c_104/0,c_105/1,c_106/1,c_107/0,c_108/0,c_109/0,c_110/1,c_111/0,c_112/0,c_113/0,c_114/0,c_115/1 ,c_116/1,c_117/0,c_118/1,c_119/1,c_120/0,c_121/1,c_122/0,c_123/1,c_124/0,c_125/1,c_126/0,c_127/0,c_128/0 ,c_129/0,c_130/0,c_131/1,c_132/1,c_133/0,c_134/0,c_135/0,c_136/0,c_137/1,c_138/1,c_139/1,c_140/1,c_141/1 ,c_142/0,c_143/1,c_144/1,c_145/0,c_146/1,c_147/0,c_148/0,c_149/1} - Obligation: innermost runtime complexity wrt. defined symbols {#ADD#,#AND#,#DIV#,#EQ#,#EQUAL#,#MULT#,#NATDIV#,#NATMULT# ,#NATSUB#,#PRED#,#SUB#,#SUCC#,#add#,#and#,#div#,#eq#,#equal#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub# ,#succ#,*#,*'#,-#,-'#,DIV#,ERATOS#,ERATOS#1#,FILTER#,FILTER#1#,FILTER#2#,FILTER#3#,MOD#,div#,eratos# ,eratos#1#,filter#,filter#1#,filter#2#,filter#3#,mod#} and constructors {#0,#divByZero,#false,#neg,#pos,#s ,#true,::,c,c1,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c2,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c3,c30,c31 ,c32,c33,c34,c35,c36,c37,c38,c39,c4,c40,c41,c42,c43,c44,c45,c46,c47,c48,c49,c5,c50,c51,c52,c53,c54,c55,c56 ,c57,c58,c59,c6,c60,c61,c62,c63,c64,c65,c66,c67,c68,c69,c7,c70,c71,c72,c73,c74,c8,c9,nil} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). WORST_CASE(?,O(n^2))