/export/starexec/sandbox/solver/bin/starexec_run_tct_rci /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- WORST_CASE(?,O(n^2)) * Step 1: Sum. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict TRS: #abs(#0()) -> #0() #abs(#neg(@x)) -> #pos(@x) #abs(#pos(@x)) -> #pos(@x) #abs(#s(@x)) -> #pos(#s(@x)) #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #less(@x,@y) -> #cklt(#compare(@x,@y)) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) bitToInt(@b) -> bitToInt'(@b,#abs(#pos(#s(#0())))) bitToInt'(@b,@n) -> bitToInt'#1(@b,@n) bitToInt'#1(::(@x,@xs),@n) -> +(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) bitToInt'#1(nil(),@n) -> #abs(#0()) compare(@b1,@b2) -> compare#1(@b1,@b2) compare#1(::(@x,@xs),@b2) -> compare#2(@b2,@x,@xs) compare#1(nil(),@b2) -> #abs(#0()) compare#2(::(@y,@ys),@x,@xs) -> compare#3(compare(@xs,@ys),@x,@y) compare#2(nil(),@x,@xs) -> #abs(#0()) compare#3(@r,@x,@y) -> compare#4(#equal(@r,#0()),@r,@x,@y) compare#4(#false(),@r,@x,@y) -> @r compare#4(#true(),@r,@x,@y) -> compare#5(#less(@x,@y),@x,@y) compare#5(#false(),@x,@y) -> compare#6(#greater(@x,@y)) compare#5(#true(),@x,@y) -> -(#0(),#pos(#s(#0()))) compare#6(#false()) -> #abs(#0()) compare#6(#true()) -> #abs(#pos(#s(#0()))) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) leq(@b1,@b2) -> #less(compare(@b1,@b2),#pos(#s(#0()))) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) mult3(@b1,@b2,@b3) -> mult(mult(@b1,@b2),@b2) sub(@b1,@b2) -> sub#1(sub'(@b1,@b2,#abs(#0()))) sub#1(tuple#2(@b,@_@1)) -> @b sub'(@b1,@b2,@r) -> sub'#1(@b1,@b2,@r) sub'#1(::(@x,@xs),@b2,@r) -> sub'#2(@b2,@r,@x,@xs) sub'#1(nil(),@b2,@r) -> tuple#2(nil(),@r) sub'#2(::(@y,@ys),@r,@x,@xs) -> sub'#3(diff(@x,@y,@r),@xs,@ys) sub'#2(nil(),@r,@x,@xs) -> tuple#2(nil(),@r) sub'#3(tuple#2(@z,@r'),@xs,@ys) -> sub'#4(sub'(@xs,@ys,@r'),@z) sub'#4(tuple#2(@zs,@s),@z) -> tuple#2(sub'#5(#equal(@s,#pos(#s(#0()))),@z,@zs),@s) sub'#5(#false(),@z,@zs) -> ::(@z,@zs) sub'#5(#true(),@z,@zs) -> ::(#abs(#0()),@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1} / {#0/0,#EQ/0,#GT/0,#LT/0 ,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2} - Obligation: innermost runtime complexity wrt. defined symbols {#abs,#add,#and,#ckgt,#cklt,#compare,#div,#eq,#equal ,#greater,#less,#mult,#natdiv,#natmult,#natsub,#pred,#sub,#succ,*,+,-,add,add',add'#1,add'#2,add'#3,bitToInt ,bitToInt',bitToInt'#1,compare,compare#1,compare#2,compare#3,compare#4,compare#5,compare#6,diff,diff#1,div ,leq,mod,mult,mult#1,mult#2,mult#3,mult3,sub,sub#1,sub',sub'#1,sub'#2,sub'#3,sub'#4,sub'#5,sum,sum#1,sum#2 ,sum#3,sum#4} and constructors {#0,#EQ,#GT,#LT,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: Sum {left = someStrategy, right = someStrategy} + Details: () * Step 2: DependencyPairs. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict TRS: #abs(#0()) -> #0() #abs(#neg(@x)) -> #pos(@x) #abs(#pos(@x)) -> #pos(@x) #abs(#s(@x)) -> #pos(#s(@x)) #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #less(@x,@y) -> #cklt(#compare(@x,@y)) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) bitToInt(@b) -> bitToInt'(@b,#abs(#pos(#s(#0())))) bitToInt'(@b,@n) -> bitToInt'#1(@b,@n) bitToInt'#1(::(@x,@xs),@n) -> +(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) bitToInt'#1(nil(),@n) -> #abs(#0()) compare(@b1,@b2) -> compare#1(@b1,@b2) compare#1(::(@x,@xs),@b2) -> compare#2(@b2,@x,@xs) compare#1(nil(),@b2) -> #abs(#0()) compare#2(::(@y,@ys),@x,@xs) -> compare#3(compare(@xs,@ys),@x,@y) compare#2(nil(),@x,@xs) -> #abs(#0()) compare#3(@r,@x,@y) -> compare#4(#equal(@r,#0()),@r,@x,@y) compare#4(#false(),@r,@x,@y) -> @r compare#4(#true(),@r,@x,@y) -> compare#5(#less(@x,@y),@x,@y) compare#5(#false(),@x,@y) -> compare#6(#greater(@x,@y)) compare#5(#true(),@x,@y) -> -(#0(),#pos(#s(#0()))) compare#6(#false()) -> #abs(#0()) compare#6(#true()) -> #abs(#pos(#s(#0()))) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) leq(@b1,@b2) -> #less(compare(@b1,@b2),#pos(#s(#0()))) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) mult3(@b1,@b2,@b3) -> mult(mult(@b1,@b2),@b2) sub(@b1,@b2) -> sub#1(sub'(@b1,@b2,#abs(#0()))) sub#1(tuple#2(@b,@_@1)) -> @b sub'(@b1,@b2,@r) -> sub'#1(@b1,@b2,@r) sub'#1(::(@x,@xs),@b2,@r) -> sub'#2(@b2,@r,@x,@xs) sub'#1(nil(),@b2,@r) -> tuple#2(nil(),@r) sub'#2(::(@y,@ys),@r,@x,@xs) -> sub'#3(diff(@x,@y,@r),@xs,@ys) sub'#2(nil(),@r,@x,@xs) -> tuple#2(nil(),@r) sub'#3(tuple#2(@z,@r'),@xs,@ys) -> sub'#4(sub'(@xs,@ys,@r'),@z) sub'#4(tuple#2(@zs,@s),@z) -> tuple#2(sub'#5(#equal(@s,#pos(#s(#0()))),@z,@zs),@s) sub'#5(#false(),@z,@zs) -> ::(@z,@zs) sub'#5(#true(),@z,@zs) -> ::(#abs(#0()),@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Weak TRS: #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1} / {#0/0,#EQ/0,#GT/0,#LT/0 ,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0,tuple#2/2} - Obligation: innermost runtime complexity wrt. defined symbols {#abs,#add,#and,#ckgt,#cklt,#compare,#div,#eq,#equal ,#greater,#less,#mult,#natdiv,#natmult,#natsub,#pred,#sub,#succ,*,+,-,add,add',add'#1,add'#2,add'#3,bitToInt ,bitToInt',bitToInt'#1,compare,compare#1,compare#2,compare#3,compare#4,compare#5,compare#6,diff,diff#1,div ,leq,mod,mult,mult#1,mult#2,mult#3,mult3,sub,sub#1,sub',sub'#1,sub'#2,sub'#3,sub'#4,sub'#5,sum,sum#1,sum#2 ,sum#3,sum#4} and constructors {#0,#EQ,#GT,#LT,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) *#(@x,@y) -> c_8(#mult#(@x,@y)) +#(@x,@y) -> c_9(#add#(@x,@y)) -#(@x,@y) -> c_10(#sub#(@x,@y)) add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#1#(nil(),@b2,@r) -> c_14() add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) add'#2#(nil(),@r,@x,@xs) -> c_16() add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#1#(nil(),@b2) -> c_24(#abs#(#0())) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) compare#4#(#false(),@r,@x,@y) -> c_28() compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) compare#6#(#false()) -> c_32(#abs#(#0())) compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) diff#1#(#false()) -> c_35(#abs#(#0())) diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) div#(@x,@y) -> c_37(#div#(@x,@y)) leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) mult#1#(nil(),@b2) -> c_42() mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) mult#3#(#false(),@b2,@zs) -> c_44() mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) sub#1#(tuple#2(@b,@_@1)) -> c_48() sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#1#(nil(),@b2,@r) -> c_51() sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) sub'#2#(nil(),@r,@x,@xs) -> c_53() sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs),#equal#(@s,#pos(#s(#0())))) sub'#5#(#false(),@z,@zs) -> c_56() sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) Weak DPs #add#(#0(),@y) -> c_66() #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_71() #and#(#false(),#true()) -> c_72() #and#(#true(),#false()) -> c_73() #and#(#true(),#true()) -> c_74() #ckgt#(#EQ()) -> c_75() #ckgt#(#GT()) -> c_76() #ckgt#(#LT()) -> c_77() #cklt#(#EQ()) -> c_78() #cklt#(#GT()) -> c_79() #cklt#(#LT()) -> c_80() #compare#(#0(),#0()) -> c_81() #compare#(#0(),#neg(@y)) -> c_82() #compare#(#0(),#pos(@y)) -> c_83() #compare#(#0(),#s(@y)) -> c_84() #compare#(#neg(@x),#0()) -> c_85() #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_87() #compare#(#pos(@x),#0()) -> c_88() #compare#(#pos(@x),#neg(@y)) -> c_89() #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_91() #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) #div#(#0(),#0()) -> c_93() #div#(#0(),#neg(@y)) -> c_94() #div#(#0(),#pos(@y)) -> c_95() #div#(#neg(@x),#0()) -> c_96() #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_99() #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_102() #eq#(#0(),#neg(@y)) -> c_103() #eq#(#0(),#pos(@y)) -> c_104() #eq#(#0(),#s(@y)) -> c_105() #eq#(#neg(@x),#0()) -> c_106() #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_108() #eq#(#pos(@x),#0()) -> c_109() #eq#(#pos(@x),#neg(@y)) -> c_110() #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_112() #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_115() #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() #eq#(nil(),::(@y_1,@y_2)) -> c_117() #eq#(nil(),nil()) -> c_118() #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #mult#(#0(),#0()) -> c_123() #mult#(#0(),#neg(@y)) -> c_124() #mult#(#0(),#pos(@y)) -> c_125() #mult#(#neg(@x),#0()) -> c_126() #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_129() #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_132() #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_134() #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_136() #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) #pred#(#0()) -> c_138() #pred#(#neg(#s(@x))) -> c_139() #pred#(#pos(#s(#0()))) -> c_140() #pred#(#pos(#s(#s(@x)))) -> c_141() #sub#(@x,#0()) -> c_142() #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) #succ#(#0()) -> c_145() #succ#(#neg(#s(#0()))) -> c_146() #succ#(#neg(#s(#s(@x)))) -> c_147() #succ#(#pos(#s(@x))) -> c_148() and mark the set of starting terms. * Step 3: PredecessorEstimation. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) *#(@x,@y) -> c_8(#mult#(@x,@y)) +#(@x,@y) -> c_9(#add#(@x,@y)) -#(@x,@y) -> c_10(#sub#(@x,@y)) add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#1#(nil(),@b2,@r) -> c_14() add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) add'#2#(nil(),@r,@x,@xs) -> c_16() add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#1#(nil(),@b2) -> c_24(#abs#(#0())) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) compare#4#(#false(),@r,@x,@y) -> c_28() compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) compare#6#(#false()) -> c_32(#abs#(#0())) compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) diff#1#(#false()) -> c_35(#abs#(#0())) diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) div#(@x,@y) -> c_37(#div#(@x,@y)) leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) mult#1#(nil(),@b2) -> c_42() mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) mult#3#(#false(),@b2,@zs) -> c_44() mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) sub#1#(tuple#2(@b,@_@1)) -> c_48() sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#1#(nil(),@b2,@r) -> c_51() sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) sub'#2#(nil(),@r,@x,@xs) -> c_53() sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs),#equal#(@s,#pos(#s(#0())))) sub'#5#(#false(),@z,@zs) -> c_56() sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) - Weak DPs: #add#(#0(),@y) -> c_66() #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_71() #and#(#false(),#true()) -> c_72() #and#(#true(),#false()) -> c_73() #and#(#true(),#true()) -> c_74() #ckgt#(#EQ()) -> c_75() #ckgt#(#GT()) -> c_76() #ckgt#(#LT()) -> c_77() #cklt#(#EQ()) -> c_78() #cklt#(#GT()) -> c_79() #cklt#(#LT()) -> c_80() #compare#(#0(),#0()) -> c_81() #compare#(#0(),#neg(@y)) -> c_82() #compare#(#0(),#pos(@y)) -> c_83() #compare#(#0(),#s(@y)) -> c_84() #compare#(#neg(@x),#0()) -> c_85() #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_87() #compare#(#pos(@x),#0()) -> c_88() #compare#(#pos(@x),#neg(@y)) -> c_89() #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_91() #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) #div#(#0(),#0()) -> c_93() #div#(#0(),#neg(@y)) -> c_94() #div#(#0(),#pos(@y)) -> c_95() #div#(#neg(@x),#0()) -> c_96() #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_99() #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_102() #eq#(#0(),#neg(@y)) -> c_103() #eq#(#0(),#pos(@y)) -> c_104() #eq#(#0(),#s(@y)) -> c_105() #eq#(#neg(@x),#0()) -> c_106() #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_108() #eq#(#pos(@x),#0()) -> c_109() #eq#(#pos(@x),#neg(@y)) -> c_110() #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_112() #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_115() #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() #eq#(nil(),::(@y_1,@y_2)) -> c_117() #eq#(nil(),nil()) -> c_118() #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #mult#(#0(),#0()) -> c_123() #mult#(#0(),#neg(@y)) -> c_124() #mult#(#0(),#pos(@y)) -> c_125() #mult#(#neg(@x),#0()) -> c_126() #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_129() #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_132() #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_134() #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_136() #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) #pred#(#0()) -> c_138() #pred#(#neg(#s(@x))) -> c_139() #pred#(#pos(#s(#0()))) -> c_140() #pred#(#pos(#s(#s(@x)))) -> c_141() #sub#(@x,#0()) -> c_142() #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) #succ#(#0()) -> c_145() #succ#(#neg(#s(#0()))) -> c_146() #succ#(#neg(#s(#s(@x)))) -> c_147() #succ#(#pos(#s(@x))) -> c_148() - Weak TRS: #abs(#0()) -> #0() #abs(#neg(@x)) -> #pos(@x) #abs(#pos(@x)) -> #pos(@x) #abs(#s(@x)) -> #pos(#s(@x)) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) bitToInt(@b) -> bitToInt'(@b,#abs(#pos(#s(#0())))) bitToInt'(@b,@n) -> bitToInt'#1(@b,@n) bitToInt'#1(::(@x,@xs),@n) -> +(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) bitToInt'#1(nil(),@n) -> #abs(#0()) compare(@b1,@b2) -> compare#1(@b1,@b2) compare#1(::(@x,@xs),@b2) -> compare#2(@b2,@x,@xs) compare#1(nil(),@b2) -> #abs(#0()) compare#2(::(@y,@ys),@x,@xs) -> compare#3(compare(@xs,@ys),@x,@y) compare#2(nil(),@x,@xs) -> #abs(#0()) compare#3(@r,@x,@y) -> compare#4(#equal(@r,#0()),@r,@x,@y) compare#4(#false(),@r,@x,@y) -> @r compare#4(#true(),@r,@x,@y) -> compare#5(#less(@x,@y),@x,@y) compare#5(#false(),@x,@y) -> compare#6(#greater(@x,@y)) compare#5(#true(),@x,@y) -> -(#0(),#pos(#s(#0()))) compare#6(#false()) -> #abs(#0()) compare#6(#true()) -> #abs(#pos(#s(#0()))) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) leq(@b1,@b2) -> #less(compare(@b1,@b2),#pos(#s(#0()))) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) mult3(@b1,@b2,@b3) -> mult(mult(@b1,@b2),@b2) sub(@b1,@b2) -> sub#1(sub'(@b1,@b2,#abs(#0()))) sub#1(tuple#2(@b,@_@1)) -> @b sub'(@b1,@b2,@r) -> sub'#1(@b1,@b2,@r) sub'#1(::(@x,@xs),@b2,@r) -> sub'#2(@b2,@r,@x,@xs) sub'#1(nil(),@b2,@r) -> tuple#2(nil(),@r) sub'#2(::(@y,@ys),@r,@x,@xs) -> sub'#3(diff(@x,@y,@r),@xs,@ys) sub'#2(nil(),@r,@x,@xs) -> tuple#2(nil(),@r) sub'#3(tuple#2(@z,@r'),@xs,@ys) -> sub'#4(sub'(@xs,@ys,@r'),@z) sub'#4(tuple#2(@zs,@s),@z) -> tuple#2(sub'#5(#equal(@s,#pos(#s(#0()))),@z,@zs),@s) sub'#5(#false(),@z,@zs) -> ::(@z,@zs) sub'#5(#true(),@z,@zs) -> ::(#abs(#0()),@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/2,c_12/1,c_13/1,c_14/0,c_15/2 ,c_16/0,c_17/1,c_18/2,c_19/1,c_20/4,c_21/1,c_22/1,c_23/1,c_24/1,c_25/2,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/2,c_39/3,c_40/1,c_41/3,c_42/0,c_43/2,c_44/0,c_45/1 ,c_46/2,c_47/3,c_48/0,c_49/1,c_50/1,c_51/0,c_52/2,c_53/0,c_54/2,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,2,3,4,5,6,7,8,9,10,14,16,28,37,42,44,48,51,53,56} by application of Pre({1,2,3,4,5,6,7,8,9,10,14,16,28,37,42,44,48,51,53,56}) = {11,12,13,18,20,21,24,26,27,29,30,31,32,33,34 ,35,36,38,39,40,41,43,47,49,50,55,57,58,59,60,61,62,63,64,65}. Here rules are labelled as follows: 1: #abs#(#0()) -> c_1() 2: #abs#(#neg(@x)) -> c_2() 3: #abs#(#pos(@x)) -> c_3() 4: #abs#(#s(@x)) -> c_4() 5: #equal#(@x,@y) -> c_5(#eq#(@x,@y)) 6: #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) 7: #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) 8: *#(@x,@y) -> c_8(#mult#(@x,@y)) 9: +#(@x,@y) -> c_9(#add#(@x,@y)) 10: -#(@x,@y) -> c_10(#sub#(@x,@y)) 11: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) 12: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) 13: add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) 14: add'#1#(nil(),@b2,@r) -> c_14() 15: add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) 16: add'#2#(nil(),@r,@x,@xs) -> c_16() 17: add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) 18: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) 19: bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) 20: bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) 21: bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) 22: compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) 23: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) 24: compare#1#(nil(),@b2) -> c_24(#abs#(#0())) 25: compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) 26: compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) 27: compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) 28: compare#4#(#false(),@r,@x,@y) -> c_28() 29: compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) 30: compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) 31: compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) 32: compare#6#(#false()) -> c_32(#abs#(#0())) 33: compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) 34: diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) 35: diff#1#(#false()) -> c_35(#abs#(#0())) 36: diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) 37: div#(@x,@y) -> c_37(#div#(@x,@y)) 38: leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) 39: mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) 40: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) 41: mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) 42: mult#1#(nil(),@b2) -> c_42() 43: mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) 44: mult#3#(#false(),@b2,@zs) -> c_44() 45: mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) 46: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) 47: sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) 48: sub#1#(tuple#2(@b,@_@1)) -> c_48() 49: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) 50: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) 51: sub'#1#(nil(),@b2,@r) -> c_51() 52: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) 53: sub'#2#(nil(),@r,@x,@xs) -> c_53() 54: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) 55: sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs) ,#equal#(@s,#pos(#s(#0())))) 56: sub'#5#(#false(),@z,@zs) -> c_56() 57: sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) 58: sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) 59: sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) 60: sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) 61: sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) 62: sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) 63: sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) 64: sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) 65: sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) 66: #add#(#0(),@y) -> c_66() 67: #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) 68: #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 69: #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) 70: #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 71: #and#(#false(),#false()) -> c_71() 72: #and#(#false(),#true()) -> c_72() 73: #and#(#true(),#false()) -> c_73() 74: #and#(#true(),#true()) -> c_74() 75: #ckgt#(#EQ()) -> c_75() 76: #ckgt#(#GT()) -> c_76() 77: #ckgt#(#LT()) -> c_77() 78: #cklt#(#EQ()) -> c_78() 79: #cklt#(#GT()) -> c_79() 80: #cklt#(#LT()) -> c_80() 81: #compare#(#0(),#0()) -> c_81() 82: #compare#(#0(),#neg(@y)) -> c_82() 83: #compare#(#0(),#pos(@y)) -> c_83() 84: #compare#(#0(),#s(@y)) -> c_84() 85: #compare#(#neg(@x),#0()) -> c_85() 86: #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) 87: #compare#(#neg(@x),#pos(@y)) -> c_87() 88: #compare#(#pos(@x),#0()) -> c_88() 89: #compare#(#pos(@x),#neg(@y)) -> c_89() 90: #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) 91: #compare#(#s(@x),#0()) -> c_91() 92: #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) 93: #div#(#0(),#0()) -> c_93() 94: #div#(#0(),#neg(@y)) -> c_94() 95: #div#(#0(),#pos(@y)) -> c_95() 96: #div#(#neg(@x),#0()) -> c_96() 97: #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) 98: #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) 99: #div#(#pos(@x),#0()) -> c_99() 100: #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) 101: #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) 102: #eq#(#0(),#0()) -> c_102() 103: #eq#(#0(),#neg(@y)) -> c_103() 104: #eq#(#0(),#pos(@y)) -> c_104() 105: #eq#(#0(),#s(@y)) -> c_105() 106: #eq#(#neg(@x),#0()) -> c_106() 107: #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) 108: #eq#(#neg(@x),#pos(@y)) -> c_108() 109: #eq#(#pos(@x),#0()) -> c_109() 110: #eq#(#pos(@x),#neg(@y)) -> c_110() 111: #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) 112: #eq#(#s(@x),#0()) -> c_112() 113: #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) 114: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 115: #eq#(::(@x_1,@x_2),nil()) -> c_115() 116: #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() 117: #eq#(nil(),::(@y_1,@y_2)) -> c_117() 118: #eq#(nil(),nil()) -> c_118() 119: #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() 120: #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() 121: #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() 122: #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 123: #mult#(#0(),#0()) -> c_123() 124: #mult#(#0(),#neg(@y)) -> c_124() 125: #mult#(#0(),#pos(@y)) -> c_125() 126: #mult#(#neg(@x),#0()) -> c_126() 127: #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) 128: #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) 129: #mult#(#pos(@x),#0()) -> c_129() 130: #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) 131: #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) 132: #natdiv#(#0(),#0()) -> c_132() 133: #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) 134: #natmult#(#0(),@y) -> c_134() 135: #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) 136: #natsub#(@x,#0()) -> c_136() 137: #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) 138: #pred#(#0()) -> c_138() 139: #pred#(#neg(#s(@x))) -> c_139() 140: #pred#(#pos(#s(#0()))) -> c_140() 141: #pred#(#pos(#s(#s(@x)))) -> c_141() 142: #sub#(@x,#0()) -> c_142() 143: #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) 144: #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) 145: #succ#(#0()) -> c_145() 146: #succ#(#neg(#s(#0()))) -> c_146() 147: #succ#(#neg(#s(#s(@x)))) -> c_147() 148: #succ#(#pos(#s(@x))) -> c_148() * Step 4: PredecessorEstimation. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#1#(nil(),@b2) -> c_24(#abs#(#0())) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) compare#6#(#false()) -> c_32(#abs#(#0())) compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) diff#1#(#false()) -> c_35(#abs#(#0())) diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs),#equal#(@s,#pos(#s(#0())))) sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) - Weak DPs: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #add#(#0(),@y) -> c_66() #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_71() #and#(#false(),#true()) -> c_72() #and#(#true(),#false()) -> c_73() #and#(#true(),#true()) -> c_74() #ckgt#(#EQ()) -> c_75() #ckgt#(#GT()) -> c_76() #ckgt#(#LT()) -> c_77() #cklt#(#EQ()) -> c_78() #cklt#(#GT()) -> c_79() #cklt#(#LT()) -> c_80() #compare#(#0(),#0()) -> c_81() #compare#(#0(),#neg(@y)) -> c_82() #compare#(#0(),#pos(@y)) -> c_83() #compare#(#0(),#s(@y)) -> c_84() #compare#(#neg(@x),#0()) -> c_85() #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_87() #compare#(#pos(@x),#0()) -> c_88() #compare#(#pos(@x),#neg(@y)) -> c_89() #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_91() #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) #div#(#0(),#0()) -> c_93() #div#(#0(),#neg(@y)) -> c_94() #div#(#0(),#pos(@y)) -> c_95() #div#(#neg(@x),#0()) -> c_96() #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_99() #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_102() #eq#(#0(),#neg(@y)) -> c_103() #eq#(#0(),#pos(@y)) -> c_104() #eq#(#0(),#s(@y)) -> c_105() #eq#(#neg(@x),#0()) -> c_106() #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_108() #eq#(#pos(@x),#0()) -> c_109() #eq#(#pos(@x),#neg(@y)) -> c_110() #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_112() #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_115() #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() #eq#(nil(),::(@y_1,@y_2)) -> c_117() #eq#(nil(),nil()) -> c_118() #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) #mult#(#0(),#0()) -> c_123() #mult#(#0(),#neg(@y)) -> c_124() #mult#(#0(),#pos(@y)) -> c_125() #mult#(#neg(@x),#0()) -> c_126() #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_129() #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_132() #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_134() #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_136() #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) #pred#(#0()) -> c_138() #pred#(#neg(#s(@x))) -> c_139() #pred#(#pos(#s(#0()))) -> c_140() #pred#(#pos(#s(#s(@x)))) -> c_141() #sub#(@x,#0()) -> c_142() #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) #succ#(#0()) -> c_145() #succ#(#neg(#s(#0()))) -> c_146() #succ#(#neg(#s(#s(@x)))) -> c_147() #succ#(#pos(#s(@x))) -> c_148() *#(@x,@y) -> c_8(#mult#(@x,@y)) +#(@x,@y) -> c_9(#add#(@x,@y)) -#(@x,@y) -> c_10(#sub#(@x,@y)) add'#1#(nil(),@b2,@r) -> c_14() add'#2#(nil(),@r,@x,@xs) -> c_16() compare#4#(#false(),@r,@x,@y) -> c_28() div#(@x,@y) -> c_37(#div#(@x,@y)) mult#1#(nil(),@b2) -> c_42() mult#3#(#false(),@b2,@zs) -> c_44() sub#1#(tuple#2(@b,@_@1)) -> c_48() sub'#1#(nil(),@b2,@r) -> c_51() sub'#2#(nil(),@r,@x,@xs) -> c_53() sub'#5#(#false(),@z,@zs) -> c_56() - Weak TRS: #abs(#0()) -> #0() #abs(#neg(@x)) -> #pos(@x) #abs(#pos(@x)) -> #pos(@x) #abs(#s(@x)) -> #pos(#s(@x)) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) bitToInt(@b) -> bitToInt'(@b,#abs(#pos(#s(#0())))) bitToInt'(@b,@n) -> bitToInt'#1(@b,@n) bitToInt'#1(::(@x,@xs),@n) -> +(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) bitToInt'#1(nil(),@n) -> #abs(#0()) compare(@b1,@b2) -> compare#1(@b1,@b2) compare#1(::(@x,@xs),@b2) -> compare#2(@b2,@x,@xs) compare#1(nil(),@b2) -> #abs(#0()) compare#2(::(@y,@ys),@x,@xs) -> compare#3(compare(@xs,@ys),@x,@y) compare#2(nil(),@x,@xs) -> #abs(#0()) compare#3(@r,@x,@y) -> compare#4(#equal(@r,#0()),@r,@x,@y) compare#4(#false(),@r,@x,@y) -> @r compare#4(#true(),@r,@x,@y) -> compare#5(#less(@x,@y),@x,@y) compare#5(#false(),@x,@y) -> compare#6(#greater(@x,@y)) compare#5(#true(),@x,@y) -> -(#0(),#pos(#s(#0()))) compare#6(#false()) -> #abs(#0()) compare#6(#true()) -> #abs(#pos(#s(#0()))) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) leq(@b1,@b2) -> #less(compare(@b1,@b2),#pos(#s(#0()))) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) mult3(@b1,@b2,@b3) -> mult(mult(@b1,@b2),@b2) sub(@b1,@b2) -> sub#1(sub'(@b1,@b2,#abs(#0()))) sub#1(tuple#2(@b,@_@1)) -> @b sub'(@b1,@b2,@r) -> sub'#1(@b1,@b2,@r) sub'#1(::(@x,@xs),@b2,@r) -> sub'#2(@b2,@r,@x,@xs) sub'#1(nil(),@b2,@r) -> tuple#2(nil(),@r) sub'#2(::(@y,@ys),@r,@x,@xs) -> sub'#3(diff(@x,@y,@r),@xs,@ys) sub'#2(nil(),@r,@x,@xs) -> tuple#2(nil(),@r) sub'#3(tuple#2(@z,@r'),@xs,@ys) -> sub'#4(sub'(@xs,@ys,@r'),@z) sub'#4(tuple#2(@zs,@s),@z) -> tuple#2(sub'#5(#equal(@s,#pos(#s(#0()))),@z,@zs),@s) sub'#5(#false(),@z,@zs) -> ::(@z,@zs) sub'#5(#true(),@z,@zs) -> ::(#abs(#0()),@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/2,c_12/1,c_13/1,c_14/0,c_15/2 ,c_16/0,c_17/1,c_18/2,c_19/1,c_20/4,c_21/1,c_22/1,c_23/1,c_24/1,c_25/2,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/2,c_39/3,c_40/1,c_41/3,c_42/0,c_43/2,c_44/0,c_45/1 ,c_46/2,c_47/3,c_48/0,c_49/1,c_50/1,c_51/0,c_52/2,c_53/0,c_54/2,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {9,12,14,18,19,20,22,23,25,37,41,43,44,45} by application of Pre({9,12,14,18,19,20,22,23,25,37,41,43,44,45}) = {7,10,11,16,17,21,36,39,40,42}. Here rules are labelled as follows: 1: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) 2: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) 3: add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) 4: add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) 5: add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) 6: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) 7: bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) 8: bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) 9: bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) 10: compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) 11: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) 12: compare#1#(nil(),@b2) -> c_24(#abs#(#0())) 13: compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) 14: compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) 15: compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) 16: compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) 17: compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) 18: compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) 19: compare#6#(#false()) -> c_32(#abs#(#0())) 20: compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) 21: diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) 22: diff#1#(#false()) -> c_35(#abs#(#0())) 23: diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) 24: leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) 25: mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) 26: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) 27: mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) 28: mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) 29: mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) 30: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) 31: sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) 32: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) 33: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) 34: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) 35: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) 36: sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs) ,#equal#(@s,#pos(#s(#0())))) 37: sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) 38: sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) 39: sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) 40: sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) 41: sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) 42: sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) 43: sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) 44: sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) 45: sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) 46: #abs#(#0()) -> c_1() 47: #abs#(#neg(@x)) -> c_2() 48: #abs#(#pos(@x)) -> c_3() 49: #abs#(#s(@x)) -> c_4() 50: #add#(#0(),@y) -> c_66() 51: #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) 52: #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 53: #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) 54: #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 55: #and#(#false(),#false()) -> c_71() 56: #and#(#false(),#true()) -> c_72() 57: #and#(#true(),#false()) -> c_73() 58: #and#(#true(),#true()) -> c_74() 59: #ckgt#(#EQ()) -> c_75() 60: #ckgt#(#GT()) -> c_76() 61: #ckgt#(#LT()) -> c_77() 62: #cklt#(#EQ()) -> c_78() 63: #cklt#(#GT()) -> c_79() 64: #cklt#(#LT()) -> c_80() 65: #compare#(#0(),#0()) -> c_81() 66: #compare#(#0(),#neg(@y)) -> c_82() 67: #compare#(#0(),#pos(@y)) -> c_83() 68: #compare#(#0(),#s(@y)) -> c_84() 69: #compare#(#neg(@x),#0()) -> c_85() 70: #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) 71: #compare#(#neg(@x),#pos(@y)) -> c_87() 72: #compare#(#pos(@x),#0()) -> c_88() 73: #compare#(#pos(@x),#neg(@y)) -> c_89() 74: #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) 75: #compare#(#s(@x),#0()) -> c_91() 76: #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) 77: #div#(#0(),#0()) -> c_93() 78: #div#(#0(),#neg(@y)) -> c_94() 79: #div#(#0(),#pos(@y)) -> c_95() 80: #div#(#neg(@x),#0()) -> c_96() 81: #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) 82: #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) 83: #div#(#pos(@x),#0()) -> c_99() 84: #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) 85: #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) 86: #eq#(#0(),#0()) -> c_102() 87: #eq#(#0(),#neg(@y)) -> c_103() 88: #eq#(#0(),#pos(@y)) -> c_104() 89: #eq#(#0(),#s(@y)) -> c_105() 90: #eq#(#neg(@x),#0()) -> c_106() 91: #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) 92: #eq#(#neg(@x),#pos(@y)) -> c_108() 93: #eq#(#pos(@x),#0()) -> c_109() 94: #eq#(#pos(@x),#neg(@y)) -> c_110() 95: #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) 96: #eq#(#s(@x),#0()) -> c_112() 97: #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) 98: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 99: #eq#(::(@x_1,@x_2),nil()) -> c_115() 100: #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() 101: #eq#(nil(),::(@y_1,@y_2)) -> c_117() 102: #eq#(nil(),nil()) -> c_118() 103: #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() 104: #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() 105: #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() 106: #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 107: #equal#(@x,@y) -> c_5(#eq#(@x,@y)) 108: #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) 109: #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) 110: #mult#(#0(),#0()) -> c_123() 111: #mult#(#0(),#neg(@y)) -> c_124() 112: #mult#(#0(),#pos(@y)) -> c_125() 113: #mult#(#neg(@x),#0()) -> c_126() 114: #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) 115: #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) 116: #mult#(#pos(@x),#0()) -> c_129() 117: #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) 118: #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) 119: #natdiv#(#0(),#0()) -> c_132() 120: #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) 121: #natmult#(#0(),@y) -> c_134() 122: #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) 123: #natsub#(@x,#0()) -> c_136() 124: #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) 125: #pred#(#0()) -> c_138() 126: #pred#(#neg(#s(@x))) -> c_139() 127: #pred#(#pos(#s(#0()))) -> c_140() 128: #pred#(#pos(#s(#s(@x)))) -> c_141() 129: #sub#(@x,#0()) -> c_142() 130: #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) 131: #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) 132: #succ#(#0()) -> c_145() 133: #succ#(#neg(#s(#0()))) -> c_146() 134: #succ#(#neg(#s(#s(@x)))) -> c_147() 135: #succ#(#pos(#s(@x))) -> c_148() 136: *#(@x,@y) -> c_8(#mult#(@x,@y)) 137: +#(@x,@y) -> c_9(#add#(@x,@y)) 138: -#(@x,@y) -> c_10(#sub#(@x,@y)) 139: add'#1#(nil(),@b2,@r) -> c_14() 140: add'#2#(nil(),@r,@x,@xs) -> c_16() 141: compare#4#(#false(),@r,@x,@y) -> c_28() 142: div#(@x,@y) -> c_37(#div#(@x,@y)) 143: mult#1#(nil(),@b2) -> c_42() 144: mult#3#(#false(),@b2,@zs) -> c_44() 145: sub#1#(tuple#2(@b,@_@1)) -> c_48() 146: sub'#1#(nil(),@b2,@r) -> c_51() 147: sub'#2#(nil(),@r,@x,@xs) -> c_53() 148: sub'#5#(#false(),@z,@zs) -> c_56() * Step 5: PredecessorEstimation. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs),#equal#(@s,#pos(#s(#0())))) sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) - Weak DPs: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #add#(#0(),@y) -> c_66() #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_71() #and#(#false(),#true()) -> c_72() #and#(#true(),#false()) -> c_73() #and#(#true(),#true()) -> c_74() #ckgt#(#EQ()) -> c_75() #ckgt#(#GT()) -> c_76() #ckgt#(#LT()) -> c_77() #cklt#(#EQ()) -> c_78() #cklt#(#GT()) -> c_79() #cklt#(#LT()) -> c_80() #compare#(#0(),#0()) -> c_81() #compare#(#0(),#neg(@y)) -> c_82() #compare#(#0(),#pos(@y)) -> c_83() #compare#(#0(),#s(@y)) -> c_84() #compare#(#neg(@x),#0()) -> c_85() #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_87() #compare#(#pos(@x),#0()) -> c_88() #compare#(#pos(@x),#neg(@y)) -> c_89() #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_91() #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) #div#(#0(),#0()) -> c_93() #div#(#0(),#neg(@y)) -> c_94() #div#(#0(),#pos(@y)) -> c_95() #div#(#neg(@x),#0()) -> c_96() #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_99() #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_102() #eq#(#0(),#neg(@y)) -> c_103() #eq#(#0(),#pos(@y)) -> c_104() #eq#(#0(),#s(@y)) -> c_105() #eq#(#neg(@x),#0()) -> c_106() #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_108() #eq#(#pos(@x),#0()) -> c_109() #eq#(#pos(@x),#neg(@y)) -> c_110() #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_112() #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_115() #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() #eq#(nil(),::(@y_1,@y_2)) -> c_117() #eq#(nil(),nil()) -> c_118() #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) #mult#(#0(),#0()) -> c_123() #mult#(#0(),#neg(@y)) -> c_124() #mult#(#0(),#pos(@y)) -> c_125() #mult#(#neg(@x),#0()) -> c_126() #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_129() #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_132() #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_134() #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_136() #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) #pred#(#0()) -> c_138() #pred#(#neg(#s(@x))) -> c_139() #pred#(#pos(#s(#0()))) -> c_140() #pred#(#pos(#s(#s(@x)))) -> c_141() #sub#(@x,#0()) -> c_142() #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) #succ#(#0()) -> c_145() #succ#(#neg(#s(#0()))) -> c_146() #succ#(#neg(#s(#s(@x)))) -> c_147() #succ#(#pos(#s(@x))) -> c_148() *#(@x,@y) -> c_8(#mult#(@x,@y)) +#(@x,@y) -> c_9(#add#(@x,@y)) -#(@x,@y) -> c_10(#sub#(@x,@y)) add'#1#(nil(),@b2,@r) -> c_14() add'#2#(nil(),@r,@x,@xs) -> c_16() bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) compare#1#(nil(),@b2) -> c_24(#abs#(#0())) compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) compare#4#(#false(),@r,@x,@y) -> c_28() compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) compare#6#(#false()) -> c_32(#abs#(#0())) compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) diff#1#(#false()) -> c_35(#abs#(#0())) diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) div#(@x,@y) -> c_37(#div#(@x,@y)) mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) mult#1#(nil(),@b2) -> c_42() mult#3#(#false(),@b2,@zs) -> c_44() sub#1#(tuple#2(@b,@_@1)) -> c_48() sub'#1#(nil(),@b2,@r) -> c_51() sub'#2#(nil(),@r,@x,@xs) -> c_53() sub'#5#(#false(),@z,@zs) -> c_56() sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) - Weak TRS: #abs(#0()) -> #0() #abs(#neg(@x)) -> #pos(@x) #abs(#pos(@x)) -> #pos(@x) #abs(#s(@x)) -> #pos(#s(@x)) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) bitToInt(@b) -> bitToInt'(@b,#abs(#pos(#s(#0())))) bitToInt'(@b,@n) -> bitToInt'#1(@b,@n) bitToInt'#1(::(@x,@xs),@n) -> +(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) bitToInt'#1(nil(),@n) -> #abs(#0()) compare(@b1,@b2) -> compare#1(@b1,@b2) compare#1(::(@x,@xs),@b2) -> compare#2(@b2,@x,@xs) compare#1(nil(),@b2) -> #abs(#0()) compare#2(::(@y,@ys),@x,@xs) -> compare#3(compare(@xs,@ys),@x,@y) compare#2(nil(),@x,@xs) -> #abs(#0()) compare#3(@r,@x,@y) -> compare#4(#equal(@r,#0()),@r,@x,@y) compare#4(#false(),@r,@x,@y) -> @r compare#4(#true(),@r,@x,@y) -> compare#5(#less(@x,@y),@x,@y) compare#5(#false(),@x,@y) -> compare#6(#greater(@x,@y)) compare#5(#true(),@x,@y) -> -(#0(),#pos(#s(#0()))) compare#6(#false()) -> #abs(#0()) compare#6(#true()) -> #abs(#pos(#s(#0()))) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) leq(@b1,@b2) -> #less(compare(@b1,@b2),#pos(#s(#0()))) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) mult3(@b1,@b2,@b3) -> mult(mult(@b1,@b2),@b2) sub(@b1,@b2) -> sub#1(sub'(@b1,@b2,#abs(#0()))) sub#1(tuple#2(@b,@_@1)) -> @b sub'(@b1,@b2,@r) -> sub'#1(@b1,@b2,@r) sub'#1(::(@x,@xs),@b2,@r) -> sub'#2(@b2,@r,@x,@xs) sub'#1(nil(),@b2,@r) -> tuple#2(nil(),@r) sub'#2(::(@y,@ys),@r,@x,@xs) -> sub'#3(diff(@x,@y,@r),@xs,@ys) sub'#2(nil(),@r,@x,@xs) -> tuple#2(nil(),@r) sub'#3(tuple#2(@z,@r'),@xs,@ys) -> sub'#4(sub'(@xs,@ys,@r'),@z) sub'#4(tuple#2(@zs,@s),@z) -> tuple#2(sub'#5(#equal(@s,#pos(#s(#0()))),@z,@zs),@s) sub'#5(#false(),@z,@zs) -> ::(@z,@zs) sub'#5(#true(),@z,@zs) -> ::(#abs(#0()),@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/2,c_12/1,c_13/1,c_14/0,c_15/2 ,c_16/0,c_17/1,c_18/2,c_19/1,c_20/4,c_21/1,c_22/1,c_23/1,c_24/1,c_25/2,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/2,c_39/3,c_40/1,c_41/3,c_42/0,c_43/2,c_44/0,c_45/1 ,c_46/2,c_47/3,c_48/0,c_49/1,c_50/1,c_51/0,c_52/2,c_53/0,c_54/2,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {14,15,27,31} by application of Pre({14,15,27,31}) = {13,25,26,30}. Here rules are labelled as follows: 1: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) 2: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) 3: add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) 4: add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) 5: add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) 6: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) 7: bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) 8: bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) 9: compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) 10: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) 11: compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) 12: compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) 13: compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) 14: compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) 15: diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) 16: leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) 17: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) 18: mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) 19: mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) 20: mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) 21: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) 22: sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) 23: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) 24: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) 25: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) 26: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) 27: sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs) ,#equal#(@s,#pos(#s(#0())))) 28: sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) 29: sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) 30: sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) 31: sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) 32: #abs#(#0()) -> c_1() 33: #abs#(#neg(@x)) -> c_2() 34: #abs#(#pos(@x)) -> c_3() 35: #abs#(#s(@x)) -> c_4() 36: #add#(#0(),@y) -> c_66() 37: #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) 38: #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 39: #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) 40: #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 41: #and#(#false(),#false()) -> c_71() 42: #and#(#false(),#true()) -> c_72() 43: #and#(#true(),#false()) -> c_73() 44: #and#(#true(),#true()) -> c_74() 45: #ckgt#(#EQ()) -> c_75() 46: #ckgt#(#GT()) -> c_76() 47: #ckgt#(#LT()) -> c_77() 48: #cklt#(#EQ()) -> c_78() 49: #cklt#(#GT()) -> c_79() 50: #cklt#(#LT()) -> c_80() 51: #compare#(#0(),#0()) -> c_81() 52: #compare#(#0(),#neg(@y)) -> c_82() 53: #compare#(#0(),#pos(@y)) -> c_83() 54: #compare#(#0(),#s(@y)) -> c_84() 55: #compare#(#neg(@x),#0()) -> c_85() 56: #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) 57: #compare#(#neg(@x),#pos(@y)) -> c_87() 58: #compare#(#pos(@x),#0()) -> c_88() 59: #compare#(#pos(@x),#neg(@y)) -> c_89() 60: #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) 61: #compare#(#s(@x),#0()) -> c_91() 62: #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) 63: #div#(#0(),#0()) -> c_93() 64: #div#(#0(),#neg(@y)) -> c_94() 65: #div#(#0(),#pos(@y)) -> c_95() 66: #div#(#neg(@x),#0()) -> c_96() 67: #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) 68: #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) 69: #div#(#pos(@x),#0()) -> c_99() 70: #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) 71: #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) 72: #eq#(#0(),#0()) -> c_102() 73: #eq#(#0(),#neg(@y)) -> c_103() 74: #eq#(#0(),#pos(@y)) -> c_104() 75: #eq#(#0(),#s(@y)) -> c_105() 76: #eq#(#neg(@x),#0()) -> c_106() 77: #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) 78: #eq#(#neg(@x),#pos(@y)) -> c_108() 79: #eq#(#pos(@x),#0()) -> c_109() 80: #eq#(#pos(@x),#neg(@y)) -> c_110() 81: #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) 82: #eq#(#s(@x),#0()) -> c_112() 83: #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) 84: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 85: #eq#(::(@x_1,@x_2),nil()) -> c_115() 86: #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() 87: #eq#(nil(),::(@y_1,@y_2)) -> c_117() 88: #eq#(nil(),nil()) -> c_118() 89: #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() 90: #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() 91: #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() 92: #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 93: #equal#(@x,@y) -> c_5(#eq#(@x,@y)) 94: #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) 95: #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) 96: #mult#(#0(),#0()) -> c_123() 97: #mult#(#0(),#neg(@y)) -> c_124() 98: #mult#(#0(),#pos(@y)) -> c_125() 99: #mult#(#neg(@x),#0()) -> c_126() 100: #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) 101: #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) 102: #mult#(#pos(@x),#0()) -> c_129() 103: #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) 104: #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) 105: #natdiv#(#0(),#0()) -> c_132() 106: #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) 107: #natmult#(#0(),@y) -> c_134() 108: #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) 109: #natsub#(@x,#0()) -> c_136() 110: #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) 111: #pred#(#0()) -> c_138() 112: #pred#(#neg(#s(@x))) -> c_139() 113: #pred#(#pos(#s(#0()))) -> c_140() 114: #pred#(#pos(#s(#s(@x)))) -> c_141() 115: #sub#(@x,#0()) -> c_142() 116: #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) 117: #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) 118: #succ#(#0()) -> c_145() 119: #succ#(#neg(#s(#0()))) -> c_146() 120: #succ#(#neg(#s(#s(@x)))) -> c_147() 121: #succ#(#pos(#s(@x))) -> c_148() 122: *#(@x,@y) -> c_8(#mult#(@x,@y)) 123: +#(@x,@y) -> c_9(#add#(@x,@y)) 124: -#(@x,@y) -> c_10(#sub#(@x,@y)) 125: add'#1#(nil(),@b2,@r) -> c_14() 126: add'#2#(nil(),@r,@x,@xs) -> c_16() 127: bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) 128: compare#1#(nil(),@b2) -> c_24(#abs#(#0())) 129: compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) 130: compare#4#(#false(),@r,@x,@y) -> c_28() 131: compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) 132: compare#6#(#false()) -> c_32(#abs#(#0())) 133: compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) 134: diff#1#(#false()) -> c_35(#abs#(#0())) 135: diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) 136: div#(@x,@y) -> c_37(#div#(@x,@y)) 137: mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) 138: mult#1#(nil(),@b2) -> c_42() 139: mult#3#(#false(),@b2,@zs) -> c_44() 140: sub#1#(tuple#2(@b,@_@1)) -> c_48() 141: sub'#1#(nil(),@b2,@r) -> c_51() 142: sub'#2#(nil(),@r,@x,@xs) -> c_53() 143: sub'#5#(#false(),@z,@zs) -> c_56() 144: sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) 145: sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) 146: sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) 147: sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) 148: sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) * Step 6: PredecessorEstimation. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) - Weak DPs: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #add#(#0(),@y) -> c_66() #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_71() #and#(#false(),#true()) -> c_72() #and#(#true(),#false()) -> c_73() #and#(#true(),#true()) -> c_74() #ckgt#(#EQ()) -> c_75() #ckgt#(#GT()) -> c_76() #ckgt#(#LT()) -> c_77() #cklt#(#EQ()) -> c_78() #cklt#(#GT()) -> c_79() #cklt#(#LT()) -> c_80() #compare#(#0(),#0()) -> c_81() #compare#(#0(),#neg(@y)) -> c_82() #compare#(#0(),#pos(@y)) -> c_83() #compare#(#0(),#s(@y)) -> c_84() #compare#(#neg(@x),#0()) -> c_85() #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_87() #compare#(#pos(@x),#0()) -> c_88() #compare#(#pos(@x),#neg(@y)) -> c_89() #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_91() #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) #div#(#0(),#0()) -> c_93() #div#(#0(),#neg(@y)) -> c_94() #div#(#0(),#pos(@y)) -> c_95() #div#(#neg(@x),#0()) -> c_96() #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_99() #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_102() #eq#(#0(),#neg(@y)) -> c_103() #eq#(#0(),#pos(@y)) -> c_104() #eq#(#0(),#s(@y)) -> c_105() #eq#(#neg(@x),#0()) -> c_106() #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_108() #eq#(#pos(@x),#0()) -> c_109() #eq#(#pos(@x),#neg(@y)) -> c_110() #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_112() #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_115() #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() #eq#(nil(),::(@y_1,@y_2)) -> c_117() #eq#(nil(),nil()) -> c_118() #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) #mult#(#0(),#0()) -> c_123() #mult#(#0(),#neg(@y)) -> c_124() #mult#(#0(),#pos(@y)) -> c_125() #mult#(#neg(@x),#0()) -> c_126() #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_129() #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_132() #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_134() #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_136() #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) #pred#(#0()) -> c_138() #pred#(#neg(#s(@x))) -> c_139() #pred#(#pos(#s(#0()))) -> c_140() #pred#(#pos(#s(#s(@x)))) -> c_141() #sub#(@x,#0()) -> c_142() #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) #succ#(#0()) -> c_145() #succ#(#neg(#s(#0()))) -> c_146() #succ#(#neg(#s(#s(@x)))) -> c_147() #succ#(#pos(#s(@x))) -> c_148() *#(@x,@y) -> c_8(#mult#(@x,@y)) +#(@x,@y) -> c_9(#add#(@x,@y)) -#(@x,@y) -> c_10(#sub#(@x,@y)) add'#1#(nil(),@b2,@r) -> c_14() add'#2#(nil(),@r,@x,@xs) -> c_16() bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) compare#1#(nil(),@b2) -> c_24(#abs#(#0())) compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) compare#4#(#false(),@r,@x,@y) -> c_28() compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) compare#6#(#false()) -> c_32(#abs#(#0())) compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) diff#1#(#false()) -> c_35(#abs#(#0())) diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) div#(@x,@y) -> c_37(#div#(@x,@y)) mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) mult#1#(nil(),@b2) -> c_42() mult#3#(#false(),@b2,@zs) -> c_44() sub#1#(tuple#2(@b,@_@1)) -> c_48() sub'#1#(nil(),@b2,@r) -> c_51() sub'#2#(nil(),@r,@x,@xs) -> c_53() sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs),#equal#(@s,#pos(#s(#0())))) sub'#5#(#false(),@z,@zs) -> c_56() sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) - Weak TRS: #abs(#0()) -> #0() #abs(#neg(@x)) -> #pos(@x) #abs(#pos(@x)) -> #pos(@x) #abs(#s(@x)) -> #pos(#s(@x)) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) bitToInt(@b) -> bitToInt'(@b,#abs(#pos(#s(#0())))) bitToInt'(@b,@n) -> bitToInt'#1(@b,@n) bitToInt'#1(::(@x,@xs),@n) -> +(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) bitToInt'#1(nil(),@n) -> #abs(#0()) compare(@b1,@b2) -> compare#1(@b1,@b2) compare#1(::(@x,@xs),@b2) -> compare#2(@b2,@x,@xs) compare#1(nil(),@b2) -> #abs(#0()) compare#2(::(@y,@ys),@x,@xs) -> compare#3(compare(@xs,@ys),@x,@y) compare#2(nil(),@x,@xs) -> #abs(#0()) compare#3(@r,@x,@y) -> compare#4(#equal(@r,#0()),@r,@x,@y) compare#4(#false(),@r,@x,@y) -> @r compare#4(#true(),@r,@x,@y) -> compare#5(#less(@x,@y),@x,@y) compare#5(#false(),@x,@y) -> compare#6(#greater(@x,@y)) compare#5(#true(),@x,@y) -> -(#0(),#pos(#s(#0()))) compare#6(#false()) -> #abs(#0()) compare#6(#true()) -> #abs(#pos(#s(#0()))) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) leq(@b1,@b2) -> #less(compare(@b1,@b2),#pos(#s(#0()))) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) mult3(@b1,@b2,@b3) -> mult(mult(@b1,@b2),@b2) sub(@b1,@b2) -> sub#1(sub'(@b1,@b2,#abs(#0()))) sub#1(tuple#2(@b,@_@1)) -> @b sub'(@b1,@b2,@r) -> sub'#1(@b1,@b2,@r) sub'#1(::(@x,@xs),@b2,@r) -> sub'#2(@b2,@r,@x,@xs) sub'#1(nil(),@b2,@r) -> tuple#2(nil(),@r) sub'#2(::(@y,@ys),@r,@x,@xs) -> sub'#3(diff(@x,@y,@r),@xs,@ys) sub'#2(nil(),@r,@x,@xs) -> tuple#2(nil(),@r) sub'#3(tuple#2(@z,@r'),@xs,@ys) -> sub'#4(sub'(@xs,@ys,@r'),@z) sub'#4(tuple#2(@zs,@s),@z) -> tuple#2(sub'#5(#equal(@s,#pos(#s(#0()))),@z,@zs),@s) sub'#5(#false(),@z,@zs) -> ::(@z,@zs) sub'#5(#true(),@z,@zs) -> ::(#abs(#0()),@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/2,c_12/1,c_13/1,c_14/0,c_15/2 ,c_16/0,c_17/1,c_18/2,c_19/1,c_20/4,c_21/1,c_22/1,c_23/1,c_24/1,c_25/2,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/2,c_39/3,c_40/1,c_41/3,c_42/0,c_43/2,c_44/0,c_45/1 ,c_46/2,c_47/3,c_48/0,c_49/1,c_50/1,c_51/0,c_52/2,c_53/0,c_54/2,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {13,27} by application of Pre({13,27}) = {12,26}. Here rules are labelled as follows: 1: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) 2: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) 3: add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) 4: add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) 5: add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) 6: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) 7: bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) 8: bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) 9: compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) 10: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) 11: compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) 12: compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) 13: compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) 14: leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) 15: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) 16: mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) 17: mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) 18: mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) 19: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) 20: sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) 21: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) 22: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) 23: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) 24: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) 25: sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) 26: sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) 27: sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) 28: #abs#(#0()) -> c_1() 29: #abs#(#neg(@x)) -> c_2() 30: #abs#(#pos(@x)) -> c_3() 31: #abs#(#s(@x)) -> c_4() 32: #add#(#0(),@y) -> c_66() 33: #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) 34: #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 35: #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) 36: #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 37: #and#(#false(),#false()) -> c_71() 38: #and#(#false(),#true()) -> c_72() 39: #and#(#true(),#false()) -> c_73() 40: #and#(#true(),#true()) -> c_74() 41: #ckgt#(#EQ()) -> c_75() 42: #ckgt#(#GT()) -> c_76() 43: #ckgt#(#LT()) -> c_77() 44: #cklt#(#EQ()) -> c_78() 45: #cklt#(#GT()) -> c_79() 46: #cklt#(#LT()) -> c_80() 47: #compare#(#0(),#0()) -> c_81() 48: #compare#(#0(),#neg(@y)) -> c_82() 49: #compare#(#0(),#pos(@y)) -> c_83() 50: #compare#(#0(),#s(@y)) -> c_84() 51: #compare#(#neg(@x),#0()) -> c_85() 52: #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) 53: #compare#(#neg(@x),#pos(@y)) -> c_87() 54: #compare#(#pos(@x),#0()) -> c_88() 55: #compare#(#pos(@x),#neg(@y)) -> c_89() 56: #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) 57: #compare#(#s(@x),#0()) -> c_91() 58: #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) 59: #div#(#0(),#0()) -> c_93() 60: #div#(#0(),#neg(@y)) -> c_94() 61: #div#(#0(),#pos(@y)) -> c_95() 62: #div#(#neg(@x),#0()) -> c_96() 63: #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) 64: #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) 65: #div#(#pos(@x),#0()) -> c_99() 66: #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) 67: #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) 68: #eq#(#0(),#0()) -> c_102() 69: #eq#(#0(),#neg(@y)) -> c_103() 70: #eq#(#0(),#pos(@y)) -> c_104() 71: #eq#(#0(),#s(@y)) -> c_105() 72: #eq#(#neg(@x),#0()) -> c_106() 73: #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) 74: #eq#(#neg(@x),#pos(@y)) -> c_108() 75: #eq#(#pos(@x),#0()) -> c_109() 76: #eq#(#pos(@x),#neg(@y)) -> c_110() 77: #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) 78: #eq#(#s(@x),#0()) -> c_112() 79: #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) 80: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 81: #eq#(::(@x_1,@x_2),nil()) -> c_115() 82: #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() 83: #eq#(nil(),::(@y_1,@y_2)) -> c_117() 84: #eq#(nil(),nil()) -> c_118() 85: #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() 86: #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() 87: #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() 88: #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 89: #equal#(@x,@y) -> c_5(#eq#(@x,@y)) 90: #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) 91: #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) 92: #mult#(#0(),#0()) -> c_123() 93: #mult#(#0(),#neg(@y)) -> c_124() 94: #mult#(#0(),#pos(@y)) -> c_125() 95: #mult#(#neg(@x),#0()) -> c_126() 96: #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) 97: #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) 98: #mult#(#pos(@x),#0()) -> c_129() 99: #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) 100: #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) 101: #natdiv#(#0(),#0()) -> c_132() 102: #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) 103: #natmult#(#0(),@y) -> c_134() 104: #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) 105: #natsub#(@x,#0()) -> c_136() 106: #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) 107: #pred#(#0()) -> c_138() 108: #pred#(#neg(#s(@x))) -> c_139() 109: #pred#(#pos(#s(#0()))) -> c_140() 110: #pred#(#pos(#s(#s(@x)))) -> c_141() 111: #sub#(@x,#0()) -> c_142() 112: #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) 113: #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) 114: #succ#(#0()) -> c_145() 115: #succ#(#neg(#s(#0()))) -> c_146() 116: #succ#(#neg(#s(#s(@x)))) -> c_147() 117: #succ#(#pos(#s(@x))) -> c_148() 118: *#(@x,@y) -> c_8(#mult#(@x,@y)) 119: +#(@x,@y) -> c_9(#add#(@x,@y)) 120: -#(@x,@y) -> c_10(#sub#(@x,@y)) 121: add'#1#(nil(),@b2,@r) -> c_14() 122: add'#2#(nil(),@r,@x,@xs) -> c_16() 123: bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) 124: compare#1#(nil(),@b2) -> c_24(#abs#(#0())) 125: compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) 126: compare#4#(#false(),@r,@x,@y) -> c_28() 127: compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) 128: compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) 129: compare#6#(#false()) -> c_32(#abs#(#0())) 130: compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) 131: diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) 132: diff#1#(#false()) -> c_35(#abs#(#0())) 133: diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) 134: div#(@x,@y) -> c_37(#div#(@x,@y)) 135: mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) 136: mult#1#(nil(),@b2) -> c_42() 137: mult#3#(#false(),@b2,@zs) -> c_44() 138: sub#1#(tuple#2(@b,@_@1)) -> c_48() 139: sub'#1#(nil(),@b2,@r) -> c_51() 140: sub'#2#(nil(),@r,@x,@xs) -> c_53() 141: sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs) ,#equal#(@s,#pos(#s(#0())))) 142: sub'#5#(#false(),@z,@zs) -> c_56() 143: sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) 144: sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) 145: sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) 146: sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) 147: sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) 148: sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) * Step 7: PredecessorEstimation. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) - Weak DPs: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #add#(#0(),@y) -> c_66() #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_71() #and#(#false(),#true()) -> c_72() #and#(#true(),#false()) -> c_73() #and#(#true(),#true()) -> c_74() #ckgt#(#EQ()) -> c_75() #ckgt#(#GT()) -> c_76() #ckgt#(#LT()) -> c_77() #cklt#(#EQ()) -> c_78() #cklt#(#GT()) -> c_79() #cklt#(#LT()) -> c_80() #compare#(#0(),#0()) -> c_81() #compare#(#0(),#neg(@y)) -> c_82() #compare#(#0(),#pos(@y)) -> c_83() #compare#(#0(),#s(@y)) -> c_84() #compare#(#neg(@x),#0()) -> c_85() #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_87() #compare#(#pos(@x),#0()) -> c_88() #compare#(#pos(@x),#neg(@y)) -> c_89() #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_91() #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) #div#(#0(),#0()) -> c_93() #div#(#0(),#neg(@y)) -> c_94() #div#(#0(),#pos(@y)) -> c_95() #div#(#neg(@x),#0()) -> c_96() #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_99() #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_102() #eq#(#0(),#neg(@y)) -> c_103() #eq#(#0(),#pos(@y)) -> c_104() #eq#(#0(),#s(@y)) -> c_105() #eq#(#neg(@x),#0()) -> c_106() #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_108() #eq#(#pos(@x),#0()) -> c_109() #eq#(#pos(@x),#neg(@y)) -> c_110() #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_112() #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_115() #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() #eq#(nil(),::(@y_1,@y_2)) -> c_117() #eq#(nil(),nil()) -> c_118() #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) #mult#(#0(),#0()) -> c_123() #mult#(#0(),#neg(@y)) -> c_124() #mult#(#0(),#pos(@y)) -> c_125() #mult#(#neg(@x),#0()) -> c_126() #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_129() #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_132() #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_134() #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_136() #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) #pred#(#0()) -> c_138() #pred#(#neg(#s(@x))) -> c_139() #pred#(#pos(#s(#0()))) -> c_140() #pred#(#pos(#s(#s(@x)))) -> c_141() #sub#(@x,#0()) -> c_142() #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) #succ#(#0()) -> c_145() #succ#(#neg(#s(#0()))) -> c_146() #succ#(#neg(#s(#s(@x)))) -> c_147() #succ#(#pos(#s(@x))) -> c_148() *#(@x,@y) -> c_8(#mult#(@x,@y)) +#(@x,@y) -> c_9(#add#(@x,@y)) -#(@x,@y) -> c_10(#sub#(@x,@y)) add'#1#(nil(),@b2,@r) -> c_14() add'#2#(nil(),@r,@x,@xs) -> c_16() bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) compare#1#(nil(),@b2) -> c_24(#abs#(#0())) compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) compare#4#(#false(),@r,@x,@y) -> c_28() compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) compare#6#(#false()) -> c_32(#abs#(#0())) compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) diff#1#(#false()) -> c_35(#abs#(#0())) diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) div#(@x,@y) -> c_37(#div#(@x,@y)) mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) mult#1#(nil(),@b2) -> c_42() mult#3#(#false(),@b2,@zs) -> c_44() sub#1#(tuple#2(@b,@_@1)) -> c_48() sub'#1#(nil(),@b2,@r) -> c_51() sub'#2#(nil(),@r,@x,@xs) -> c_53() sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs),#equal#(@s,#pos(#s(#0())))) sub'#5#(#false(),@z,@zs) -> c_56() sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) - Weak TRS: #abs(#0()) -> #0() #abs(#neg(@x)) -> #pos(@x) #abs(#pos(@x)) -> #pos(@x) #abs(#s(@x)) -> #pos(#s(@x)) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) bitToInt(@b) -> bitToInt'(@b,#abs(#pos(#s(#0())))) bitToInt'(@b,@n) -> bitToInt'#1(@b,@n) bitToInt'#1(::(@x,@xs),@n) -> +(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) bitToInt'#1(nil(),@n) -> #abs(#0()) compare(@b1,@b2) -> compare#1(@b1,@b2) compare#1(::(@x,@xs),@b2) -> compare#2(@b2,@x,@xs) compare#1(nil(),@b2) -> #abs(#0()) compare#2(::(@y,@ys),@x,@xs) -> compare#3(compare(@xs,@ys),@x,@y) compare#2(nil(),@x,@xs) -> #abs(#0()) compare#3(@r,@x,@y) -> compare#4(#equal(@r,#0()),@r,@x,@y) compare#4(#false(),@r,@x,@y) -> @r compare#4(#true(),@r,@x,@y) -> compare#5(#less(@x,@y),@x,@y) compare#5(#false(),@x,@y) -> compare#6(#greater(@x,@y)) compare#5(#true(),@x,@y) -> -(#0(),#pos(#s(#0()))) compare#6(#false()) -> #abs(#0()) compare#6(#true()) -> #abs(#pos(#s(#0()))) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) leq(@b1,@b2) -> #less(compare(@b1,@b2),#pos(#s(#0()))) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) mult3(@b1,@b2,@b3) -> mult(mult(@b1,@b2),@b2) sub(@b1,@b2) -> sub#1(sub'(@b1,@b2,#abs(#0()))) sub#1(tuple#2(@b,@_@1)) -> @b sub'(@b1,@b2,@r) -> sub'#1(@b1,@b2,@r) sub'#1(::(@x,@xs),@b2,@r) -> sub'#2(@b2,@r,@x,@xs) sub'#1(nil(),@b2,@r) -> tuple#2(nil(),@r) sub'#2(::(@y,@ys),@r,@x,@xs) -> sub'#3(diff(@x,@y,@r),@xs,@ys) sub'#2(nil(),@r,@x,@xs) -> tuple#2(nil(),@r) sub'#3(tuple#2(@z,@r'),@xs,@ys) -> sub'#4(sub'(@xs,@ys,@r'),@z) sub'#4(tuple#2(@zs,@s),@z) -> tuple#2(sub'#5(#equal(@s,#pos(#s(#0()))),@z,@zs),@s) sub'#5(#false(),@z,@zs) -> ::(@z,@zs) sub'#5(#true(),@z,@zs) -> ::(#abs(#0()),@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/2,c_12/1,c_13/1,c_14/0,c_15/2 ,c_16/0,c_17/1,c_18/2,c_19/1,c_20/4,c_21/1,c_22/1,c_23/1,c_24/1,c_25/2,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/2,c_39/3,c_40/1,c_41/3,c_42/0,c_43/2,c_44/0,c_45/1 ,c_46/2,c_47/3,c_48/0,c_49/1,c_50/1,c_51/0,c_52/2,c_53/0,c_54/2,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {12,25} by application of Pre({12,25}) = {11,24}. Here rules are labelled as follows: 1: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) 2: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) 3: add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) 4: add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) 5: add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) 6: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) 7: bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) 8: bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) 9: compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) 10: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) 11: compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) 12: compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) 13: leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) 14: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) 15: mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) 16: mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) 17: mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) 18: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) 19: sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) 20: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) 21: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) 22: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) 23: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) 24: sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) 25: sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) 26: #abs#(#0()) -> c_1() 27: #abs#(#neg(@x)) -> c_2() 28: #abs#(#pos(@x)) -> c_3() 29: #abs#(#s(@x)) -> c_4() 30: #add#(#0(),@y) -> c_66() 31: #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) 32: #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 33: #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) 34: #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 35: #and#(#false(),#false()) -> c_71() 36: #and#(#false(),#true()) -> c_72() 37: #and#(#true(),#false()) -> c_73() 38: #and#(#true(),#true()) -> c_74() 39: #ckgt#(#EQ()) -> c_75() 40: #ckgt#(#GT()) -> c_76() 41: #ckgt#(#LT()) -> c_77() 42: #cklt#(#EQ()) -> c_78() 43: #cklt#(#GT()) -> c_79() 44: #cklt#(#LT()) -> c_80() 45: #compare#(#0(),#0()) -> c_81() 46: #compare#(#0(),#neg(@y)) -> c_82() 47: #compare#(#0(),#pos(@y)) -> c_83() 48: #compare#(#0(),#s(@y)) -> c_84() 49: #compare#(#neg(@x),#0()) -> c_85() 50: #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) 51: #compare#(#neg(@x),#pos(@y)) -> c_87() 52: #compare#(#pos(@x),#0()) -> c_88() 53: #compare#(#pos(@x),#neg(@y)) -> c_89() 54: #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) 55: #compare#(#s(@x),#0()) -> c_91() 56: #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) 57: #div#(#0(),#0()) -> c_93() 58: #div#(#0(),#neg(@y)) -> c_94() 59: #div#(#0(),#pos(@y)) -> c_95() 60: #div#(#neg(@x),#0()) -> c_96() 61: #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) 62: #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) 63: #div#(#pos(@x),#0()) -> c_99() 64: #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) 65: #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) 66: #eq#(#0(),#0()) -> c_102() 67: #eq#(#0(),#neg(@y)) -> c_103() 68: #eq#(#0(),#pos(@y)) -> c_104() 69: #eq#(#0(),#s(@y)) -> c_105() 70: #eq#(#neg(@x),#0()) -> c_106() 71: #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) 72: #eq#(#neg(@x),#pos(@y)) -> c_108() 73: #eq#(#pos(@x),#0()) -> c_109() 74: #eq#(#pos(@x),#neg(@y)) -> c_110() 75: #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) 76: #eq#(#s(@x),#0()) -> c_112() 77: #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) 78: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 79: #eq#(::(@x_1,@x_2),nil()) -> c_115() 80: #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() 81: #eq#(nil(),::(@y_1,@y_2)) -> c_117() 82: #eq#(nil(),nil()) -> c_118() 83: #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() 84: #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() 85: #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() 86: #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 87: #equal#(@x,@y) -> c_5(#eq#(@x,@y)) 88: #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) 89: #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) 90: #mult#(#0(),#0()) -> c_123() 91: #mult#(#0(),#neg(@y)) -> c_124() 92: #mult#(#0(),#pos(@y)) -> c_125() 93: #mult#(#neg(@x),#0()) -> c_126() 94: #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) 95: #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) 96: #mult#(#pos(@x),#0()) -> c_129() 97: #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) 98: #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) 99: #natdiv#(#0(),#0()) -> c_132() 100: #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) 101: #natmult#(#0(),@y) -> c_134() 102: #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) 103: #natsub#(@x,#0()) -> c_136() 104: #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) 105: #pred#(#0()) -> c_138() 106: #pred#(#neg(#s(@x))) -> c_139() 107: #pred#(#pos(#s(#0()))) -> c_140() 108: #pred#(#pos(#s(#s(@x)))) -> c_141() 109: #sub#(@x,#0()) -> c_142() 110: #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) 111: #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) 112: #succ#(#0()) -> c_145() 113: #succ#(#neg(#s(#0()))) -> c_146() 114: #succ#(#neg(#s(#s(@x)))) -> c_147() 115: #succ#(#pos(#s(@x))) -> c_148() 116: *#(@x,@y) -> c_8(#mult#(@x,@y)) 117: +#(@x,@y) -> c_9(#add#(@x,@y)) 118: -#(@x,@y) -> c_10(#sub#(@x,@y)) 119: add'#1#(nil(),@b2,@r) -> c_14() 120: add'#2#(nil(),@r,@x,@xs) -> c_16() 121: bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) 122: compare#1#(nil(),@b2) -> c_24(#abs#(#0())) 123: compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) 124: compare#4#(#false(),@r,@x,@y) -> c_28() 125: compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) 126: compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) 127: compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) 128: compare#6#(#false()) -> c_32(#abs#(#0())) 129: compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) 130: diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) 131: diff#1#(#false()) -> c_35(#abs#(#0())) 132: diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) 133: div#(@x,@y) -> c_37(#div#(@x,@y)) 134: mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) 135: mult#1#(nil(),@b2) -> c_42() 136: mult#3#(#false(),@b2,@zs) -> c_44() 137: sub#1#(tuple#2(@b,@_@1)) -> c_48() 138: sub'#1#(nil(),@b2,@r) -> c_51() 139: sub'#2#(nil(),@r,@x,@xs) -> c_53() 140: sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs) ,#equal#(@s,#pos(#s(#0())))) 141: sub'#5#(#false(),@z,@zs) -> c_56() 142: sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) 143: sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) 144: sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) 145: sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) 146: sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) 147: sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) 148: sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) * Step 8: PredecessorEstimation. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) - Weak DPs: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #add#(#0(),@y) -> c_66() #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_71() #and#(#false(),#true()) -> c_72() #and#(#true(),#false()) -> c_73() #and#(#true(),#true()) -> c_74() #ckgt#(#EQ()) -> c_75() #ckgt#(#GT()) -> c_76() #ckgt#(#LT()) -> c_77() #cklt#(#EQ()) -> c_78() #cklt#(#GT()) -> c_79() #cklt#(#LT()) -> c_80() #compare#(#0(),#0()) -> c_81() #compare#(#0(),#neg(@y)) -> c_82() #compare#(#0(),#pos(@y)) -> c_83() #compare#(#0(),#s(@y)) -> c_84() #compare#(#neg(@x),#0()) -> c_85() #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_87() #compare#(#pos(@x),#0()) -> c_88() #compare#(#pos(@x),#neg(@y)) -> c_89() #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_91() #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) #div#(#0(),#0()) -> c_93() #div#(#0(),#neg(@y)) -> c_94() #div#(#0(),#pos(@y)) -> c_95() #div#(#neg(@x),#0()) -> c_96() #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_99() #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_102() #eq#(#0(),#neg(@y)) -> c_103() #eq#(#0(),#pos(@y)) -> c_104() #eq#(#0(),#s(@y)) -> c_105() #eq#(#neg(@x),#0()) -> c_106() #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_108() #eq#(#pos(@x),#0()) -> c_109() #eq#(#pos(@x),#neg(@y)) -> c_110() #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_112() #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_115() #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() #eq#(nil(),::(@y_1,@y_2)) -> c_117() #eq#(nil(),nil()) -> c_118() #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) #mult#(#0(),#0()) -> c_123() #mult#(#0(),#neg(@y)) -> c_124() #mult#(#0(),#pos(@y)) -> c_125() #mult#(#neg(@x),#0()) -> c_126() #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_129() #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_132() #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_134() #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_136() #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) #pred#(#0()) -> c_138() #pred#(#neg(#s(@x))) -> c_139() #pred#(#pos(#s(#0()))) -> c_140() #pred#(#pos(#s(#s(@x)))) -> c_141() #sub#(@x,#0()) -> c_142() #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) #succ#(#0()) -> c_145() #succ#(#neg(#s(#0()))) -> c_146() #succ#(#neg(#s(#s(@x)))) -> c_147() #succ#(#pos(#s(@x))) -> c_148() *#(@x,@y) -> c_8(#mult#(@x,@y)) +#(@x,@y) -> c_9(#add#(@x,@y)) -#(@x,@y) -> c_10(#sub#(@x,@y)) add'#1#(nil(),@b2,@r) -> c_14() add'#2#(nil(),@r,@x,@xs) -> c_16() bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) compare#1#(nil(),@b2) -> c_24(#abs#(#0())) compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) compare#4#(#false(),@r,@x,@y) -> c_28() compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) compare#6#(#false()) -> c_32(#abs#(#0())) compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) diff#1#(#false()) -> c_35(#abs#(#0())) diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) div#(@x,@y) -> c_37(#div#(@x,@y)) mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) mult#1#(nil(),@b2) -> c_42() mult#3#(#false(),@b2,@zs) -> c_44() sub#1#(tuple#2(@b,@_@1)) -> c_48() sub'#1#(nil(),@b2,@r) -> c_51() sub'#2#(nil(),@r,@x,@xs) -> c_53() sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs),#equal#(@s,#pos(#s(#0())))) sub'#5#(#false(),@z,@zs) -> c_56() sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) - Weak TRS: #abs(#0()) -> #0() #abs(#neg(@x)) -> #pos(@x) #abs(#pos(@x)) -> #pos(@x) #abs(#s(@x)) -> #pos(#s(@x)) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) bitToInt(@b) -> bitToInt'(@b,#abs(#pos(#s(#0())))) bitToInt'(@b,@n) -> bitToInt'#1(@b,@n) bitToInt'#1(::(@x,@xs),@n) -> +(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) bitToInt'#1(nil(),@n) -> #abs(#0()) compare(@b1,@b2) -> compare#1(@b1,@b2) compare#1(::(@x,@xs),@b2) -> compare#2(@b2,@x,@xs) compare#1(nil(),@b2) -> #abs(#0()) compare#2(::(@y,@ys),@x,@xs) -> compare#3(compare(@xs,@ys),@x,@y) compare#2(nil(),@x,@xs) -> #abs(#0()) compare#3(@r,@x,@y) -> compare#4(#equal(@r,#0()),@r,@x,@y) compare#4(#false(),@r,@x,@y) -> @r compare#4(#true(),@r,@x,@y) -> compare#5(#less(@x,@y),@x,@y) compare#5(#false(),@x,@y) -> compare#6(#greater(@x,@y)) compare#5(#true(),@x,@y) -> -(#0(),#pos(#s(#0()))) compare#6(#false()) -> #abs(#0()) compare#6(#true()) -> #abs(#pos(#s(#0()))) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) leq(@b1,@b2) -> #less(compare(@b1,@b2),#pos(#s(#0()))) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) mult3(@b1,@b2,@b3) -> mult(mult(@b1,@b2),@b2) sub(@b1,@b2) -> sub#1(sub'(@b1,@b2,#abs(#0()))) sub#1(tuple#2(@b,@_@1)) -> @b sub'(@b1,@b2,@r) -> sub'#1(@b1,@b2,@r) sub'#1(::(@x,@xs),@b2,@r) -> sub'#2(@b2,@r,@x,@xs) sub'#1(nil(),@b2,@r) -> tuple#2(nil(),@r) sub'#2(::(@y,@ys),@r,@x,@xs) -> sub'#3(diff(@x,@y,@r),@xs,@ys) sub'#2(nil(),@r,@x,@xs) -> tuple#2(nil(),@r) sub'#3(tuple#2(@z,@r'),@xs,@ys) -> sub'#4(sub'(@xs,@ys,@r'),@z) sub'#4(tuple#2(@zs,@s),@z) -> tuple#2(sub'#5(#equal(@s,#pos(#s(#0()))),@z,@zs),@s) sub'#5(#false(),@z,@zs) -> ::(@z,@zs) sub'#5(#true(),@z,@zs) -> ::(#abs(#0()),@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/2,c_12/1,c_13/1,c_14/0,c_15/2 ,c_16/0,c_17/1,c_18/2,c_19/1,c_20/4,c_21/1,c_22/1,c_23/1,c_24/1,c_25/2,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/2,c_39/3,c_40/1,c_41/3,c_42/0,c_43/2,c_44/0,c_45/1 ,c_46/2,c_47/3,c_48/0,c_49/1,c_50/1,c_51/0,c_52/2,c_53/0,c_54/2,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {23} by application of Pre({23}) = {4}. Here rules are labelled as follows: 1: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) 2: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) 3: add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) 4: add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) 5: add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) 6: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) 7: bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) 8: bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) 9: compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) 10: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) 11: compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) 12: leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) 13: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) 14: mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) 15: mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) 16: mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) 17: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) 18: sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) 19: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) 20: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) 21: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) 22: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) 23: sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) 24: #abs#(#0()) -> c_1() 25: #abs#(#neg(@x)) -> c_2() 26: #abs#(#pos(@x)) -> c_3() 27: #abs#(#s(@x)) -> c_4() 28: #add#(#0(),@y) -> c_66() 29: #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) 30: #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 31: #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) 32: #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 33: #and#(#false(),#false()) -> c_71() 34: #and#(#false(),#true()) -> c_72() 35: #and#(#true(),#false()) -> c_73() 36: #and#(#true(),#true()) -> c_74() 37: #ckgt#(#EQ()) -> c_75() 38: #ckgt#(#GT()) -> c_76() 39: #ckgt#(#LT()) -> c_77() 40: #cklt#(#EQ()) -> c_78() 41: #cklt#(#GT()) -> c_79() 42: #cklt#(#LT()) -> c_80() 43: #compare#(#0(),#0()) -> c_81() 44: #compare#(#0(),#neg(@y)) -> c_82() 45: #compare#(#0(),#pos(@y)) -> c_83() 46: #compare#(#0(),#s(@y)) -> c_84() 47: #compare#(#neg(@x),#0()) -> c_85() 48: #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) 49: #compare#(#neg(@x),#pos(@y)) -> c_87() 50: #compare#(#pos(@x),#0()) -> c_88() 51: #compare#(#pos(@x),#neg(@y)) -> c_89() 52: #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) 53: #compare#(#s(@x),#0()) -> c_91() 54: #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) 55: #div#(#0(),#0()) -> c_93() 56: #div#(#0(),#neg(@y)) -> c_94() 57: #div#(#0(),#pos(@y)) -> c_95() 58: #div#(#neg(@x),#0()) -> c_96() 59: #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) 60: #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) 61: #div#(#pos(@x),#0()) -> c_99() 62: #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) 63: #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) 64: #eq#(#0(),#0()) -> c_102() 65: #eq#(#0(),#neg(@y)) -> c_103() 66: #eq#(#0(),#pos(@y)) -> c_104() 67: #eq#(#0(),#s(@y)) -> c_105() 68: #eq#(#neg(@x),#0()) -> c_106() 69: #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) 70: #eq#(#neg(@x),#pos(@y)) -> c_108() 71: #eq#(#pos(@x),#0()) -> c_109() 72: #eq#(#pos(@x),#neg(@y)) -> c_110() 73: #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) 74: #eq#(#s(@x),#0()) -> c_112() 75: #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) 76: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 77: #eq#(::(@x_1,@x_2),nil()) -> c_115() 78: #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() 79: #eq#(nil(),::(@y_1,@y_2)) -> c_117() 80: #eq#(nil(),nil()) -> c_118() 81: #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() 82: #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() 83: #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() 84: #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 85: #equal#(@x,@y) -> c_5(#eq#(@x,@y)) 86: #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) 87: #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) 88: #mult#(#0(),#0()) -> c_123() 89: #mult#(#0(),#neg(@y)) -> c_124() 90: #mult#(#0(),#pos(@y)) -> c_125() 91: #mult#(#neg(@x),#0()) -> c_126() 92: #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) 93: #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) 94: #mult#(#pos(@x),#0()) -> c_129() 95: #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) 96: #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) 97: #natdiv#(#0(),#0()) -> c_132() 98: #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) 99: #natmult#(#0(),@y) -> c_134() 100: #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) 101: #natsub#(@x,#0()) -> c_136() 102: #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) 103: #pred#(#0()) -> c_138() 104: #pred#(#neg(#s(@x))) -> c_139() 105: #pred#(#pos(#s(#0()))) -> c_140() 106: #pred#(#pos(#s(#s(@x)))) -> c_141() 107: #sub#(@x,#0()) -> c_142() 108: #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) 109: #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) 110: #succ#(#0()) -> c_145() 111: #succ#(#neg(#s(#0()))) -> c_146() 112: #succ#(#neg(#s(#s(@x)))) -> c_147() 113: #succ#(#pos(#s(@x))) -> c_148() 114: *#(@x,@y) -> c_8(#mult#(@x,@y)) 115: +#(@x,@y) -> c_9(#add#(@x,@y)) 116: -#(@x,@y) -> c_10(#sub#(@x,@y)) 117: add'#1#(nil(),@b2,@r) -> c_14() 118: add'#2#(nil(),@r,@x,@xs) -> c_16() 119: bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) 120: compare#1#(nil(),@b2) -> c_24(#abs#(#0())) 121: compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) 122: compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) 123: compare#4#(#false(),@r,@x,@y) -> c_28() 124: compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) 125: compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) 126: compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) 127: compare#6#(#false()) -> c_32(#abs#(#0())) 128: compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) 129: diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) 130: diff#1#(#false()) -> c_35(#abs#(#0())) 131: diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) 132: div#(@x,@y) -> c_37(#div#(@x,@y)) 133: mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) 134: mult#1#(nil(),@b2) -> c_42() 135: mult#3#(#false(),@b2,@zs) -> c_44() 136: sub#1#(tuple#2(@b,@_@1)) -> c_48() 137: sub'#1#(nil(),@b2,@r) -> c_51() 138: sub'#2#(nil(),@r,@x,@xs) -> c_53() 139: sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs) ,#equal#(@s,#pos(#s(#0())))) 140: sub'#5#(#false(),@z,@zs) -> c_56() 141: sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) 142: sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) 143: sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) 144: sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) 145: sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) 146: sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) 147: sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) 148: sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) * Step 9: RemoveWeakSuffixes. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) - Weak DPs: #abs#(#0()) -> c_1() #abs#(#neg(@x)) -> c_2() #abs#(#pos(@x)) -> c_3() #abs#(#s(@x)) -> c_4() #add#(#0(),@y) -> c_66() #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) #and#(#false(),#false()) -> c_71() #and#(#false(),#true()) -> c_72() #and#(#true(),#false()) -> c_73() #and#(#true(),#true()) -> c_74() #ckgt#(#EQ()) -> c_75() #ckgt#(#GT()) -> c_76() #ckgt#(#LT()) -> c_77() #cklt#(#EQ()) -> c_78() #cklt#(#GT()) -> c_79() #cklt#(#LT()) -> c_80() #compare#(#0(),#0()) -> c_81() #compare#(#0(),#neg(@y)) -> c_82() #compare#(#0(),#pos(@y)) -> c_83() #compare#(#0(),#s(@y)) -> c_84() #compare#(#neg(@x),#0()) -> c_85() #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) #compare#(#neg(@x),#pos(@y)) -> c_87() #compare#(#pos(@x),#0()) -> c_88() #compare#(#pos(@x),#neg(@y)) -> c_89() #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) #compare#(#s(@x),#0()) -> c_91() #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) #div#(#0(),#0()) -> c_93() #div#(#0(),#neg(@y)) -> c_94() #div#(#0(),#pos(@y)) -> c_95() #div#(#neg(@x),#0()) -> c_96() #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) #div#(#pos(@x),#0()) -> c_99() #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) #eq#(#0(),#0()) -> c_102() #eq#(#0(),#neg(@y)) -> c_103() #eq#(#0(),#pos(@y)) -> c_104() #eq#(#0(),#s(@y)) -> c_105() #eq#(#neg(@x),#0()) -> c_106() #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) #eq#(#neg(@x),#pos(@y)) -> c_108() #eq#(#pos(@x),#0()) -> c_109() #eq#(#pos(@x),#neg(@y)) -> c_110() #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) #eq#(#s(@x),#0()) -> c_112() #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #eq#(::(@x_1,@x_2),nil()) -> c_115() #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() #eq#(nil(),::(@y_1,@y_2)) -> c_117() #eq#(nil(),nil()) -> c_118() #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) #equal#(@x,@y) -> c_5(#eq#(@x,@y)) #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) #mult#(#0(),#0()) -> c_123() #mult#(#0(),#neg(@y)) -> c_124() #mult#(#0(),#pos(@y)) -> c_125() #mult#(#neg(@x),#0()) -> c_126() #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) #mult#(#pos(@x),#0()) -> c_129() #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) #natdiv#(#0(),#0()) -> c_132() #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) #natmult#(#0(),@y) -> c_134() #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) #natsub#(@x,#0()) -> c_136() #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) #pred#(#0()) -> c_138() #pred#(#neg(#s(@x))) -> c_139() #pred#(#pos(#s(#0()))) -> c_140() #pred#(#pos(#s(#s(@x)))) -> c_141() #sub#(@x,#0()) -> c_142() #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) #succ#(#0()) -> c_145() #succ#(#neg(#s(#0()))) -> c_146() #succ#(#neg(#s(#s(@x)))) -> c_147() #succ#(#pos(#s(@x))) -> c_148() *#(@x,@y) -> c_8(#mult#(@x,@y)) +#(@x,@y) -> c_9(#add#(@x,@y)) -#(@x,@y) -> c_10(#sub#(@x,@y)) add'#1#(nil(),@b2,@r) -> c_14() add'#2#(nil(),@r,@x,@xs) -> c_16() bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) compare#1#(nil(),@b2) -> c_24(#abs#(#0())) compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) compare#4#(#false(),@r,@x,@y) -> c_28() compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) compare#6#(#false()) -> c_32(#abs#(#0())) compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) diff#1#(#false()) -> c_35(#abs#(#0())) diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) div#(@x,@y) -> c_37(#div#(@x,@y)) mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) mult#1#(nil(),@b2) -> c_42() mult#3#(#false(),@b2,@zs) -> c_44() sub#1#(tuple#2(@b,@_@1)) -> c_48() sub'#1#(nil(),@b2,@r) -> c_51() sub'#2#(nil(),@r,@x,@xs) -> c_53() sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs),#equal#(@s,#pos(#s(#0())))) sub'#5#(#false(),@z,@zs) -> c_56() sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) - Weak TRS: #abs(#0()) -> #0() #abs(#neg(@x)) -> #pos(@x) #abs(#pos(@x)) -> #pos(@x) #abs(#s(@x)) -> #pos(#s(@x)) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) bitToInt(@b) -> bitToInt'(@b,#abs(#pos(#s(#0())))) bitToInt'(@b,@n) -> bitToInt'#1(@b,@n) bitToInt'#1(::(@x,@xs),@n) -> +(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) bitToInt'#1(nil(),@n) -> #abs(#0()) compare(@b1,@b2) -> compare#1(@b1,@b2) compare#1(::(@x,@xs),@b2) -> compare#2(@b2,@x,@xs) compare#1(nil(),@b2) -> #abs(#0()) compare#2(::(@y,@ys),@x,@xs) -> compare#3(compare(@xs,@ys),@x,@y) compare#2(nil(),@x,@xs) -> #abs(#0()) compare#3(@r,@x,@y) -> compare#4(#equal(@r,#0()),@r,@x,@y) compare#4(#false(),@r,@x,@y) -> @r compare#4(#true(),@r,@x,@y) -> compare#5(#less(@x,@y),@x,@y) compare#5(#false(),@x,@y) -> compare#6(#greater(@x,@y)) compare#5(#true(),@x,@y) -> -(#0(),#pos(#s(#0()))) compare#6(#false()) -> #abs(#0()) compare#6(#true()) -> #abs(#pos(#s(#0()))) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) leq(@b1,@b2) -> #less(compare(@b1,@b2),#pos(#s(#0()))) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) mult3(@b1,@b2,@b3) -> mult(mult(@b1,@b2),@b2) sub(@b1,@b2) -> sub#1(sub'(@b1,@b2,#abs(#0()))) sub#1(tuple#2(@b,@_@1)) -> @b sub'(@b1,@b2,@r) -> sub'#1(@b1,@b2,@r) sub'#1(::(@x,@xs),@b2,@r) -> sub'#2(@b2,@r,@x,@xs) sub'#1(nil(),@b2,@r) -> tuple#2(nil(),@r) sub'#2(::(@y,@ys),@r,@x,@xs) -> sub'#3(diff(@x,@y,@r),@xs,@ys) sub'#2(nil(),@r,@x,@xs) -> tuple#2(nil(),@r) sub'#3(tuple#2(@z,@r'),@xs,@ys) -> sub'#4(sub'(@xs,@ys,@r'),@z) sub'#4(tuple#2(@zs,@s),@z) -> tuple#2(sub'#5(#equal(@s,#pos(#s(#0()))),@z,@zs),@s) sub'#5(#false(),@z,@zs) -> ::(@z,@zs) sub'#5(#true(),@z,@zs) -> ::(#abs(#0()),@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/2,c_12/1,c_13/1,c_14/0,c_15/2 ,c_16/0,c_17/1,c_18/2,c_19/1,c_20/4,c_21/1,c_22/1,c_23/1,c_24/1,c_25/2,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/2,c_39/3,c_40/1,c_41/3,c_42/0,c_43/2,c_44/0,c_45/1 ,c_46/2,c_47/3,c_48/0,c_49/1,c_50/1,c_51/0,c_52/2,c_53/0,c_54/2,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) -->_1 add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)):2 -->_2 #abs#(#0()) -> c_1():23 2:S:add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) -->_1 add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)):3 -->_1 add'#1#(nil(),@b2,@r) -> c_14():116 3:S:add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) -->_1 add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)):4 -->_1 add'#2#(nil(),@r,@x,@xs) -> c_16():117 4:S:add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) -->_2 sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)):141 -->_1 add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')):5 5:S:add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) -->_1 add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)):2 6:S:bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) -->_1 bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)):7 -->_2 #abs#(#pos(@x)) -> c_3():25 7:S:bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) -->_1 bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())):118 -->_1 bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))):8 8:S:bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) -->_1 +#(@x,@y) -> c_9(#add#(@x,@y)):114 -->_4 *#(@x,@y) -> c_8(#mult#(@x,@y)):113 -->_2 *#(@x,@y) -> c_8(#mult#(@x,@y)):113 -->_3 bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)):7 9:S:compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) -->_1 compare#1#(nil(),@b2) -> c_24(#abs#(#0())):119 -->_1 compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)):10 10:S:compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) -->_1 compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())):120 -->_1 compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)):11 11:S:compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) -->_1 compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())):121 -->_2 compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)):9 12:S:leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) -->_1 #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)):86 -->_2 compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)):9 13:S:mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) -->_1 mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) ,#abs#(#0()) ,mult#(@xs,@b2)):14 -->_1 mult#1#(nil(),@b2) -> c_42():133 14:S:mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) ,#abs#(#0()) ,mult#(@xs,@b2)) -->_1 mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs) ,#equal#(@x,#pos(#s(#0())))):15 -->_2 #abs#(#0()) -> c_1():23 -->_3 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):13 15:S:mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) -->_2 #equal#(@x,@y) -> c_5(#eq#(@x,@y)):84 -->_1 mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)):16 -->_1 mult#3#(#false(),@b2,@zs) -> c_44():134 16:S:mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) -->_1 add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())):1 17:S:mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) -->_2 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):13 -->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):13 18:S:sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) -->_2 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):19 -->_1 sub#1#(tuple#2(@b,@_@1)) -> c_48():135 -->_3 #abs#(#0()) -> c_1():23 19:S:sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) -->_1 sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)):20 -->_1 sub'#1#(nil(),@b2,@r) -> c_51():136 20:S:sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) -->_1 sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)):21 -->_1 sub'#2#(nil(),@r,@x,@xs) -> c_53():137 21:S:sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) -->_2 diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)):128 -->_1 sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')):22 22:S:sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) -->_1 sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs) ,#equal#(@s,#pos(#s(#0())))):138 -->_2 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):19 23:W:#abs#(#0()) -> c_1() 24:W:#abs#(#neg(@x)) -> c_2() 25:W:#abs#(#pos(@x)) -> c_3() 26:W:#abs#(#s(@x)) -> c_4() 27:W:#add#(#0(),@y) -> c_66() 28:W:#add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) -->_1 #pred#(#pos(#s(#s(@x)))) -> c_141():105 -->_1 #pred#(#pos(#s(#0()))) -> c_140():104 -->_1 #pred#(#neg(#s(@x))) -> c_139():103 -->_1 #pred#(#0()) -> c_138():102 29:W:#add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) -->_2 #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):31 -->_2 #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)):30 -->_1 #pred#(#pos(#s(#s(@x)))) -> c_141():105 -->_1 #pred#(#pos(#s(#0()))) -> c_140():104 -->_1 #pred#(#neg(#s(@x))) -> c_139():103 -->_1 #pred#(#0()) -> c_138():102 30:W:#add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) -->_1 #succ#(#pos(#s(@x))) -> c_148():112 -->_1 #succ#(#neg(#s(#s(@x)))) -> c_147():111 -->_1 #succ#(#neg(#s(#0()))) -> c_146():110 -->_1 #succ#(#0()) -> c_145():109 31:W:#add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) -->_1 #succ#(#pos(#s(@x))) -> c_148():112 -->_1 #succ#(#neg(#s(#s(@x)))) -> c_147():111 -->_1 #succ#(#neg(#s(#0()))) -> c_146():110 -->_1 #succ#(#0()) -> c_145():109 -->_2 #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):31 -->_2 #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)):30 32:W:#and#(#false(),#false()) -> c_71() 33:W:#and#(#false(),#true()) -> c_72() 34:W:#and#(#true(),#false()) -> c_73() 35:W:#and#(#true(),#true()) -> c_74() 36:W:#ckgt#(#EQ()) -> c_75() 37:W:#ckgt#(#GT()) -> c_76() 38:W:#ckgt#(#LT()) -> c_77() 39:W:#cklt#(#EQ()) -> c_78() 40:W:#cklt#(#GT()) -> c_79() 41:W:#cklt#(#LT()) -> c_80() 42:W:#compare#(#0(),#0()) -> c_81() 43:W:#compare#(#0(),#neg(@y)) -> c_82() 44:W:#compare#(#0(),#pos(@y)) -> c_83() 45:W:#compare#(#0(),#s(@y)) -> c_84() 46:W:#compare#(#neg(@x),#0()) -> c_85() 47:W:#compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) -->_1 #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)):53 -->_1 #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)):51 -->_1 #compare#(#s(@x),#0()) -> c_91():52 -->_1 #compare#(#pos(@x),#neg(@y)) -> c_89():50 -->_1 #compare#(#pos(@x),#0()) -> c_88():49 -->_1 #compare#(#neg(@x),#pos(@y)) -> c_87():48 -->_1 #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)):47 -->_1 #compare#(#neg(@x),#0()) -> c_85():46 -->_1 #compare#(#0(),#s(@y)) -> c_84():45 -->_1 #compare#(#0(),#pos(@y)) -> c_83():44 -->_1 #compare#(#0(),#neg(@y)) -> c_82():43 -->_1 #compare#(#0(),#0()) -> c_81():42 48:W:#compare#(#neg(@x),#pos(@y)) -> c_87() 49:W:#compare#(#pos(@x),#0()) -> c_88() 50:W:#compare#(#pos(@x),#neg(@y)) -> c_89() 51:W:#compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) -->_1 #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)):53 -->_1 #compare#(#s(@x),#0()) -> c_91():52 -->_1 #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)):51 -->_1 #compare#(#pos(@x),#neg(@y)) -> c_89():50 -->_1 #compare#(#pos(@x),#0()) -> c_88():49 -->_1 #compare#(#neg(@x),#pos(@y)) -> c_87():48 -->_1 #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)):47 -->_1 #compare#(#neg(@x),#0()) -> c_85():46 -->_1 #compare#(#0(),#s(@y)) -> c_84():45 -->_1 #compare#(#0(),#pos(@y)) -> c_83():44 -->_1 #compare#(#0(),#neg(@y)) -> c_82():43 -->_1 #compare#(#0(),#0()) -> c_81():42 52:W:#compare#(#s(@x),#0()) -> c_91() 53:W:#compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) -->_1 #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)):53 -->_1 #compare#(#s(@x),#0()) -> c_91():52 -->_1 #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)):51 -->_1 #compare#(#pos(@x),#neg(@y)) -> c_89():50 -->_1 #compare#(#pos(@x),#0()) -> c_88():49 -->_1 #compare#(#neg(@x),#pos(@y)) -> c_87():48 -->_1 #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)):47 -->_1 #compare#(#neg(@x),#0()) -> c_85():46 -->_1 #compare#(#0(),#s(@y)) -> c_84():45 -->_1 #compare#(#0(),#pos(@y)) -> c_83():44 -->_1 #compare#(#0(),#neg(@y)) -> c_82():43 -->_1 #compare#(#0(),#0()) -> c_81():42 54:W:#div#(#0(),#0()) -> c_93() 55:W:#div#(#0(),#neg(@y)) -> c_94() 56:W:#div#(#0(),#pos(@y)) -> c_95() 57:W:#div#(#neg(@x),#0()) -> c_96() 58:W:#div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) -->_1 #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)):97 -->_1 #natdiv#(#0(),#0()) -> c_132():96 59:W:#div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) -->_1 #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)):97 -->_1 #natdiv#(#0(),#0()) -> c_132():96 60:W:#div#(#pos(@x),#0()) -> c_99() 61:W:#div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) -->_1 #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)):97 -->_1 #natdiv#(#0(),#0()) -> c_132():96 62:W:#div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) -->_1 #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)):97 -->_1 #natdiv#(#0(),#0()) -> c_132():96 63:W:#eq#(#0(),#0()) -> c_102() 64:W:#eq#(#0(),#neg(@y)) -> c_103() 65:W:#eq#(#0(),#pos(@y)) -> c_104() 66:W:#eq#(#0(),#s(@y)) -> c_105() 67:W:#eq#(#neg(@x),#0()) -> c_106() 68:W:#eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) -->_1 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):83 -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):75 -->_1 #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)):74 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)):72 -->_1 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121():82 -->_1 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120():81 -->_1 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119():80 -->_1 #eq#(nil(),nil()) -> c_118():79 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_117():78 -->_1 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116():77 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_115():76 -->_1 #eq#(#s(@x),#0()) -> c_112():73 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_110():71 -->_1 #eq#(#pos(@x),#0()) -> c_109():70 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_108():69 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)):68 -->_1 #eq#(#neg(@x),#0()) -> c_106():67 -->_1 #eq#(#0(),#s(@y)) -> c_105():66 -->_1 #eq#(#0(),#pos(@y)) -> c_104():65 -->_1 #eq#(#0(),#neg(@y)) -> c_103():64 -->_1 #eq#(#0(),#0()) -> c_102():63 69:W:#eq#(#neg(@x),#pos(@y)) -> c_108() 70:W:#eq#(#pos(@x),#0()) -> c_109() 71:W:#eq#(#pos(@x),#neg(@y)) -> c_110() 72:W:#eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) -->_1 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):83 -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):75 -->_1 #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)):74 -->_1 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121():82 -->_1 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120():81 -->_1 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119():80 -->_1 #eq#(nil(),nil()) -> c_118():79 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_117():78 -->_1 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116():77 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_115():76 -->_1 #eq#(#s(@x),#0()) -> c_112():73 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)):72 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_110():71 -->_1 #eq#(#pos(@x),#0()) -> c_109():70 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_108():69 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)):68 -->_1 #eq#(#neg(@x),#0()) -> c_106():67 -->_1 #eq#(#0(),#s(@y)) -> c_105():66 -->_1 #eq#(#0(),#pos(@y)) -> c_104():65 -->_1 #eq#(#0(),#neg(@y)) -> c_103():64 -->_1 #eq#(#0(),#0()) -> c_102():63 73:W:#eq#(#s(@x),#0()) -> c_112() 74:W:#eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) -->_1 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):83 -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):75 -->_1 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121():82 -->_1 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120():81 -->_1 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119():80 -->_1 #eq#(nil(),nil()) -> c_118():79 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_117():78 -->_1 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116():77 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_115():76 -->_1 #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)):74 -->_1 #eq#(#s(@x),#0()) -> c_112():73 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)):72 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_110():71 -->_1 #eq#(#pos(@x),#0()) -> c_109():70 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_108():69 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)):68 -->_1 #eq#(#neg(@x),#0()) -> c_106():67 -->_1 #eq#(#0(),#s(@y)) -> c_105():66 -->_1 #eq#(#0(),#pos(@y)) -> c_104():65 -->_1 #eq#(#0(),#neg(@y)) -> c_103():64 -->_1 #eq#(#0(),#0()) -> c_102():63 75:W:#eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) -->_3 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):83 -->_2 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):83 -->_3 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121():82 -->_2 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121():82 -->_3 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120():81 -->_2 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120():81 -->_3 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119():80 -->_2 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119():80 -->_3 #eq#(nil(),nil()) -> c_118():79 -->_2 #eq#(nil(),nil()) -> c_118():79 -->_3 #eq#(nil(),::(@y_1,@y_2)) -> c_117():78 -->_2 #eq#(nil(),::(@y_1,@y_2)) -> c_117():78 -->_3 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116():77 -->_2 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116():77 -->_3 #eq#(::(@x_1,@x_2),nil()) -> c_115():76 -->_2 #eq#(::(@x_1,@x_2),nil()) -> c_115():76 -->_3 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):75 -->_2 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):75 -->_3 #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)):74 -->_2 #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)):74 -->_3 #eq#(#s(@x),#0()) -> c_112():73 -->_2 #eq#(#s(@x),#0()) -> c_112():73 -->_3 #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)):72 -->_2 #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)):72 -->_3 #eq#(#pos(@x),#neg(@y)) -> c_110():71 -->_2 #eq#(#pos(@x),#neg(@y)) -> c_110():71 -->_3 #eq#(#pos(@x),#0()) -> c_109():70 -->_2 #eq#(#pos(@x),#0()) -> c_109():70 -->_3 #eq#(#neg(@x),#pos(@y)) -> c_108():69 -->_2 #eq#(#neg(@x),#pos(@y)) -> c_108():69 -->_3 #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)):68 -->_2 #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)):68 -->_3 #eq#(#neg(@x),#0()) -> c_106():67 -->_2 #eq#(#neg(@x),#0()) -> c_106():67 -->_3 #eq#(#0(),#s(@y)) -> c_105():66 -->_2 #eq#(#0(),#s(@y)) -> c_105():66 -->_3 #eq#(#0(),#pos(@y)) -> c_104():65 -->_2 #eq#(#0(),#pos(@y)) -> c_104():65 -->_3 #eq#(#0(),#neg(@y)) -> c_103():64 -->_2 #eq#(#0(),#neg(@y)) -> c_103():64 -->_3 #eq#(#0(),#0()) -> c_102():63 -->_2 #eq#(#0(),#0()) -> c_102():63 -->_1 #and#(#true(),#true()) -> c_74():35 -->_1 #and#(#true(),#false()) -> c_73():34 -->_1 #and#(#false(),#true()) -> c_72():33 -->_1 #and#(#false(),#false()) -> c_71():32 76:W:#eq#(::(@x_1,@x_2),nil()) -> c_115() 77:W:#eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() 78:W:#eq#(nil(),::(@y_1,@y_2)) -> c_117() 79:W:#eq#(nil(),nil()) -> c_118() 80:W:#eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() 81:W:#eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() 82:W:#eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() 83:W:#eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) -->_3 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):83 -->_2 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):83 -->_3 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121():82 -->_2 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121():82 -->_3 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120():81 -->_2 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120():81 -->_3 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119():80 -->_2 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119():80 -->_3 #eq#(nil(),nil()) -> c_118():79 -->_2 #eq#(nil(),nil()) -> c_118():79 -->_3 #eq#(nil(),::(@y_1,@y_2)) -> c_117():78 -->_2 #eq#(nil(),::(@y_1,@y_2)) -> c_117():78 -->_3 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116():77 -->_2 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116():77 -->_3 #eq#(::(@x_1,@x_2),nil()) -> c_115():76 -->_2 #eq#(::(@x_1,@x_2),nil()) -> c_115():76 -->_3 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):75 -->_2 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):75 -->_3 #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)):74 -->_2 #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)):74 -->_3 #eq#(#s(@x),#0()) -> c_112():73 -->_2 #eq#(#s(@x),#0()) -> c_112():73 -->_3 #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)):72 -->_2 #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)):72 -->_3 #eq#(#pos(@x),#neg(@y)) -> c_110():71 -->_2 #eq#(#pos(@x),#neg(@y)) -> c_110():71 -->_3 #eq#(#pos(@x),#0()) -> c_109():70 -->_2 #eq#(#pos(@x),#0()) -> c_109():70 -->_3 #eq#(#neg(@x),#pos(@y)) -> c_108():69 -->_2 #eq#(#neg(@x),#pos(@y)) -> c_108():69 -->_3 #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)):68 -->_2 #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)):68 -->_3 #eq#(#neg(@x),#0()) -> c_106():67 -->_2 #eq#(#neg(@x),#0()) -> c_106():67 -->_3 #eq#(#0(),#s(@y)) -> c_105():66 -->_2 #eq#(#0(),#s(@y)) -> c_105():66 -->_3 #eq#(#0(),#pos(@y)) -> c_104():65 -->_2 #eq#(#0(),#pos(@y)) -> c_104():65 -->_3 #eq#(#0(),#neg(@y)) -> c_103():64 -->_2 #eq#(#0(),#neg(@y)) -> c_103():64 -->_3 #eq#(#0(),#0()) -> c_102():63 -->_2 #eq#(#0(),#0()) -> c_102():63 -->_1 #and#(#true(),#true()) -> c_74():35 -->_1 #and#(#true(),#false()) -> c_73():34 -->_1 #and#(#false(),#true()) -> c_72():33 -->_1 #and#(#false(),#false()) -> c_71():32 84:W:#equal#(@x,@y) -> c_5(#eq#(@x,@y)) -->_1 #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):83 -->_1 #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121():82 -->_1 #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120():81 -->_1 #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119():80 -->_1 #eq#(nil(),nil()) -> c_118():79 -->_1 #eq#(nil(),::(@y_1,@y_2)) -> c_117():78 -->_1 #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116():77 -->_1 #eq#(::(@x_1,@x_2),nil()) -> c_115():76 -->_1 #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)):75 -->_1 #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)):74 -->_1 #eq#(#s(@x),#0()) -> c_112():73 -->_1 #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)):72 -->_1 #eq#(#pos(@x),#neg(@y)) -> c_110():71 -->_1 #eq#(#pos(@x),#0()) -> c_109():70 -->_1 #eq#(#neg(@x),#pos(@y)) -> c_108():69 -->_1 #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)):68 -->_1 #eq#(#neg(@x),#0()) -> c_106():67 -->_1 #eq#(#0(),#s(@y)) -> c_105():66 -->_1 #eq#(#0(),#pos(@y)) -> c_104():65 -->_1 #eq#(#0(),#neg(@y)) -> c_103():64 -->_1 #eq#(#0(),#0()) -> c_102():63 85:W:#greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) -->_2 #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)):53 -->_2 #compare#(#s(@x),#0()) -> c_91():52 -->_2 #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)):51 -->_2 #compare#(#pos(@x),#neg(@y)) -> c_89():50 -->_2 #compare#(#pos(@x),#0()) -> c_88():49 -->_2 #compare#(#neg(@x),#pos(@y)) -> c_87():48 -->_2 #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)):47 -->_2 #compare#(#neg(@x),#0()) -> c_85():46 -->_2 #compare#(#0(),#s(@y)) -> c_84():45 -->_2 #compare#(#0(),#pos(@y)) -> c_83():44 -->_2 #compare#(#0(),#neg(@y)) -> c_82():43 -->_2 #compare#(#0(),#0()) -> c_81():42 -->_1 #ckgt#(#LT()) -> c_77():38 -->_1 #ckgt#(#GT()) -> c_76():37 -->_1 #ckgt#(#EQ()) -> c_75():36 86:W:#less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) -->_2 #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)):53 -->_2 #compare#(#s(@x),#0()) -> c_91():52 -->_2 #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)):51 -->_2 #compare#(#pos(@x),#neg(@y)) -> c_89():50 -->_2 #compare#(#pos(@x),#0()) -> c_88():49 -->_2 #compare#(#neg(@x),#pos(@y)) -> c_87():48 -->_2 #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)):47 -->_2 #compare#(#neg(@x),#0()) -> c_85():46 -->_2 #compare#(#0(),#s(@y)) -> c_84():45 -->_2 #compare#(#0(),#pos(@y)) -> c_83():44 -->_2 #compare#(#0(),#neg(@y)) -> c_82():43 -->_2 #compare#(#0(),#0()) -> c_81():42 -->_1 #cklt#(#LT()) -> c_80():41 -->_1 #cklt#(#GT()) -> c_79():40 -->_1 #cklt#(#EQ()) -> c_78():39 87:W:#mult#(#0(),#0()) -> c_123() 88:W:#mult#(#0(),#neg(@y)) -> c_124() 89:W:#mult#(#0(),#pos(@y)) -> c_125() 90:W:#mult#(#neg(@x),#0()) -> c_126() 91:W:#mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) -->_1 #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):99 -->_1 #natmult#(#0(),@y) -> c_134():98 92:W:#mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) -->_1 #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):99 -->_1 #natmult#(#0(),@y) -> c_134():98 93:W:#mult#(#pos(@x),#0()) -> c_129() 94:W:#mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) -->_1 #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):99 -->_1 #natmult#(#0(),@y) -> c_134():98 95:W:#mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) -->_1 #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):99 -->_1 #natmult#(#0(),@y) -> c_134():98 96:W:#natdiv#(#0(),#0()) -> c_132() 97:W:#natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) -->_2 #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)):101 -->_2 #natsub#(@x,#0()) -> c_136():100 -->_1 #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)):97 98:W:#natmult#(#0(),@y) -> c_134() 99:W:#natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) -->_2 #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)):99 -->_2 #natmult#(#0(),@y) -> c_134():98 -->_1 #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):31 -->_1 #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)):30 100:W:#natsub#(@x,#0()) -> c_136() 101:W:#natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) -->_1 #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)):101 -->_1 #natsub#(@x,#0()) -> c_136():100 102:W:#pred#(#0()) -> c_138() 103:W:#pred#(#neg(#s(@x))) -> c_139() 104:W:#pred#(#pos(#s(#0()))) -> c_140() 105:W:#pred#(#pos(#s(#s(@x)))) -> c_141() 106:W:#sub#(@x,#0()) -> c_142() 107:W:#sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) -->_1 #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):31 -->_1 #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)):30 -->_1 #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):29 -->_1 #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)):28 -->_1 #add#(#0(),@y) -> c_66():27 108:W:#sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) -->_1 #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):31 -->_1 #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)):30 -->_1 #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):29 -->_1 #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)):28 -->_1 #add#(#0(),@y) -> c_66():27 109:W:#succ#(#0()) -> c_145() 110:W:#succ#(#neg(#s(#0()))) -> c_146() 111:W:#succ#(#neg(#s(#s(@x)))) -> c_147() 112:W:#succ#(#pos(#s(@x))) -> c_148() 113:W:*#(@x,@y) -> c_8(#mult#(@x,@y)) -->_1 #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)):95 -->_1 #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)):94 -->_1 #mult#(#pos(@x),#0()) -> c_129():93 -->_1 #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)):92 -->_1 #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)):91 -->_1 #mult#(#neg(@x),#0()) -> c_126():90 -->_1 #mult#(#0(),#pos(@y)) -> c_125():89 -->_1 #mult#(#0(),#neg(@y)) -> c_124():88 -->_1 #mult#(#0(),#0()) -> c_123():87 114:W:+#(@x,@y) -> c_9(#add#(@x,@y)) -->_1 #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):31 -->_1 #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)):30 -->_1 #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)):29 -->_1 #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)):28 -->_1 #add#(#0(),@y) -> c_66():27 115:W:-#(@x,@y) -> c_10(#sub#(@x,@y)) -->_1 #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))):108 -->_1 #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))):107 -->_1 #sub#(@x,#0()) -> c_142():106 116:W:add'#1#(nil(),@b2,@r) -> c_14() 117:W:add'#2#(nil(),@r,@x,@xs) -> c_16() 118:W:bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) -->_1 #abs#(#0()) -> c_1():23 119:W:compare#1#(nil(),@b2) -> c_24(#abs#(#0())) -->_1 #abs#(#0()) -> c_1():23 120:W:compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) -->_1 #abs#(#0()) -> c_1():23 121:W:compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) -->_1 compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)):123 -->_1 compare#4#(#false(),@r,@x,@y) -> c_28():122 -->_2 #equal#(@x,@y) -> c_5(#eq#(@x,@y)):84 122:W:compare#4#(#false(),@r,@x,@y) -> c_28() 123:W:compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) -->_1 compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))):125 -->_1 compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)):124 -->_2 #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)):86 124:W:compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) -->_1 compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))):127 -->_1 compare#6#(#false()) -> c_32(#abs#(#0())):126 -->_2 #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)):85 125:W:compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) -->_1 -#(@x,@y) -> c_10(#sub#(@x,@y)):115 126:W:compare#6#(#false()) -> c_32(#abs#(#0())) -->_1 #abs#(#0()) -> c_1():23 127:W:compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) -->_1 #abs#(#pos(@x)) -> c_3():25 128:W:diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) -->_1 mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)):132 -->_4 diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))):130 -->_4 diff#1#(#false()) -> c_35(#abs#(#0())):129 -->_7 -#(@x,@y) -> c_10(#sub#(@x,@y)):115 -->_6 -#(@x,@y) -> c_10(#sub#(@x,@y)):115 -->_3 +#(@x,@y) -> c_9(#add#(@x,@y)):114 -->_2 +#(@x,@y) -> c_9(#add#(@x,@y)):114 -->_5 #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)):86 129:W:diff#1#(#false()) -> c_35(#abs#(#0())) -->_1 #abs#(#0()) -> c_1():23 130:W:diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) -->_1 #abs#(#pos(@x)) -> c_3():25 131:W:div#(@x,@y) -> c_37(#div#(@x,@y)) -->_1 #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)):62 -->_1 #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)):61 -->_1 #div#(#pos(@x),#0()) -> c_99():60 -->_1 #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)):59 -->_1 #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)):58 -->_1 #div#(#neg(@x),#0()) -> c_96():57 -->_1 #div#(#0(),#pos(@y)) -> c_95():56 -->_1 #div#(#0(),#neg(@y)) -> c_94():55 -->_1 #div#(#0(),#0()) -> c_93():54 132:W:mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) -->_3 div#(@x,@y) -> c_37(#div#(@x,@y)):131 -->_1 -#(@x,@y) -> c_10(#sub#(@x,@y)):115 -->_2 *#(@x,@y) -> c_8(#mult#(@x,@y)):113 133:W:mult#1#(nil(),@b2) -> c_42() 134:W:mult#3#(#false(),@b2,@zs) -> c_44() 135:W:sub#1#(tuple#2(@b,@_@1)) -> c_48() 136:W:sub'#1#(nil(),@b2,@r) -> c_51() 137:W:sub'#2#(nil(),@r,@x,@xs) -> c_53() 138:W:sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs) ,#equal#(@s,#pos(#s(#0())))) -->_1 sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())):140 -->_1 sub'#5#(#false(),@z,@zs) -> c_56():139 -->_2 #equal#(@x,@y) -> c_5(#eq#(@x,@y)):84 139:W:sub'#5#(#false(),@z,@zs) -> c_56() 140:W:sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) -->_1 #abs#(#0()) -> c_1():23 141:W:sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) -->_1 sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())):142 -->_3 +#(@x,@y) -> c_9(#add#(@x,@y)):114 -->_2 +#(@x,@y) -> c_9(#add#(@x,@y)):114 142:W:sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) -->_1 sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())):144 -->_1 sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))):143 -->_2 #equal#(@x,@y) -> c_5(#eq#(@x,@y)):84 143:W:sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) -->_1 sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())):146 -->_1 sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))):145 -->_2 #equal#(@x,@y) -> c_5(#eq#(@x,@y)):84 144:W:sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) -->_2 #abs#(#0()) -> c_1():23 -->_1 #abs#(#0()) -> c_1():23 145:W:sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) -->_1 sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))):148 -->_1 sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))):147 -->_2 #equal#(@x,@y) -> c_5(#eq#(@x,@y)):84 146:W:sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) -->_1 #abs#(#pos(@x)) -> c_3():25 -->_2 #abs#(#0()) -> c_1():23 147:W:sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) -->_2 #abs#(#pos(@x)) -> c_3():25 -->_1 #abs#(#pos(@x)) -> c_3():25 148:W:sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) -->_2 #abs#(#pos(@x)) -> c_3():25 -->_1 #abs#(#0()) -> c_1():23 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 26: #abs#(#s(@x)) -> c_4() 24: #abs#(#neg(@x)) -> c_2() 135: sub#1#(tuple#2(@b,@_@1)) -> c_48() 136: sub'#1#(nil(),@b2,@r) -> c_51() 137: sub'#2#(nil(),@r,@x,@xs) -> c_53() 138: sub'#4#(tuple#2(@zs,@s),@z) -> c_55(sub'#5#(#equal(@s,#pos(#s(#0()))),@z,@zs) ,#equal#(@s,#pos(#s(#0())))) 139: sub'#5#(#false(),@z,@zs) -> c_56() 140: sub'#5#(#true(),@z,@zs) -> c_57(#abs#(#0())) 128: diff#(@x,@y,@r) -> c_34(mod#(+(+(@x,@y),@r),#pos(#s(#s(#0())))) ,+#(+(@x,@y),@r) ,+#(@x,@y) ,diff#1#(#less(-(-(@x,@y),@r),#0())) ,#less#(-(-(@x,@y),@r),#0()) ,-#(-(@x,@y),@r) ,-#(@x,@y)) 129: diff#1#(#false()) -> c_35(#abs#(#0())) 130: diff#1#(#true()) -> c_36(#abs#(#pos(#s(#0())))) 132: mod#(@x,@y) -> c_39(-#(@x,*(@x,div(@x,@y))),*#(@x,div(@x,@y)),div#(@x,@y)) 131: div#(@x,@y) -> c_37(#div#(@x,@y)) 54: #div#(#0(),#0()) -> c_93() 55: #div#(#0(),#neg(@y)) -> c_94() 56: #div#(#0(),#pos(@y)) -> c_95() 57: #div#(#neg(@x),#0()) -> c_96() 58: #div#(#neg(@x),#neg(@y)) -> c_97(#natdiv#(@x,@y)) 59: #div#(#neg(@x),#pos(@y)) -> c_98(#natdiv#(@x,@y)) 60: #div#(#pos(@x),#0()) -> c_99() 61: #div#(#pos(@x),#neg(@y)) -> c_100(#natdiv#(@x,@y)) 62: #div#(#pos(@x),#pos(@y)) -> c_101(#natdiv#(@x,@y)) 96: #natdiv#(#0(),#0()) -> c_132() 97: #natdiv#(#s(@x),#s(@y)) -> c_133(#natdiv#(#natsub(@x,@y),#s(@y)),#natsub#(@x,@y)) 101: #natsub#(#s(@x),#s(@y)) -> c_137(#natsub#(@x,@y)) 100: #natsub#(@x,#0()) -> c_136() 133: mult#1#(nil(),@b2) -> c_42() 134: mult#3#(#false(),@b2,@zs) -> c_44() 121: compare#3#(@r,@x,@y) -> c_27(compare#4#(#equal(@r,#0()),@r,@x,@y),#equal#(@r,#0())) 122: compare#4#(#false(),@r,@x,@y) -> c_28() 123: compare#4#(#true(),@r,@x,@y) -> c_29(compare#5#(#less(@x,@y),@x,@y),#less#(@x,@y)) 86: #less#(@x,@y) -> c_7(#cklt#(#compare(@x,@y)),#compare#(@x,@y)) 39: #cklt#(#EQ()) -> c_78() 40: #cklt#(#GT()) -> c_79() 41: #cklt#(#LT()) -> c_80() 124: compare#5#(#false(),@x,@y) -> c_30(compare#6#(#greater(@x,@y)),#greater#(@x,@y)) 85: #greater#(@x,@y) -> c_6(#ckgt#(#compare(@x,@y)),#compare#(@x,@y)) 36: #ckgt#(#EQ()) -> c_75() 37: #ckgt#(#GT()) -> c_76() 38: #ckgt#(#LT()) -> c_77() 53: #compare#(#s(@x),#s(@y)) -> c_92(#compare#(@x,@y)) 51: #compare#(#pos(@x),#pos(@y)) -> c_90(#compare#(@x,@y)) 47: #compare#(#neg(@x),#neg(@y)) -> c_86(#compare#(@y,@x)) 42: #compare#(#0(),#0()) -> c_81() 43: #compare#(#0(),#neg(@y)) -> c_82() 44: #compare#(#0(),#pos(@y)) -> c_83() 45: #compare#(#0(),#s(@y)) -> c_84() 46: #compare#(#neg(@x),#0()) -> c_85() 48: #compare#(#neg(@x),#pos(@y)) -> c_87() 49: #compare#(#pos(@x),#0()) -> c_88() 50: #compare#(#pos(@x),#neg(@y)) -> c_89() 52: #compare#(#s(@x),#0()) -> c_91() 126: compare#6#(#false()) -> c_32(#abs#(#0())) 127: compare#6#(#true()) -> c_33(#abs#(#pos(#s(#0())))) 125: compare#5#(#true(),@x,@y) -> c_31(-#(#0(),#pos(#s(#0())))) 115: -#(@x,@y) -> c_10(#sub#(@x,@y)) 106: #sub#(@x,#0()) -> c_142() 107: #sub#(@x,#neg(@y)) -> c_143(#add#(@x,#pos(@y))) 108: #sub#(@x,#pos(@y)) -> c_144(#add#(@x,#neg(@y))) 120: compare#2#(nil(),@x,@xs) -> c_26(#abs#(#0())) 119: compare#1#(nil(),@b2) -> c_24(#abs#(#0())) 113: *#(@x,@y) -> c_8(#mult#(@x,@y)) 87: #mult#(#0(),#0()) -> c_123() 88: #mult#(#0(),#neg(@y)) -> c_124() 89: #mult#(#0(),#pos(@y)) -> c_125() 90: #mult#(#neg(@x),#0()) -> c_126() 91: #mult#(#neg(@x),#neg(@y)) -> c_127(#natmult#(@x,@y)) 92: #mult#(#neg(@x),#pos(@y)) -> c_128(#natmult#(@x,@y)) 93: #mult#(#pos(@x),#0()) -> c_129() 94: #mult#(#pos(@x),#neg(@y)) -> c_130(#natmult#(@x,@y)) 95: #mult#(#pos(@x),#pos(@y)) -> c_131(#natmult#(@x,@y)) 99: #natmult#(#s(@x),@y) -> c_135(#add#(#pos(@y),#natmult(@x,@y)),#natmult#(@x,@y)) 98: #natmult#(#0(),@y) -> c_134() 118: bitToInt'#1#(nil(),@n) -> c_21(#abs#(#0())) 116: add'#1#(nil(),@b2,@r) -> c_14() 117: add'#2#(nil(),@r,@x,@xs) -> c_16() 141: sum#(@x,@y,@r) -> c_58(sum#1#(+(+(@x,@y),@r)),+#(+(@x,@y),@r),+#(@x,@y)) 114: +#(@x,@y) -> c_9(#add#(@x,@y)) 27: #add#(#0(),@y) -> c_66() 28: #add#(#neg(#s(#0())),@y) -> c_67(#pred#(@y)) 29: #add#(#neg(#s(#s(@x))),@y) -> c_68(#pred#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 102: #pred#(#0()) -> c_138() 103: #pred#(#neg(#s(@x))) -> c_139() 104: #pred#(#pos(#s(#0()))) -> c_140() 105: #pred#(#pos(#s(#s(@x)))) -> c_141() 31: #add#(#pos(#s(#s(@x))),@y) -> c_70(#succ#(#add(#pos(#s(@x)),@y)),#add#(#pos(#s(@x)),@y)) 30: #add#(#pos(#s(#0())),@y) -> c_69(#succ#(@y)) 109: #succ#(#0()) -> c_145() 110: #succ#(#neg(#s(#0()))) -> c_146() 111: #succ#(#neg(#s(#s(@x)))) -> c_147() 112: #succ#(#pos(#s(@x))) -> c_148() 142: sum#1#(@s) -> c_59(sum#2#(#equal(@s,#0()),@s),#equal#(@s,#0())) 143: sum#2#(#false(),@s) -> c_60(sum#3#(#equal(@s,#pos(#s(#0()))),@s),#equal#(@s,#pos(#s(#0())))) 145: sum#3#(#false(),@s) -> c_62(sum#4#(#equal(@s,#pos(#s(#s(#0()))))),#equal#(@s,#pos(#s(#s(#0()))))) 84: #equal#(@x,@y) -> c_5(#eq#(@x,@y)) 83: #eq#(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_122(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 75: #eq#(::(@x_1,@x_2),::(@y_1,@y_2)) -> c_114(#and#(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) ,#eq#(@x_1,@y_1) ,#eq#(@x_2,@y_2)) 74: #eq#(#s(@x),#s(@y)) -> c_113(#eq#(@x,@y)) 72: #eq#(#pos(@x),#pos(@y)) -> c_111(#eq#(@x,@y)) 68: #eq#(#neg(@x),#neg(@y)) -> c_107(#eq#(@x,@y)) 32: #and#(#false(),#false()) -> c_71() 33: #and#(#false(),#true()) -> c_72() 34: #and#(#true(),#false()) -> c_73() 35: #and#(#true(),#true()) -> c_74() 63: #eq#(#0(),#0()) -> c_102() 64: #eq#(#0(),#neg(@y)) -> c_103() 65: #eq#(#0(),#pos(@y)) -> c_104() 66: #eq#(#0(),#s(@y)) -> c_105() 67: #eq#(#neg(@x),#0()) -> c_106() 69: #eq#(#neg(@x),#pos(@y)) -> c_108() 70: #eq#(#pos(@x),#0()) -> c_109() 71: #eq#(#pos(@x),#neg(@y)) -> c_110() 73: #eq#(#s(@x),#0()) -> c_112() 76: #eq#(::(@x_1,@x_2),nil()) -> c_115() 77: #eq#(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> c_116() 78: #eq#(nil(),::(@y_1,@y_2)) -> c_117() 79: #eq#(nil(),nil()) -> c_118() 80: #eq#(nil(),tuple#2(@y_1,@y_2)) -> c_119() 81: #eq#(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> c_120() 82: #eq#(tuple#2(@x_1,@x_2),nil()) -> c_121() 147: sum#4#(#false()) -> c_64(#abs#(#pos(#s(#0()))),#abs#(#pos(#s(#0())))) 148: sum#4#(#true()) -> c_65(#abs#(#0()),#abs#(#pos(#s(#0())))) 146: sum#3#(#true(),@s) -> c_63(#abs#(#pos(#s(#0()))),#abs#(#0())) 25: #abs#(#pos(@x)) -> c_3() 144: sum#2#(#true(),@s) -> c_61(#abs#(#0()),#abs#(#0())) 23: #abs#(#0()) -> c_1() * Step 10: SimplifyRHS. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),#abs#(#0()),mult#(@xs,@b2)) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) - Weak TRS: #abs(#0()) -> #0() #abs(#neg(@x)) -> #pos(@x) #abs(#pos(@x)) -> #pos(@x) #abs(#s(@x)) -> #pos(#s(@x)) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) bitToInt(@b) -> bitToInt'(@b,#abs(#pos(#s(#0())))) bitToInt'(@b,@n) -> bitToInt'#1(@b,@n) bitToInt'#1(::(@x,@xs),@n) -> +(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) bitToInt'#1(nil(),@n) -> #abs(#0()) compare(@b1,@b2) -> compare#1(@b1,@b2) compare#1(::(@x,@xs),@b2) -> compare#2(@b2,@x,@xs) compare#1(nil(),@b2) -> #abs(#0()) compare#2(::(@y,@ys),@x,@xs) -> compare#3(compare(@xs,@ys),@x,@y) compare#2(nil(),@x,@xs) -> #abs(#0()) compare#3(@r,@x,@y) -> compare#4(#equal(@r,#0()),@r,@x,@y) compare#4(#false(),@r,@x,@y) -> @r compare#4(#true(),@r,@x,@y) -> compare#5(#less(@x,@y),@x,@y) compare#5(#false(),@x,@y) -> compare#6(#greater(@x,@y)) compare#5(#true(),@x,@y) -> -(#0(),#pos(#s(#0()))) compare#6(#false()) -> #abs(#0()) compare#6(#true()) -> #abs(#pos(#s(#0()))) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) leq(@b1,@b2) -> #less(compare(@b1,@b2),#pos(#s(#0()))) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) mult3(@b1,@b2,@b3) -> mult(mult(@b1,@b2),@b2) sub(@b1,@b2) -> sub#1(sub'(@b1,@b2,#abs(#0()))) sub#1(tuple#2(@b,@_@1)) -> @b sub'(@b1,@b2,@r) -> sub'#1(@b1,@b2,@r) sub'#1(::(@x,@xs),@b2,@r) -> sub'#2(@b2,@r,@x,@xs) sub'#1(nil(),@b2,@r) -> tuple#2(nil(),@r) sub'#2(::(@y,@ys),@r,@x,@xs) -> sub'#3(diff(@x,@y,@r),@xs,@ys) sub'#2(nil(),@r,@x,@xs) -> tuple#2(nil(),@r) sub'#3(tuple#2(@z,@r'),@xs,@ys) -> sub'#4(sub'(@xs,@ys,@r'),@z) sub'#4(tuple#2(@zs,@s),@z) -> tuple#2(sub'#5(#equal(@s,#pos(#s(#0()))),@z,@zs),@s) sub'#5(#false(),@z,@zs) -> ::(@z,@zs) sub'#5(#true(),@z,@zs) -> ::(#abs(#0()),@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/2,c_12/1,c_13/1,c_14/0,c_15/2 ,c_16/0,c_17/1,c_18/2,c_19/1,c_20/4,c_21/1,c_22/1,c_23/1,c_24/1,c_25/2,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/2,c_39/3,c_40/1,c_41/3,c_42/0,c_43/2,c_44/0,c_45/1 ,c_46/2,c_47/3,c_48/0,c_49/1,c_50/1,c_51/0,c_52/2,c_53/0,c_54/2,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())) -->_1 add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)):2 2:S:add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) -->_1 add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)):3 3:S:add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) -->_1 add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)):4 4:S:add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys),sum#(@x,@y,@r)) -->_1 add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')):5 5:S:add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) -->_1 add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)):2 6:S:bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))),#abs#(#pos(#s(#0())))) -->_1 bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)):7 7:S:bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) -->_1 bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))):8 8:S:bitToInt'#1#(::(@x,@xs),@n) -> c_20(+#(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) ,*#(@x,@n) ,bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ,*#(@n,#pos(#s(#s(#0()))))) -->_3 bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)):7 9:S:compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) -->_1 compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)):10 10:S:compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) -->_1 compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)):11 11:S:compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#3#(compare(@xs,@ys),@x,@y),compare#(@xs,@ys)) -->_2 compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)):9 12:S:leq#(@b1,@b2) -> c_38(#less#(compare(@b1,@b2),#pos(#s(#0()))),compare#(@b1,@b2)) -->_2 compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)):9 13:S:mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) -->_1 mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) ,#abs#(#0()) ,mult#(@xs,@b2)):14 14:S:mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) ,#abs#(#0()) ,mult#(@xs,@b2)) -->_1 mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs) ,#equal#(@x,#pos(#s(#0())))):15 -->_3 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):13 15:S:mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs),#equal#(@x,#pos(#s(#0())))) -->_1 mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)):16 16:S:mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) -->_1 add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())),#abs#(#0())):1 17:S:mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) -->_2 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):13 -->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):13 18:S:sub#(@b1,@b2) -> c_47(sub#1#(sub'(@b1,@b2,#abs(#0()))),sub'#(@b1,@b2,#abs(#0())),#abs#(#0())) -->_2 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):19 19:S:sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) -->_1 sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)):20 20:S:sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) -->_1 sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)):21 21:S:sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys),diff#(@x,@y,@r)) -->_1 sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')):22 22:S:sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#4#(sub'(@xs,@ys,@r'),@z),sub'#(@xs,@ys,@r')) -->_2 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):19 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) leq#(@b1,@b2) -> c_38(compare#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2)) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) * Step 11: UsableRules. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) leq#(@b1,@b2) -> c_38(compare#(@b1,@b2)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2)) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak TRS: #abs(#0()) -> #0() #abs(#neg(@x)) -> #pos(@x) #abs(#pos(@x)) -> #pos(@x) #abs(#s(@x)) -> #pos(#s(@x)) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #ckgt(#EQ()) -> #false() #ckgt(#GT()) -> #true() #ckgt(#LT()) -> #false() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #greater(@x,@y) -> #ckgt(#compare(@x,@y)) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) bitToInt(@b) -> bitToInt'(@b,#abs(#pos(#s(#0())))) bitToInt'(@b,@n) -> bitToInt'#1(@b,@n) bitToInt'#1(::(@x,@xs),@n) -> +(*(@x,@n),bitToInt'(@xs,*(@n,#pos(#s(#s(#0())))))) bitToInt'#1(nil(),@n) -> #abs(#0()) compare(@b1,@b2) -> compare#1(@b1,@b2) compare#1(::(@x,@xs),@b2) -> compare#2(@b2,@x,@xs) compare#1(nil(),@b2) -> #abs(#0()) compare#2(::(@y,@ys),@x,@xs) -> compare#3(compare(@xs,@ys),@x,@y) compare#2(nil(),@x,@xs) -> #abs(#0()) compare#3(@r,@x,@y) -> compare#4(#equal(@r,#0()),@r,@x,@y) compare#4(#false(),@r,@x,@y) -> @r compare#4(#true(),@r,@x,@y) -> compare#5(#less(@x,@y),@x,@y) compare#5(#false(),@x,@y) -> compare#6(#greater(@x,@y)) compare#5(#true(),@x,@y) -> -(#0(),#pos(#s(#0()))) compare#6(#false()) -> #abs(#0()) compare#6(#true()) -> #abs(#pos(#s(#0()))) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) leq(@b1,@b2) -> #less(compare(@b1,@b2),#pos(#s(#0()))) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) mult3(@b1,@b2,@b3) -> mult(mult(@b1,@b2),@b2) sub(@b1,@b2) -> sub#1(sub'(@b1,@b2,#abs(#0()))) sub#1(tuple#2(@b,@_@1)) -> @b sub'(@b1,@b2,@r) -> sub'#1(@b1,@b2,@r) sub'#1(::(@x,@xs),@b2,@r) -> sub'#2(@b2,@r,@x,@xs) sub'#1(nil(),@b2,@r) -> tuple#2(nil(),@r) sub'#2(::(@y,@ys),@r,@x,@xs) -> sub'#3(diff(@x,@y,@r),@xs,@ys) sub'#2(nil(),@r,@x,@xs) -> tuple#2(nil(),@r) sub'#3(tuple#2(@z,@r'),@xs,@ys) -> sub'#4(sub'(@xs,@ys,@r'),@z) sub'#4(tuple#2(@zs,@s),@z) -> tuple#2(sub'#5(#equal(@s,#pos(#s(#0()))),@z,@zs),@s) sub'#5(#false(),@z,@zs) -> ::(@z,@zs) sub'#5(#true(),@z,@zs) -> ::(#abs(#0()),@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) leq#(@b1,@b2) -> c_38(compare#(@b1,@b2)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2)) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) * Step 12: RemoveHeads. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) leq#(@b1,@b2) -> c_38(compare#(@b1,@b2)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2)) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: RemoveHeads + Details: Consider the dependency graph 1:S:add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) -->_1 add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)):2 2:S:add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) -->_1 add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)):3 3:S:add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) -->_1 add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)):4 4:S:add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) -->_1 add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')):5 5:S:add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) -->_1 add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)):2 6:S:bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) -->_1 bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)):7 7:S:bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) -->_1 bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))):8 8:S:bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) -->_1 bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)):7 9:S:compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) -->_1 compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)):10 10:S:compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) -->_1 compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)):11 11:S:compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) -->_1 compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)):9 12:S:leq#(@b1,@b2) -> c_38(compare#(@b1,@b2)) -->_1 compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)):9 13:S:mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) -->_1 mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2)):14 14:S:mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2)) -->_1 mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)):15 -->_2 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):13 15:S:mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) -->_1 mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)):16 16:S:mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) -->_1 add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))):1 17:S:mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) -->_2 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):13 -->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):13 18:S:sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) -->_1 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):19 19:S:sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) -->_1 sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)):20 20:S:sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) -->_1 sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)):21 21:S:sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) -->_1 sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')):22 22:S:sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) -->_1 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):19 Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts). [(12,leq#(@b1,@b2) -> c_38(compare#(@b1,@b2)))] * Step 13: DecomposeDG. WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2)) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: DecomposeDG {onSelection = all below first cut in WDG, onUpper = Nothing, onLower = Nothing} + Details: We decompose the input problem according to the dependency graph into the upper component bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) and a lower component add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) Further, following extension rules are added to the lower component. bitToInt#(@b) -> bitToInt'#(@b,#abs(#pos(#s(#0())))) bitToInt'#(@b,@n) -> bitToInt'#1#(@b,@n) bitToInt'#1#(::(@x,@xs),@n) -> bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) compare#(@b1,@b2) -> compare#1#(@b1,@b2) compare#1#(::(@x,@xs),@b2) -> compare#2#(@b2,@x,@xs) compare#2#(::(@y,@ys),@x,@xs) -> compare#(@xs,@ys) mult#(@b1,@b2) -> mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult3#(@b1,@b2,@b3) -> mult#(@b1,@b2) mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) sub#(@b1,@b2) -> sub'#(@b1,@b2,#abs(#0())) sub'#(@b1,@b2,@r) -> sub'#1#(@b1,@b2,@r) sub'#1#(::(@x,@xs),@b2,@r) -> sub'#2#(@b2,@r,@x,@xs) sub'#2#(::(@y,@ys),@r,@x,@xs) -> sub'#3#(diff(@x,@y,@r),@xs,@ys) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> sub'#(@xs,@ys,@r') ** Step 13.a:1: SimplifyRHS. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) -->_1 bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)):2 2:S:bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) -->_1 bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))):3 3:S:bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) -->_1 bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)):2 4:S:compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) -->_1 compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)):5 5:S:compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) -->_1 compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)):6 6:S:compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) -->_1 compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)):4 7:S:mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) -->_1 mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2)):8 8:S:mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2)) -->_2 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):7 9:S:mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) -->_2 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):7 -->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):7 10:S:sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) -->_1 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):11 11:S:sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) -->_1 sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)):12 12:S:sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) -->_1 sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)):13 13:S:sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) -->_1 sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')):14 14:S:sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) -->_1 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):11 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)) ** Step 13.a:2: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/1,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_18) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_25) = {1}, uargs(c_40) = {1}, uargs(c_41) = {1}, uargs(c_46) = {1,2}, uargs(c_47) = {1}, uargs(c_49) = {1}, uargs(c_50) = {1}, uargs(c_52) = {1}, uargs(c_54) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1# ,compare#,compare#1#,compare#2#,compare#3#,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod# ,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1# ,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [0] p(#EQ) = [1] p(#GT) = [0] p(#LT) = [0] p(#abs) = [0] p(#add) = [4] x1 + [2] p(#and) = [0] p(#ckgt) = [0] p(#cklt) = [1] x1 + [0] p(#compare) = [1] x1 + [0] p(#div) = [0] p(#divByZero) = [0] p(#eq) = [1] x1 + [2] p(#equal) = [2] x1 + [0] p(#false) = [0] p(#greater) = [0] p(#less) = [0] p(#mult) = [5] p(#natdiv) = [5] x1 + [3] p(#natmult) = [0] p(#natsub) = [0] p(#neg) = [1] p(#pos) = [2] p(#pred) = [1] x1 + [0] p(#s) = [1] x1 + [2] p(#sub) = [0] p(#succ) = [1] p(#true) = [0] p(*) = [0] p(+) = [0] p(-) = [2] x1 + [4] p(::) = [1] x2 + [2] p(add) = [0] p(add') = [0] p(add'#1) = [0] p(add'#2) = [0] p(add'#3) = [0] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [1] p(div) = [0] p(leq) = [0] p(mod) = [1] x2 + [5] p(mult) = [4] p(mult#1) = [0] p(mult#2) = [5] p(mult#3) = [1] x1 + [7] p(mult3) = [1] p(nil) = [0] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [0] p(sub'#4) = [0] p(sub'#5) = [4] x3 + [0] p(sum) = [2] x3 + [0] p(sum#1) = [0] p(sum#2) = [2] x1 + [3] x2 + [6] p(sum#3) = [2] p(sum#4) = [1] x1 + [4] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#abs#) = [0] p(#add#) = [1] x1 + [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#less#) = [2] 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(add#) = [0] p(add'#) = [0] p(add'#1#) = [0] p(add'#2#) = [0] p(add'#3#) = [0] p(bitToInt#) = [2] p(bitToInt'#) = [0] p(bitToInt'#1#) = [0] p(compare#) = [1] x1 + [4] x2 + [2] p(compare#1#) = [1] x1 + [4] x2 + [0] p(compare#2#) = [4] x1 + [1] x3 + [0] p(compare#3#) = [0] p(compare#4#) = [0] p(compare#5#) = [0] p(compare#6#) = [0] p(diff#) = [0] p(diff#1#) = [0] p(div#) = [0] p(leq#) = [0] p(mod#) = [0] p(mult#) = [0] p(mult#1#) = [0] p(mult#2#) = [0] p(mult#3#) = [0] p(mult3#) = [0] p(sub#) = [0] p(sub#1#) = [0] p(sub'#) = [0] p(sub'#1#) = [0] p(sub'#2#) = [0] p(sub'#3#) = [0] p(sub'#4#) = [0] p(sub'#5#) = [2] p(sum#) = [0] p(sum#1#) = [0] p(sum#2#) = [0] p(sum#3#) = [0] p(sum#4#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [2] p(c_17) = [4] p(c_18) = [1] x1 + [0] p(c_19) = [2] x1 + [0] p(c_20) = [4] x1 + [0] p(c_21) = [0] p(c_22) = [1] x1 + [0] p(c_23) = [1] x1 + [2] p(c_24) = [1] x1 + [2] p(c_25) = [1] x1 + [6] p(c_26) = [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [0] p(c_30) = [0] p(c_31) = [0] p(c_32) = [0] p(c_33) = [0] p(c_34) = [1] x2 + [0] p(c_35) = [0] p(c_36) = [0] p(c_37) = [0] p(c_38) = [0] p(c_39) = [0] p(c_40) = [2] x1 + [0] p(c_41) = [1] x1 + [0] p(c_42) = [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [0] p(c_46) = [4] x1 + [4] x2 + [0] p(c_47) = [1] x1 + [0] p(c_48) = [0] p(c_49) = [4] x1 + [0] p(c_50) = [1] x1 + [0] p(c_51) = [1] p(c_52) = [1] x1 + [0] p(c_53) = [0] p(c_54) = [4] x1 + [0] p(c_55) = [2] p(c_56) = [0] p(c_57) = [0] p(c_58) = [0] p(c_59) = [0] p(c_60) = [0] p(c_61) = [0] p(c_62) = [0] p(c_63) = [2] p(c_64) = [0] p(c_65) = [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [2] p(c_69) = [0] p(c_70) = [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) = [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [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) = [0] p(c_90) = [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) = [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) = [0] p(c_111) = [0] p(c_112) = [0] p(c_113) = [0] p(c_114) = [0] p(c_115) = [0] p(c_116) = [0] p(c_117) = [0] p(c_118) = [0] p(c_119) = [0] p(c_120) = [0] p(c_121) = [0] p(c_122) = [0] p(c_123) = [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) = [0] p(c_132) = [0] p(c_133) = [0] p(c_134) = [0] p(c_135) = [0] p(c_136) = [0] p(c_137) = [0] p(c_138) = [0] p(c_139) = [0] p(c_140) = [0] p(c_141) = [1] p(c_142) = [0] p(c_143) = [0] p(c_144) = [0] p(c_145) = [0] p(c_146) = [0] p(c_147) = [0] p(c_148) = [0] Following rules are strictly oriented: bitToInt#(@b) = [2] > [0] = c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) compare#(@b1,@b2) = [1] @b1 + [4] @b2 + [2] > [1] @b1 + [4] @b2 + [0] = c_22(compare#1#(@b1,@b2)) Following rules are (at-least) weakly oriented: bitToInt'#(@b,@n) = [0] >= [0] = c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) = [0] >= [0] = c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#1#(::(@x,@xs),@b2) = [4] @b2 + [1] @xs + [2] >= [4] @b2 + [1] @xs + [2] = c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) = [1] @xs + [4] @ys + [8] >= [1] @xs + [4] @ys + [8] = c_25(compare#(@xs,@ys)) mult#(@b1,@b2) = [0] >= [0] = c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) = [0] >= [0] = c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) = [0] >= [0] = c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) = [0] >= [0] = c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) = [0] >= [0] = c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) = [0] >= [0] = c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) = [0] >= [0] = c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) = [0] >= [0] = c_54(sub'#(@xs,@ys,@r')) ** Step 13.a:3: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak DPs: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/1,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_18) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_25) = {1}, uargs(c_40) = {1}, uargs(c_41) = {1}, uargs(c_46) = {1,2}, uargs(c_47) = {1}, uargs(c_49) = {1}, uargs(c_50) = {1}, uargs(c_52) = {1}, uargs(c_54) = {1} Following symbols are considered usable: {#abs,#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv# ,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'# ,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div# ,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5# ,sum#,sum#1#,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [0] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [4] p(#add) = [0] p(#and) = [6] p(#ckgt) = [0] p(#cklt) = [0] p(#compare) = [7] p(#div) = [0] p(#divByZero) = [0] p(#eq) = [0] p(#equal) = [1] x2 + [0] p(#false) = [1] p(#greater) = [0] p(#less) = [0] p(#mult) = [0] p(#natdiv) = [0] p(#natmult) = [0] p(#natsub) = [0] p(#neg) = [0] p(#pos) = [1] p(#pred) = [3] p(#s) = [0] p(#sub) = [4] x2 + [0] p(#succ) = [0] p(#true) = [3] p(*) = [5] x2 + [0] p(+) = [2] x2 + [0] p(-) = [0] p(::) = [1] x1 + [1] x2 + [3] p(add) = [0] p(add') = [0] p(add'#1) = [0] p(add'#2) = [0] p(add'#3) = [0] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [4] x1 + [0] p(div) = [0] p(leq) = [0] p(mod) = [5] p(mult) = [0] p(mult#1) = [4] x1 + [0] p(mult#2) = [0] p(mult#3) = [0] p(mult3) = [0] p(nil) = [0] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [0] p(sub'#4) = [0] p(sub'#5) = [0] p(sum) = [0] p(sum#1) = [1] x1 + [0] p(sum#2) = [0] p(sum#3) = [1] x1 + [0] p(sum#4) = [5] p(tuple#2) = [1] x1 + [0] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#less#) = [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(add#) = [0] p(add'#) = [0] p(add'#1#) = [0] p(add'#2#) = [0] p(add'#3#) = [0] p(bitToInt#) = [4] x1 + [7] p(bitToInt'#) = [4] x1 + [7] p(bitToInt'#1#) = [4] x1 + [2] p(compare#) = [0] p(compare#1#) = [0] p(compare#2#) = [0] p(compare#3#) = [0] p(compare#4#) = [0] p(compare#5#) = [0] p(compare#6#) = [0] p(diff#) = [0] p(diff#1#) = [0] p(div#) = [0] p(leq#) = [0] p(mod#) = [0] p(mult#) = [0] p(mult#1#) = [0] p(mult#2#) = [0] p(mult#3#) = [0] p(mult3#) = [0] p(sub#) = [1] x1 + [0] p(sub#1#) = [0] p(sub'#) = [0] p(sub'#1#) = [0] p(sub'#2#) = [0] p(sub'#3#) = [0] p(sub'#4#) = [0] p(sub'#5#) = [0] p(sum#) = [0] p(sum#1#) = [0] p(sum#2#) = [0] p(sum#3#) = [1] x2 + [0] p(sum#4#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [1] x1 + [0] p(c_19) = [1] x1 + [0] p(c_20) = [1] x1 + [2] p(c_21) = [0] p(c_22) = [2] x1 + [0] p(c_23) = [4] x1 + [0] p(c_24) = [0] p(c_25) = [2] x1 + [0] p(c_26) = [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [0] p(c_30) = [0] p(c_31) = [0] p(c_32) = [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) = [4] x1 + [0] p(c_41) = [4] x1 + [0] p(c_42) = [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [0] p(c_46) = [1] x1 + [1] x2 + [0] p(c_47) = [1] x1 + [0] p(c_48) = [0] p(c_49) = [2] x1 + [0] p(c_50) = [4] x1 + [0] p(c_51) = [0] p(c_52) = [4] x1 + [0] p(c_53) = [0] p(c_54) = [4] x1 + [0] p(c_55) = [4] x2 + [0] p(c_56) = [0] p(c_57) = [1] x1 + [0] p(c_58) = [1] x2 + [0] p(c_59) = [1] x1 + [0] p(c_60) = [1] x2 + [0] p(c_61) = [1] x1 + [1] x2 + [0] p(c_62) = [0] p(c_63) = [4] x2 + [0] p(c_64) = [2] x2 + [0] p(c_65) = [4] x1 + [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [2] x1 + [0] p(c_69) = [1] x1 + [0] p(c_70) = [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) = [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [0] p(c_81) = [0] p(c_82) = [2] 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) = [0] p(c_90) = [0] p(c_91) = [0] p(c_92) = [4] x1 + [0] p(c_93) = [0] p(c_94) = [0] p(c_95) = [0] p(c_96) = [0] p(c_97) = [1] x1 + [0] p(c_98) = [0] p(c_99) = [0] p(c_100) = [0] p(c_101) = [0] p(c_102) = [0] p(c_103) = [0] p(c_104) = [0] p(c_105) = [0] p(c_106) = [0] p(c_107) = [1] x1 + [0] p(c_108) = [0] p(c_109) = [0] p(c_110) = [0] p(c_111) = [0] p(c_112) = [0] p(c_113) = [0] p(c_114) = [0] p(c_115) = [0] p(c_116) = [0] p(c_117) = [0] p(c_118) = [0] p(c_119) = [0] p(c_120) = [0] p(c_121) = [0] p(c_122) = [1] x3 + [0] p(c_123) = [0] p(c_124) = [0] p(c_125) = [0] p(c_126) = [0] p(c_127) = [0] p(c_128) = [4] x1 + [0] p(c_129) = [0] p(c_130) = [0] p(c_131) = [2] x1 + [0] p(c_132) = [0] p(c_133) = [1] x1 + [2] x2 + [0] p(c_134) = [0] p(c_135) = [1] x1 + [0] p(c_136) = [0] p(c_137) = [0] p(c_138) = [0] p(c_139) = [0] p(c_140) = [0] p(c_141) = [0] p(c_142) = [0] p(c_143) = [0] p(c_144) = [0] p(c_145) = [0] p(c_146) = [0] p(c_147) = [0] p(c_148) = [0] Following rules are strictly oriented: bitToInt'#(@b,@n) = [4] @b + [7] > [4] @b + [2] = c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) = [4] @x + [4] @xs + [14] > [4] @xs + [9] = c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) Following rules are (at-least) weakly oriented: bitToInt#(@b) = [4] @b + [7] >= [4] @b + [7] = c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) compare#(@b1,@b2) = [0] >= [0] = c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) = [0] >= [0] = c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) = [0] >= [0] = c_25(compare#(@xs,@ys)) mult#(@b1,@b2) = [0] >= [0] = c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) = [0] >= [0] = c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) = [0] >= [0] = c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) = [1] @b1 + [0] >= [0] = c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) = [0] >= [0] = c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) = [0] >= [0] = c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) = [0] >= [0] = c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) = [0] >= [0] = c_54(sub'#(@xs,@ys,@r')) #abs(#0()) = [4] >= [0] = #0() #abs(#pos(@x)) = [4] >= [1] = #pos(@x) ** Step 13.a:4: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak DPs: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/1,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_18) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_25) = {1}, uargs(c_40) = {1}, uargs(c_41) = {1}, uargs(c_46) = {1,2}, uargs(c_47) = {1}, uargs(c_49) = {1}, uargs(c_50) = {1}, uargs(c_52) = {1}, uargs(c_54) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1# ,compare#,compare#1#,compare#2#,compare#3#,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod# ,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1# ,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [0] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [2] p(#add) = [2] x1 + [5] x2 + [0] p(#and) = [5] p(#ckgt) = [0] p(#cklt) = [3] p(#compare) = [0] p(#div) = [0] p(#divByZero) = [0] p(#eq) = [1] x1 + [1] p(#equal) = [3] x2 + [5] p(#false) = [0] p(#greater) = [0] p(#less) = [0] p(#mult) = [5] x2 + [0] p(#natdiv) = [4] x1 + [1] x2 + [7] p(#natmult) = [0] p(#natsub) = [0] p(#neg) = [0] p(#pos) = [2] p(#pred) = [1] x1 + [3] p(#s) = [1] p(#sub) = [0] p(#succ) = [2] x1 + [0] p(#true) = [1] p(*) = [3] x2 + [2] p(+) = [0] p(-) = [3] p(::) = [1] x2 + [2] p(add) = [0] p(add') = [1] x3 + [0] p(add'#1) = [2] x1 + [6] p(add'#2) = [0] p(add'#3) = [0] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [7] p(div) = [0] p(leq) = [0] p(mod) = [0] p(mult) = [0] p(mult#1) = [0] p(mult#2) = [2] x1 + [0] p(mult#3) = [5] p(mult3) = [1] x3 + [0] p(nil) = [2] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [0] p(sub'#4) = [0] p(sub'#5) = [0] p(sum) = [0] p(sum#1) = [0] p(sum#2) = [1] x1 + [3] p(sum#3) = [0] p(sum#4) = [7] p(tuple#2) = [1] x2 + [4] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#less#) = [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(add#) = [0] p(add'#) = [0] p(add'#1#) = [0] p(add'#2#) = [0] p(add'#3#) = [0] p(bitToInt#) = [4] x1 + [0] p(bitToInt'#) = [0] p(bitToInt'#1#) = [0] p(compare#) = [0] p(compare#1#) = [0] p(compare#2#) = [0] p(compare#3#) = [0] p(compare#4#) = [1] x2 + [0] p(compare#5#) = [0] p(compare#6#) = [0] p(diff#) = [0] p(diff#1#) = [0] p(div#) = [0] p(leq#) = [0] p(mod#) = [0] p(mult#) = [0] p(mult#1#) = [0] p(mult#2#) = [0] p(mult#3#) = [0] p(mult3#) = [0] p(sub#) = [3] x1 + [2] x2 + [0] p(sub#1#) = [0] p(sub'#) = [3] x1 + [2] x2 + [0] p(sub'#1#) = [3] x1 + [2] x2 + [0] p(sub'#2#) = [2] x1 + [3] x4 + [4] p(sub'#3#) = [3] x2 + [2] x3 + [1] p(sub'#4#) = [0] p(sub'#5#) = [2] x1 + [0] p(sum#) = [0] p(sum#1#) = [0] p(sum#2#) = [0] p(sum#3#) = [0] p(sum#4#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [1] x1 + [0] p(c_19) = [1] x1 + [0] p(c_20) = [2] x1 + [0] p(c_21) = [0] p(c_22) = [4] x1 + [0] p(c_23) = [4] x1 + [0] p(c_24) = [4] x1 + [0] p(c_25) = [4] x1 + [0] p(c_26) = [0] p(c_27) = [2] x1 + [2] p(c_28) = [0] p(c_29) = [1] x1 + [0] p(c_30) = [1] x1 + [0] p(c_31) = [4] x1 + [0] p(c_32) = [2] x1 + [0] p(c_33) = [0] p(c_34) = [1] x5 + [1] x7 + [0] p(c_35) = [0] p(c_36) = [4] x1 + [0] p(c_37) = [0] p(c_38) = [1] x1 + [0] p(c_39) = [1] x3 + [0] p(c_40) = [2] x1 + [0] p(c_41) = [2] x1 + [0] p(c_42) = [0] p(c_43) = [2] x1 + [0] p(c_44) = [0] p(c_45) = [1] x1 + [0] p(c_46) = [2] x1 + [4] x2 + [0] p(c_47) = [1] x1 + [0] p(c_48) = [0] p(c_49) = [1] x1 + [0] p(c_50) = [1] x1 + [1] p(c_51) = [2] p(c_52) = [1] x1 + [3] p(c_53) = [0] p(c_54) = [1] x1 + [1] p(c_55) = [0] p(c_56) = [0] p(c_57) = [0] p(c_58) = [1] x2 + [0] p(c_59) = [1] x2 + [0] p(c_60) = [0] p(c_61) = [1] x1 + [0] p(c_62) = [4] x1 + [4] x2 + [0] p(c_63) = [0] p(c_64) = [4] x1 + [1] x2 + [0] p(c_65) = [1] x2 + [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [0] p(c_69) = [1] x1 + [0] p(c_70) = [1] x1 + [1] x2 + [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) = [0] p(c_78) = [2] p(c_79) = [0] p(c_80) = [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) = [2] p(c_88) = [0] p(c_89) = [0] p(c_90) = [0] p(c_91) = [0] p(c_92) = [2] x1 + [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) = [4] x1 + [0] p(c_101) = [0] p(c_102) = [0] p(c_103) = [0] p(c_104) = [0] p(c_105) = [0] p(c_106) = [0] p(c_107) = [1] x1 + [0] p(c_108) = [0] p(c_109) = [0] p(c_110) = [0] p(c_111) = [0] p(c_112) = [0] p(c_113) = [2] x1 + [0] p(c_114) = [1] x1 + [1] x2 + [2] x3 + [0] p(c_115) = [0] p(c_116) = [0] p(c_117) = [0] p(c_118) = [0] p(c_119) = [0] p(c_120) = [0] p(c_121) = [0] p(c_122) = [0] p(c_123) = [0] p(c_124) = [0] p(c_125) = [0] p(c_126) = [0] p(c_127) = [0] p(c_128) = [1] x1 + [2] p(c_129) = [1] p(c_130) = [4] x1 + [0] p(c_131) = [0] p(c_132) = [0] p(c_133) = [1] x2 + [0] p(c_134) = [0] p(c_135) = [1] x1 + [1] p(c_136) = [0] p(c_137) = [0] p(c_138) = [1] p(c_139) = [0] p(c_140) = [1] p(c_141) = [4] p(c_142) = [0] p(c_143) = [1] p(c_144) = [4] x1 + [0] p(c_145) = [0] p(c_146) = [0] p(c_147) = [4] p(c_148) = [1] Following rules are strictly oriented: sub'#1#(::(@x,@xs),@b2,@r) = [2] @b2 + [3] @xs + [6] > [2] @b2 + [3] @xs + [5] = c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) = [3] @xs + [2] @ys + [8] > [3] @xs + [2] @ys + [4] = c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) Following rules are (at-least) weakly oriented: bitToInt#(@b) = [4] @b + [0] >= [0] = c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) = [0] >= [0] = c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) = [0] >= [0] = c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) = [0] >= [0] = c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) = [0] >= [0] = c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) = [0] >= [0] = c_25(compare#(@xs,@ys)) mult#(@b1,@b2) = [0] >= [0] = c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) = [0] >= [0] = c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) = [0] >= [0] = c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) = [3] @b1 + [2] @b2 + [0] >= [3] @b1 + [2] @b2 + [0] = c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) = [3] @b1 + [2] @b2 + [0] >= [3] @b1 + [2] @b2 + [0] = c_49(sub'#1#(@b1,@b2,@r)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) = [3] @xs + [2] @ys + [1] >= [3] @xs + [2] @ys + [1] = c_54(sub'#(@xs,@ys,@r')) ** Step 13.a:5: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak DPs: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/1,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_18) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_25) = {1}, uargs(c_40) = {1}, uargs(c_41) = {1}, uargs(c_46) = {1,2}, uargs(c_47) = {1}, uargs(c_49) = {1}, uargs(c_50) = {1}, uargs(c_52) = {1}, uargs(c_54) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1# ,compare#,compare#1#,compare#2#,compare#3#,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod# ,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1# ,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [0] p(#EQ) = [7] p(#GT) = [0] p(#LT) = [0] p(#abs) = [5] x1 + [1] p(#add) = [3] x2 + [3] p(#and) = [0] p(#ckgt) = [0] p(#cklt) = [1] x1 + [0] p(#compare) = [0] p(#div) = [1] x1 + [1] x2 + [7] p(#divByZero) = [0] p(#eq) = [2] x2 + [0] p(#equal) = [5] p(#false) = [0] p(#greater) = [0] p(#less) = [0] p(#mult) = [1] x2 + [0] p(#natdiv) = [4] x1 + [0] p(#natmult) = [1] x1 + [1] x2 + [0] p(#natsub) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [1] p(#pred) = [4] x1 + [3] p(#s) = [1] x1 + [0] p(#sub) = [3] p(#succ) = [2] x1 + [0] p(#true) = [1] p(*) = [0] p(+) = [1] x1 + [1] p(-) = [0] p(::) = [1] x1 + [1] x2 + [1] p(add) = [1] x1 + [0] p(add') = [3] p(add'#1) = [0] p(add'#2) = [1] x1 + [0] p(add'#3) = [5] x1 + [0] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [3] p(div) = [0] p(leq) = [0] p(mod) = [4] x1 + [1] p(mult) = [0] p(mult#1) = [0] p(mult#2) = [0] p(mult#3) = [1] x1 + [5] p(mult3) = [0] p(nil) = [4] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [1] x3 + [0] p(sub'#4) = [0] p(sub'#5) = [0] p(sum) = [3] p(sum#1) = [1] p(sum#2) = [0] p(sum#3) = [1] p(sum#4) = [0] p(tuple#2) = [1] x1 + [1] x2 + [1] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#less#) = [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(add#) = [0] p(add'#) = [0] p(add'#1#) = [0] p(add'#2#) = [1] x3 + [0] p(add'#3#) = [0] p(bitToInt#) = [0] p(bitToInt'#) = [0] p(bitToInt'#1#) = [0] p(compare#) = [4] x1 + [4] x2 + [4] p(compare#1#) = [4] x1 + [4] x2 + [0] p(compare#2#) = [4] x1 + [4] x3 + [4] p(compare#3#) = [0] p(compare#4#) = [0] p(compare#5#) = [0] p(compare#6#) = [0] p(diff#) = [0] p(diff#1#) = [0] p(div#) = [0] p(leq#) = [0] p(mod#) = [0] p(mult#) = [1] p(mult#1#) = [1] p(mult#2#) = [0] p(mult#3#) = [0] p(mult3#) = [5] p(sub#) = [4] x1 + [4] p(sub#1#) = [0] p(sub'#) = [0] p(sub'#1#) = [0] p(sub'#2#) = [0] p(sub'#3#) = [0] p(sub'#4#) = [0] p(sub'#5#) = [0] p(sum#) = [0] p(sum#1#) = [0] p(sum#2#) = [0] p(sum#3#) = [0] p(sum#4#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [1] p(c_16) = [0] p(c_17) = [2] x1 + [2] p(c_18) = [2] x1 + [0] p(c_19) = [2] x1 + [0] p(c_20) = [4] x1 + [0] p(c_21) = [1] x1 + [2] p(c_22) = [1] x1 + [4] p(c_23) = [1] x1 + [0] p(c_24) = [0] p(c_25) = [1] x1 + [4] p(c_26) = [2] x1 + [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [2] x1 + [4] x2 + [0] p(c_30) = [2] p(c_31) = [1] x1 + [0] p(c_32) = [1] x1 + [0] p(c_33) = [1] x1 + [0] p(c_34) = [2] x2 + [2] x3 + [0] p(c_35) = [2] x1 + [0] p(c_36) = [2] x1 + [0] p(c_37) = [1] x1 + [0] p(c_38) = [0] p(c_39) = [4] x1 + [0] p(c_40) = [1] x1 + [0] p(c_41) = [1] x1 + [0] p(c_42) = [0] p(c_43) = [2] x1 + [2] p(c_44) = [2] p(c_45) = [4] p(c_46) = [1] x1 + [2] x2 + [2] p(c_47) = [2] x1 + [1] p(c_48) = [0] p(c_49) = [4] x1 + [0] p(c_50) = [4] x1 + [0] p(c_51) = [0] p(c_52) = [4] x1 + [0] p(c_53) = [2] p(c_54) = [4] x1 + [0] p(c_55) = [4] x2 + [0] p(c_56) = [2] p(c_57) = [0] p(c_58) = [1] x1 + [1] x3 + [0] p(c_59) = [4] x2 + [0] p(c_60) = [1] x2 + [0] p(c_61) = [1] x2 + [0] p(c_62) = [1] x1 + [0] p(c_63) = [0] p(c_64) = [0] p(c_65) = [2] x1 + [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [4] x2 + [0] p(c_69) = [0] p(c_70) = [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) = [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [0] p(c_81) = [0] p(c_82) = [0] p(c_83) = [0] p(c_84) = [0] p(c_85) = [0] p(c_86) = [1] x1 + [0] p(c_87) = [0] p(c_88) = [0] p(c_89) = [0] p(c_90) = [0] p(c_91) = [0] p(c_92) = [1] x1 + [0] p(c_93) = [0] p(c_94) = [0] p(c_95) = [0] p(c_96) = [0] p(c_97) = [0] p(c_98) = [1] x1 + [0] p(c_99) = [0] p(c_100) = [1] x1 + [0] p(c_101) = [1] x1 + [0] p(c_102) = [0] p(c_103) = [0] p(c_104) = [0] p(c_105) = [0] p(c_106) = [0] p(c_107) = [1] x1 + [0] p(c_108) = [0] p(c_109) = [0] p(c_110) = [0] p(c_111) = [2] x1 + [0] p(c_112) = [0] p(c_113) = [1] x1 + [0] p(c_114) = [4] x1 + [2] x3 + [0] p(c_115) = [0] p(c_116) = [0] p(c_117) = [0] p(c_118) = [0] p(c_119) = [0] p(c_120) = [0] p(c_121) = [0] p(c_122) = [4] x1 + [0] p(c_123) = [0] p(c_124) = [2] 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) = [0] p(c_132) = [2] p(c_133) = [1] x1 + [1] x2 + [0] p(c_134) = [0] p(c_135) = [2] x1 + [1] x2 + [0] p(c_136) = [0] p(c_137) = [0] p(c_138) = [0] p(c_139) = [0] p(c_140) = [0] p(c_141) = [0] p(c_142) = [0] p(c_143) = [4] x1 + [0] p(c_144) = [2] x1 + [0] p(c_145) = [0] p(c_146) = [0] p(c_147) = [4] p(c_148) = [0] Following rules are strictly oriented: sub#(@b1,@b2) = [4] @b1 + [4] > [1] = c_47(sub'#(@b1,@b2,#abs(#0()))) Following rules are (at-least) weakly oriented: bitToInt#(@b) = [0] >= [0] = c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) = [0] >= [0] = c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) = [0] >= [0] = c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) = [4] @b1 + [4] @b2 + [4] >= [4] @b1 + [4] @b2 + [4] = c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) = [4] @b2 + [4] @x + [4] @xs + [4] >= [4] @b2 + [4] @xs + [4] = c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) = [4] @xs + [4] @y + [4] @ys + [8] >= [4] @xs + [4] @ys + [8] = c_25(compare#(@xs,@ys)) mult#(@b1,@b2) = [1] >= [1] = c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) = [1] >= [1] = c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) = [5] >= [5] = c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub'#(@b1,@b2,@r) = [0] >= [0] = c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) = [0] >= [0] = c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) = [0] >= [0] = c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) = [0] >= [0] = c_54(sub'#(@xs,@ys,@r')) ** Step 13.a:6: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak DPs: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/1,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_18) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_25) = {1}, uargs(c_40) = {1}, uargs(c_41) = {1}, uargs(c_46) = {1,2}, uargs(c_47) = {1}, uargs(c_49) = {1}, uargs(c_50) = {1}, uargs(c_52) = {1}, uargs(c_54) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1# ,compare#,compare#1#,compare#2#,compare#3#,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod# ,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1# ,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [2] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [0] p(#add) = [7] p(#and) = [4] x1 + [7] p(#ckgt) = [0] p(#cklt) = [0] p(#compare) = [0] p(#div) = [6] x2 + [0] p(#divByZero) = [0] p(#eq) = [3] x1 + [0] p(#equal) = [0] p(#false) = [0] p(#greater) = [0] p(#less) = [3] p(#mult) = [1] x1 + [2] x2 + [3] p(#natdiv) = [0] p(#natmult) = [3] x1 + [0] p(#natsub) = [2] x1 + [0] p(#neg) = [0] p(#pos) = [1] x1 + [1] p(#pred) = [0] p(#s) = [4] p(#sub) = [0] p(#succ) = [0] p(#true) = [0] p(*) = [0] p(+) = [0] p(-) = [1] x2 + [0] p(::) = [0] p(add) = [0] p(add') = [0] p(add'#1) = [0] p(add'#2) = [0] p(add'#3) = [0] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [1] x1 + [0] p(div) = [1] x2 + [0] p(leq) = [0] p(mod) = [3] p(mult) = [0] p(mult#1) = [1] x1 + [0] p(mult#2) = [3] p(mult#3) = [7] p(mult3) = [0] p(nil) = [4] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [0] p(sub'#4) = [0] p(sub'#5) = [0] p(sum) = [0] p(sum#1) = [0] p(sum#2) = [0] p(sum#3) = [1] x1 + [7] p(sum#4) = [0] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#less#) = [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(add#) = [0] p(add'#) = [0] p(add'#1#) = [0] p(add'#2#) = [0] p(add'#3#) = [0] p(bitToInt#) = [0] p(bitToInt'#) = [0] p(bitToInt'#1#) = [0] p(compare#) = [0] p(compare#1#) = [0] p(compare#2#) = [0] p(compare#3#) = [0] p(compare#4#) = [0] p(compare#5#) = [0] p(compare#6#) = [0] p(diff#) = [0] p(diff#1#) = [0] p(div#) = [0] p(leq#) = [0] p(mod#) = [0] p(mult#) = [0] p(mult#1#) = [0] p(mult#2#) = [0] p(mult#3#) = [0] p(mult3#) = [7] p(sub#) = [1] p(sub#1#) = [0] p(sub'#) = [0] p(sub'#1#) = [0] p(sub'#2#) = [0] p(sub'#3#) = [0] p(sub'#4#) = [0] p(sub'#5#) = [0] p(sum#) = [0] p(sum#1#) = [0] p(sum#2#) = [0] p(sum#3#) = [0] p(sum#4#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [1] x1 + [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [1] p(c_17) = [1] x1 + [1] p(c_18) = [1] x1 + [0] p(c_19) = [1] x1 + [0] p(c_20) = [1] x1 + [0] p(c_21) = [0] p(c_22) = [4] x1 + [0] p(c_23) = [2] x1 + [0] p(c_24) = [0] p(c_25) = [4] x1 + [0] p(c_26) = [0] p(c_27) = [0] p(c_28) = [2] p(c_29) = [0] p(c_30) = [0] p(c_31) = [0] p(c_32) = [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) = [4] x1 + [0] p(c_41) = [1] x1 + [0] p(c_42) = [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [1] p(c_46) = [4] x1 + [1] x2 + [6] p(c_47) = [2] x1 + [1] p(c_48) = [0] p(c_49) = [2] x1 + [0] p(c_50) = [2] x1 + [0] p(c_51) = [0] p(c_52) = [4] x1 + [0] p(c_53) = [0] p(c_54) = [2] x1 + [0] p(c_55) = [2] x1 + [0] p(c_56) = [0] p(c_57) = [0] p(c_58) = [1] x2 + [0] p(c_59) = [0] p(c_60) = [4] x1 + [1] x2 + [0] p(c_61) = [1] x1 + [1] x2 + [0] p(c_62) = [1] x1 + [1] x2 + [0] p(c_63) = [4] x1 + [0] p(c_64) = [0] p(c_65) = [1] x1 + [0] p(c_66) = [0] p(c_67) = [1] x1 + [0] p(c_68) = [2] x1 + [0] p(c_69) = [0] p(c_70) = [1] x1 + [1] x2 + [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) = [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [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) = [0] p(c_90) = [1] x1 + [2] 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) = [4] x1 + [0] p(c_98) = [1] x1 + [0] p(c_99) = [0] p(c_100) = [1] x1 + [0] p(c_101) = [1] x1 + [0] p(c_102) = [0] p(c_103) = [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) = [0] p(c_111) = [0] p(c_112) = [0] p(c_113) = [2] x1 + [0] p(c_114) = [1] x1 + [1] x3 + [0] p(c_115) = [0] p(c_116) = [0] p(c_117) = [0] p(c_118) = [0] p(c_119) = [0] p(c_120) = [0] p(c_121) = [0] p(c_122) = [1] x2 + [0] p(c_123) = [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) = [1] x1 + [0] p(c_131) = [0] p(c_132) = [0] p(c_133) = [2] x1 + [0] p(c_134) = [0] p(c_135) = [0] p(c_136) = [0] p(c_137) = [1] x1 + [0] p(c_138) = [2] p(c_139) = [0] p(c_140) = [0] p(c_141) = [0] p(c_142) = [0] p(c_143) = [0] p(c_144) = [4] x1 + [0] p(c_145) = [0] p(c_146) = [0] p(c_147) = [0] p(c_148) = [0] Following rules are strictly oriented: mult3#(@b1,@b2,@b3) = [7] > [6] = c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) Following rules are (at-least) weakly oriented: bitToInt#(@b) = [0] >= [0] = c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) = [0] >= [0] = c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) = [0] >= [0] = c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) = [0] >= [0] = c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) = [0] >= [0] = c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) = [0] >= [0] = c_25(compare#(@xs,@ys)) mult#(@b1,@b2) = [0] >= [0] = c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) = [0] >= [0] = c_41(mult#(@xs,@b2)) sub#(@b1,@b2) = [1] >= [1] = c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) = [0] >= [0] = c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) = [0] >= [0] = c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) = [0] >= [0] = c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) = [0] >= [0] = c_54(sub'#(@xs,@ys,@r')) ** Step 13.a:7: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak DPs: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/1,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_18) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_25) = {1}, uargs(c_40) = {1}, uargs(c_41) = {1}, uargs(c_46) = {1,2}, uargs(c_47) = {1}, uargs(c_49) = {1}, uargs(c_50) = {1}, uargs(c_52) = {1}, uargs(c_54) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1# ,compare#,compare#1#,compare#2#,compare#3#,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod# ,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1# ,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [0] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [4] p(#add) = [3] x1 + [1] p(#and) = [1] x1 + [3] x2 + [3] p(#ckgt) = [0] p(#cklt) = [0] p(#compare) = [1] x1 + [7] p(#div) = [1] x2 + [2] p(#divByZero) = [0] p(#eq) = [0] p(#equal) = [7] p(#false) = [3] p(#greater) = [1] p(#less) = [2] x2 + [0] p(#mult) = [1] x1 + [1] x2 + [3] p(#natdiv) = [0] p(#natmult) = [0] p(#natsub) = [0] p(#neg) = [3] p(#pos) = [4] p(#pred) = [1] x1 + [0] p(#s) = [4] p(#sub) = [0] p(#succ) = [5] p(#true) = [0] p(*) = [0] p(+) = [1] x2 + [0] p(-) = [1] x2 + [0] p(::) = [1] x1 + [1] x2 + [1] p(add) = [0] p(add') = [1] p(add'#1) = [0] p(add'#2) = [0] p(add'#3) = [0] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [1] x2 + [4] x3 + [0] p(compare#4) = [1] x4 + [0] p(compare#5) = [1] x2 + [0] p(compare#6) = [1] p(diff) = [1] x1 + [0] p(diff#1) = [0] p(div) = [0] p(leq) = [0] p(mod) = [4] x1 + [3] x2 + [0] p(mult) = [0] p(mult#1) = [3] p(mult#2) = [0] p(mult#3) = [0] p(mult3) = [0] p(nil) = [1] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [1] x2 + [0] p(sub'#4) = [4] x1 + [1] p(sub'#5) = [1] x2 + [1] p(sum) = [1] p(sum#1) = [2] x1 + [1] p(sum#2) = [4] x2 + [4] p(sum#3) = [1] x1 + [4] p(sum#4) = [1] x1 + [2] p(tuple#2) = [4] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [1] x2 + [0] p(#greater#) = [0] p(#less#) = [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(add#) = [0] p(add'#) = [0] p(add'#1#) = [0] p(add'#2#) = [0] p(add'#3#) = [0] p(bitToInt#) = [4] x1 + [0] p(bitToInt'#) = [0] p(bitToInt'#1#) = [0] p(compare#) = [4] x1 + [1] p(compare#1#) = [4] x1 + [0] p(compare#2#) = [4] x3 + [4] p(compare#3#) = [0] p(compare#4#) = [0] p(compare#5#) = [0] p(compare#6#) = [0] p(diff#) = [0] p(diff#1#) = [2] p(div#) = [0] p(leq#) = [0] p(mod#) = [0] p(mult#) = [0] p(mult#1#) = [0] p(mult#2#) = [0] p(mult#3#) = [0] p(mult3#) = [0] p(sub#) = [3] p(sub#1#) = [0] p(sub'#) = [0] p(sub'#1#) = [0] p(sub'#2#) = [0] p(sub'#3#) = [0] p(sub'#4#) = [0] p(sub'#5#) = [0] p(sum#) = [0] p(sum#1#) = [0] p(sum#2#) = [0] p(sum#3#) = [0] p(sum#4#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [1] x1 + [0] p(c_19) = [1] x1 + [0] p(c_20) = [4] x1 + [0] p(c_21) = [1] x1 + [0] p(c_22) = [1] x1 + [0] p(c_23) = [1] x1 + [0] p(c_24) = [1] x1 + [0] p(c_25) = [1] x1 + [1] p(c_26) = [0] p(c_27) = [1] x1 + [1] x2 + [0] p(c_28) = [0] p(c_29) = [1] x1 + [1] x2 + [0] p(c_30) = [0] p(c_31) = [2] x1 + [0] p(c_32) = [0] p(c_33) = [4] x1 + [0] p(c_34) = [4] x1 + [1] x3 + [1] x4 + [4] x6 + [4] x7 + [0] p(c_35) = [0] p(c_36) = [4] x1 + [0] p(c_37) = [1] x1 + [0] p(c_38) = [0] p(c_39) = [1] x3 + [0] p(c_40) = [4] x1 + [0] p(c_41) = [4] x1 + [0] p(c_42) = [0] p(c_43) = [4] x1 + [1] p(c_44) = [0] p(c_45) = [0] p(c_46) = [4] x1 + [1] x2 + [0] p(c_47) = [4] x1 + [3] p(c_48) = [0] p(c_49) = [4] x1 + [0] p(c_50) = [4] x1 + [0] p(c_51) = [4] p(c_52) = [2] x1 + [0] p(c_53) = [0] p(c_54) = [2] x1 + [0] p(c_55) = [4] x1 + [2] x2 + [0] p(c_56) = [0] p(c_57) = [1] x1 + [0] p(c_58) = [4] x2 + [1] x3 + [0] p(c_59) = [1] x1 + [0] p(c_60) = [1] x1 + [0] p(c_61) = [1] x1 + [4] x2 + [0] p(c_62) = [1] x1 + [4] x2 + [0] p(c_63) = [4] x2 + [0] p(c_64) = [4] x2 + [0] p(c_65) = [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [0] p(c_69) = [1] x1 + [0] p(c_70) = [2] x2 + [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) = [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [0] p(c_81) = [0] p(c_82) = [0] p(c_83) = [0] p(c_84) = [0] p(c_85) = [0] p(c_86) = [2] x1 + [0] p(c_87) = [2] p(c_88) = [0] p(c_89) = [0] p(c_90) = [0] p(c_91) = [0] p(c_92) = [4] x1 + [0] p(c_93) = [0] p(c_94) = [0] p(c_95) = [0] p(c_96) = [0] p(c_97) = [1] x1 + [0] p(c_98) = [0] p(c_99) = [0] p(c_100) = [0] p(c_101) = [0] p(c_102) = [0] p(c_103) = [0] p(c_104) = [0] p(c_105) = [0] p(c_106) = [0] p(c_107) = [1] x1 + [0] p(c_108) = [0] p(c_109) = [0] p(c_110) = [0] p(c_111) = [1] x1 + [0] p(c_112) = [0] p(c_113) = [0] p(c_114) = [1] x2 + [0] p(c_115) = [0] p(c_116) = [0] p(c_117) = [0] p(c_118) = [0] p(c_119) = [0] p(c_120) = [0] p(c_121) = [0] p(c_122) = [1] x1 + [1] x2 + [0] p(c_123) = [0] p(c_124) = [0] p(c_125) = [0] p(c_126) = [0] p(c_127) = [4] x1 + [0] p(c_128) = [0] p(c_129) = [0] p(c_130) = [1] x1 + [0] p(c_131) = [0] p(c_132) = [0] p(c_133) = [4] x2 + [0] p(c_134) = [0] p(c_135) = [2] x1 + [1] x2 + [0] p(c_136) = [0] p(c_137) = [4] x1 + [0] p(c_138) = [0] p(c_139) = [0] p(c_140) = [0] p(c_141) = [0] p(c_142) = [0] p(c_143) = [0] p(c_144) = [1] x1 + [0] p(c_145) = [0] p(c_146) = [0] p(c_147) = [0] p(c_148) = [0] Following rules are strictly oriented: compare#2#(::(@y,@ys),@x,@xs) = [4] @xs + [4] > [4] @xs + [2] = c_25(compare#(@xs,@ys)) Following rules are (at-least) weakly oriented: bitToInt#(@b) = [4] @b + [0] >= [0] = c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) = [0] >= [0] = c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) = [0] >= [0] = c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) = [4] @b1 + [1] >= [4] @b1 + [0] = c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) = [4] @x + [4] @xs + [4] >= [4] @xs + [4] = c_23(compare#2#(@b2,@x,@xs)) mult#(@b1,@b2) = [0] >= [0] = c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) = [0] >= [0] = c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) = [0] >= [0] = c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) = [3] >= [3] = c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) = [0] >= [0] = c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) = [0] >= [0] = c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) = [0] >= [0] = c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) = [0] >= [0] = c_54(sub'#(@xs,@ys,@r')) ** Step 13.a:8: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak DPs: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/1,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_18) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_25) = {1}, uargs(c_40) = {1}, uargs(c_41) = {1}, uargs(c_46) = {1,2}, uargs(c_47) = {1}, uargs(c_49) = {1}, uargs(c_50) = {1}, uargs(c_52) = {1}, uargs(c_54) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1# ,compare#,compare#1#,compare#2#,compare#3#,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod# ,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1# ,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [0] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [4] p(#add) = [3] p(#and) = [4] x2 + [0] p(#ckgt) = [0] p(#cklt) = [0] p(#compare) = [0] p(#div) = [2] p(#divByZero) = [0] p(#eq) = [2] p(#equal) = [2] x1 + [1] p(#false) = [1] p(#greater) = [0] p(#less) = [2] x1 + [0] p(#mult) = [0] p(#natdiv) = [0] p(#natmult) = [0] p(#natsub) = [1] x2 + [0] p(#neg) = [0] p(#pos) = [0] p(#pred) = [1] x1 + [6] p(#s) = [4] p(#sub) = [0] p(#succ) = [0] p(#true) = [1] p(*) = [0] p(+) = [2] x1 + [2] p(-) = [6] p(::) = [1] x2 + [1] p(add) = [0] p(add') = [0] p(add'#1) = [0] p(add'#2) = [3] p(add'#3) = [0] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [4] p(div) = [0] p(leq) = [0] p(mod) = [2] p(mult) = [7] p(mult#1) = [4] x1 + [0] p(mult#2) = [2] p(mult#3) = [6] x1 + [4] p(mult3) = [0] p(nil) = [0] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [0] p(sub'#4) = [0] p(sub'#5) = [0] p(sum) = [0] p(sum#1) = [0] p(sum#2) = [0] p(sum#3) = [0] p(sum#4) = [1] x1 + [0] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#less#) = [0] p(#mult#) = [1] x1 + [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(add#) = [0] p(add'#) = [0] p(add'#1#) = [0] p(add'#2#) = [0] p(add'#3#) = [0] p(bitToInt#) = [1] x1 + [0] p(bitToInt'#) = [0] p(bitToInt'#1#) = [0] p(compare#) = [4] x1 + [6] x2 + [0] p(compare#1#) = [4] x1 + [6] x2 + [0] p(compare#2#) = [6] x1 + [4] x3 + [2] p(compare#3#) = [0] p(compare#4#) = [0] p(compare#5#) = [0] p(compare#6#) = [0] p(diff#) = [0] p(diff#1#) = [0] p(div#) = [0] p(leq#) = [0] p(mod#) = [0] p(mult#) = [0] p(mult#1#) = [0] p(mult#2#) = [0] p(mult#3#) = [0] p(mult3#) = [0] p(sub#) = [1] x1 + [0] p(sub#1#) = [0] p(sub'#) = [0] p(sub'#1#) = [0] p(sub'#2#) = [0] p(sub'#3#) = [0] p(sub'#4#) = [0] p(sub'#5#) = [0] p(sum#) = [0] p(sum#1#) = [0] p(sum#2#) = [0] p(sum#3#) = [0] p(sum#4#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [1] x1 + [0] p(c_19) = [2] x1 + [0] p(c_20) = [4] x1 + [0] p(c_21) = [0] p(c_22) = [1] x1 + [0] p(c_23) = [1] x1 + [0] p(c_24) = [0] p(c_25) = [1] x1 + [3] p(c_26) = [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [0] p(c_30) = [1] x1 + [0] p(c_31) = [0] p(c_32) = [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) = [2] x2 + [1] x3 + [0] p(c_40) = [4] x1 + [0] p(c_41) = [4] x1 + [0] p(c_42) = [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [0] p(c_46) = [4] x1 + [1] x2 + [0] p(c_47) = [1] x1 + [0] p(c_48) = [0] p(c_49) = [1] x1 + [0] p(c_50) = [4] x1 + [0] p(c_51) = [0] p(c_52) = [1] x1 + [0] p(c_53) = [0] p(c_54) = [4] x1 + [0] p(c_55) = [1] x1 + [1] x2 + [0] p(c_56) = [0] p(c_57) = [2] x1 + [0] p(c_58) = [1] x1 + [0] p(c_59) = [1] x2 + [0] p(c_60) = [0] p(c_61) = [0] p(c_62) = [1] x2 + [0] p(c_63) = [1] x1 + [0] p(c_64) = [1] x1 + [4] x2 + [0] p(c_65) = [4] x1 + [4] x2 + [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [4] x1 + [0] p(c_69) = [1] x1 + [0] p(c_70) = [2] x1 + [2] x2 + [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) = [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [0] p(c_81) = [0] p(c_82) = [0] p(c_83) = [0] p(c_84) = [0] p(c_85) = [4] p(c_86) = [0] p(c_87) = [0] p(c_88) = [0] p(c_89) = [0] p(c_90) = [0] p(c_91) = [0] p(c_92) = [2] x1 + [0] p(c_93) = [0] p(c_94) = [0] p(c_95) = [0] p(c_96) = [0] p(c_97) = [0] p(c_98) = [1] x1 + [0] p(c_99) = [0] p(c_100) = [2] x1 + [0] p(c_101) = [0] p(c_102) = [0] p(c_103) = [0] p(c_104) = [0] p(c_105) = [0] p(c_106) = [0] p(c_107) = [4] x1 + [0] p(c_108) = [0] p(c_109) = [0] p(c_110) = [0] p(c_111) = [2] x1 + [0] p(c_112) = [0] p(c_113) = [0] p(c_114) = [2] x1 + [1] x3 + [0] p(c_115) = [0] p(c_116) = [0] p(c_117) = [0] p(c_118) = [0] p(c_119) = [0] p(c_120) = [0] p(c_121) = [0] p(c_122) = [4] x2 + [0] p(c_123) = [0] p(c_124) = [0] p(c_125) = [0] p(c_126) = [0] p(c_127) = [1] x1 + [0] p(c_128) = [0] p(c_129) = [0] p(c_130) = [0] p(c_131) = [0] p(c_132) = [0] p(c_133) = [4] x1 + [0] p(c_134) = [0] p(c_135) = [1] x1 + [1] x2 + [0] p(c_136) = [0] p(c_137) = [0] p(c_138) = [0] p(c_139) = [0] p(c_140) = [0] p(c_141) = [0] p(c_142) = [0] p(c_143) = [0] p(c_144) = [0] p(c_145) = [0] p(c_146) = [0] p(c_147) = [0] p(c_148) = [0] Following rules are strictly oriented: compare#1#(::(@x,@xs),@b2) = [6] @b2 + [4] @xs + [4] > [6] @b2 + [4] @xs + [2] = c_23(compare#2#(@b2,@x,@xs)) Following rules are (at-least) weakly oriented: bitToInt#(@b) = [1] @b + [0] >= [0] = c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) = [0] >= [0] = c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) = [0] >= [0] = c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) = [4] @b1 + [6] @b2 + [0] >= [4] @b1 + [6] @b2 + [0] = c_22(compare#1#(@b1,@b2)) compare#2#(::(@y,@ys),@x,@xs) = [4] @xs + [6] @ys + [8] >= [4] @xs + [6] @ys + [3] = c_25(compare#(@xs,@ys)) mult#(@b1,@b2) = [0] >= [0] = c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) = [0] >= [0] = c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) = [0] >= [0] = c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) = [1] @b1 + [0] >= [0] = c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) = [0] >= [0] = c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) = [0] >= [0] = c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) = [0] >= [0] = c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) = [0] >= [0] = c_54(sub'#(@xs,@ys,@r')) ** Step 13.a:9: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak DPs: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/1,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_18) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_25) = {1}, uargs(c_40) = {1}, uargs(c_41) = {1}, uargs(c_46) = {1,2}, uargs(c_47) = {1}, uargs(c_49) = {1}, uargs(c_50) = {1}, uargs(c_52) = {1}, uargs(c_54) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1# ,compare#,compare#1#,compare#2#,compare#3#,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod# ,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1# ,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [3] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [0] p(#add) = [0] p(#and) = [1] x1 + [5] p(#ckgt) = [0] p(#cklt) = [0] p(#compare) = [1] x1 + [0] p(#div) = [0] p(#divByZero) = [0] p(#eq) = [2] x2 + [0] p(#equal) = [5] p(#false) = [1] p(#greater) = [0] p(#less) = [0] p(#mult) = [0] p(#natdiv) = [0] p(#natmult) = [0] p(#natsub) = [0] p(#neg) = [5] p(#pos) = [1] x1 + [4] p(#pred) = [0] p(#s) = [1] p(#sub) = [0] p(#succ) = [0] p(#true) = [4] p(*) = [2] x2 + [0] p(+) = [5] p(-) = [1] p(::) = [1] x2 + [5] p(add) = [0] p(add') = [3] p(add'#1) = [0] p(add'#2) = [0] p(add'#3) = [1] x1 + [3] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [1] p(div) = [0] p(leq) = [0] p(mod) = [1] p(mult) = [0] p(mult#1) = [0] p(mult#2) = [1] x1 + [6] p(mult#3) = [1] x1 + [0] p(mult3) = [0] p(nil) = [0] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [0] p(sub'#4) = [0] p(sub'#5) = [0] p(sum) = [2] p(sum#1) = [0] p(sum#2) = [4] x2 + [0] p(sum#3) = [0] p(sum#4) = [0] p(tuple#2) = [1] x1 + [1] x2 + [0] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#less#) = [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(add#) = [0] p(add'#) = [0] p(add'#1#) = [0] p(add'#2#) = [0] p(add'#3#) = [0] p(bitToInt#) = [2] x1 + [0] p(bitToInt'#) = [0] p(bitToInt'#1#) = [0] p(compare#) = [0] p(compare#1#) = [0] p(compare#2#) = [0] p(compare#3#) = [0] p(compare#4#) = [0] p(compare#5#) = [0] p(compare#6#) = [0] p(diff#) = [1] x3 + [0] p(diff#1#) = [0] p(div#) = [0] p(leq#) = [0] p(mod#) = [0] p(mult#) = [0] p(mult#1#) = [0] p(mult#2#) = [0] p(mult#3#) = [0] p(mult3#) = [4] p(sub#) = [6] x2 + [3] p(sub#1#) = [0] p(sub'#) = [2] x2 + [1] p(sub'#1#) = [2] x2 + [1] p(sub'#2#) = [2] x1 + [0] p(sub'#3#) = [2] x3 + [2] p(sub'#4#) = [0] p(sub'#5#) = [0] p(sum#) = [0] p(sum#1#) = [0] p(sum#2#) = [0] p(sum#3#) = [2] p(sum#4#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [2] x1 + [0] p(c_19) = [2] x1 + [0] p(c_20) = [4] x1 + [0] p(c_21) = [1] x1 + [0] p(c_22) = [4] x1 + [0] p(c_23) = [4] x1 + [0] p(c_24) = [0] p(c_25) = [4] x1 + [0] p(c_26) = [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [0] p(c_30) = [0] p(c_31) = [0] p(c_32) = [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) = [4] x1 + [0] p(c_41) = [1] x1 + [0] p(c_42) = [0] p(c_43) = [1] x1 + [0] p(c_44) = [1] p(c_45) = [2] p(c_46) = [2] x1 + [2] x2 + [3] p(c_47) = [2] x1 + [0] p(c_48) = [0] p(c_49) = [1] x1 + [0] p(c_50) = [1] x1 + [0] p(c_51) = [0] p(c_52) = [1] x1 + [7] p(c_53) = [0] p(c_54) = [1] x1 + [0] p(c_55) = [0] p(c_56) = [0] p(c_57) = [0] p(c_58) = [2] x1 + [1] x2 + [1] x3 + [0] p(c_59) = [1] x2 + [0] p(c_60) = [1] x2 + [0] p(c_61) = [2] x1 + [2] x2 + [0] p(c_62) = [4] x1 + [1] x2 + [0] p(c_63) = [2] x2 + [0] p(c_64) = [2] x1 + [2] x2 + [0] p(c_65) = [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [2] x2 + [0] p(c_69) = [2] x1 + [0] p(c_70) = [1] x2 + [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) = [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [0] p(c_81) = [0] p(c_82) = [0] p(c_83) = [0] p(c_84) = [0] p(c_85) = [0] p(c_86) = [1] x1 + [0] p(c_87) = [0] p(c_88) = [0] p(c_89) = [0] p(c_90) = [0] p(c_91) = [0] p(c_92) = [1] x1 + [0] p(c_93) = [0] p(c_94) = [0] p(c_95) = [0] p(c_96) = [0] p(c_97) = [1] x1 + [0] p(c_98) = [0] p(c_99) = [0] p(c_100) = [4] x1 + [0] p(c_101) = [1] x1 + [0] p(c_102) = [0] p(c_103) = [0] p(c_104) = [0] p(c_105) = [0] p(c_106) = [0] p(c_107) = [4] x1 + [0] p(c_108) = [0] p(c_109) = [0] p(c_110) = [0] p(c_111) = [2] x1 + [0] p(c_112) = [0] p(c_113) = [2] x1 + [0] p(c_114) = [4] x3 + [0] p(c_115) = [0] p(c_116) = [0] p(c_117) = [0] p(c_118) = [0] p(c_119) = [0] p(c_120) = [0] p(c_121) = [0] p(c_122) = [2] x1 + [2] x2 + [1] x3 + [0] p(c_123) = [0] p(c_124) = [0] p(c_125) = [0] p(c_126) = [0] p(c_127) = [0] p(c_128) = [2] x1 + [0] p(c_129) = [0] p(c_130) = [0] p(c_131) = [2] x1 + [0] p(c_132) = [0] p(c_133) = [2] x1 + [0] p(c_134) = [0] p(c_135) = [1] x2 + [0] p(c_136) = [0] p(c_137) = [0] p(c_138) = [0] p(c_139) = [0] p(c_140) = [0] p(c_141) = [0] p(c_142) = [0] p(c_143) = [1] x1 + [0] p(c_144) = [0] p(c_145) = [0] p(c_146) = [0] p(c_147) = [0] p(c_148) = [0] Following rules are strictly oriented: sub'#3#(tuple#2(@z,@r'),@xs,@ys) = [2] @ys + [2] > [2] @ys + [1] = c_54(sub'#(@xs,@ys,@r')) Following rules are (at-least) weakly oriented: bitToInt#(@b) = [2] @b + [0] >= [0] = c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) = [0] >= [0] = c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) = [0] >= [0] = c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) = [0] >= [0] = c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) = [0] >= [0] = c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) = [0] >= [0] = c_25(compare#(@xs,@ys)) mult#(@b1,@b2) = [0] >= [0] = c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) = [0] >= [0] = c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) = [4] >= [3] = c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) = [6] @b2 + [3] >= [4] @b2 + [2] = c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) = [2] @b2 + [1] >= [2] @b2 + [1] = c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) = [2] @b2 + [1] >= [2] @b2 + [0] = c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) = [2] @ys + [10] >= [2] @ys + [9] = c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) ** Step 13.a:10: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) - Weak DPs: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/1,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_18) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_25) = {1}, uargs(c_40) = {1}, uargs(c_41) = {1}, uargs(c_46) = {1,2}, uargs(c_47) = {1}, uargs(c_49) = {1}, uargs(c_50) = {1}, uargs(c_52) = {1}, uargs(c_54) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1# ,compare#,compare#1#,compare#2#,compare#3#,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod# ,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1# ,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [0] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [1] p(#add) = [2] x1 + [0] p(#and) = [4] x1 + [1] p(#ckgt) = [0] p(#cklt) = [0] p(#compare) = [0] p(#div) = [7] p(#divByZero) = [0] p(#eq) = [0] p(#equal) = [1] x2 + [1] p(#false) = [1] p(#greater) = [0] p(#less) = [0] p(#mult) = [0] p(#natdiv) = [2] x1 + [2] p(#natmult) = [0] p(#natsub) = [0] p(#neg) = [1] x1 + [1] p(#pos) = [1] x1 + [0] p(#pred) = [0] p(#s) = [1] x1 + [3] p(#sub) = [0] p(#succ) = [0] p(#true) = [2] p(*) = [0] p(+) = [0] p(-) = [1] x1 + [0] p(::) = [1] x1 + [1] x2 + [4] p(add) = [0] p(add') = [0] p(add'#1) = [6] p(add'#2) = [0] p(add'#3) = [0] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [0] p(div) = [0] p(leq) = [0] p(mod) = [0] p(mult) = [1] p(mult#1) = [2] x1 + [0] p(mult#2) = [4] p(mult#3) = [1] p(mult3) = [0] p(nil) = [0] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [0] p(sub'#4) = [0] p(sub'#5) = [0] p(sum) = [0] p(sum#1) = [0] p(sum#2) = [4] x1 + [0] p(sum#3) = [0] p(sum#4) = [2] x1 + [0] p(tuple#2) = [1] x2 + [0] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#less#) = [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(add#) = [0] p(add'#) = [0] p(add'#1#) = [0] p(add'#2#) = [0] p(add'#3#) = [0] p(bitToInt#) = [0] p(bitToInt'#) = [0] p(bitToInt'#1#) = [0] p(compare#) = [0] p(compare#1#) = [0] p(compare#2#) = [0] p(compare#3#) = [0] p(compare#4#) = [1] x3 + [1] x4 + [4] p(compare#5#) = [1] x3 + [0] p(compare#6#) = [1] p(diff#) = [1] x3 + [0] p(diff#1#) = [0] p(div#) = [0] p(leq#) = [1] x1 + [0] p(mod#) = [0] p(mult#) = [0] p(mult#1#) = [0] p(mult#2#) = [1] x3 + [0] p(mult#3#) = [1] x3 + [1] p(mult3#) = [2] x2 + [1] x3 + [1] p(sub#) = [4] x1 + [4] x2 + [5] p(sub#1#) = [1] x1 + [2] p(sub'#) = [2] x2 + [1] p(sub'#1#) = [2] x2 + [0] p(sub'#2#) = [2] x1 + [0] p(sub'#3#) = [2] x3 + [7] p(sub'#4#) = [2] p(sub'#5#) = [4] x1 + [1] x3 + [1] p(sum#) = [1] p(sum#1#) = [0] p(sum#2#) = [4] x1 + [1] x2 + [0] p(sum#3#) = [2] x1 + [4] p(sum#4#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [1] p(c_4) = [0] p(c_5) = [1] p(c_6) = [4] x1 + [1] x2 + [0] p(c_7) = [4] p(c_8) = [1] x1 + [2] p(c_9) = [2] x1 + [2] p(c_10) = [2] p(c_11) = [0] p(c_12) = [1] p(c_13) = [0] p(c_14) = [0] p(c_15) = [2] p(c_16) = [2] p(c_17) = [0] p(c_18) = [1] x1 + [0] p(c_19) = [2] x1 + [0] p(c_20) = [1] x1 + [0] p(c_21) = [1] x1 + [1] p(c_22) = [2] x1 + [0] p(c_23) = [2] x1 + [0] p(c_24) = [1] x1 + [1] p(c_25) = [4] x1 + [0] p(c_26) = [1] x1 + [1] p(c_27) = [4] x1 + [1] p(c_28) = [1] p(c_29) = [2] x2 + [0] p(c_30) = [1] x2 + [2] p(c_31) = [1] x1 + [0] p(c_32) = [0] p(c_33) = [2] x1 + [0] p(c_34) = [1] x2 + [2] x3 + [1] x4 + [1] x5 + [0] p(c_35) = [4] p(c_36) = [1] x1 + [2] p(c_37) = [1] p(c_38) = [1] x1 + [2] p(c_39) = [2] x1 + [2] x2 + [0] p(c_40) = [4] x1 + [0] p(c_41) = [4] x1 + [0] p(c_42) = [0] p(c_43) = [2] p(c_44) = [4] p(c_45) = [1] x1 + [1] p(c_46) = [2] x1 + [2] x2 + [1] p(c_47) = [1] x1 + [0] p(c_48) = [0] p(c_49) = [1] x1 + [0] p(c_50) = [1] x1 + [0] p(c_51) = [0] p(c_52) = [1] x1 + [0] p(c_53) = [0] p(c_54) = [1] x1 + [1] p(c_55) = [2] p(c_56) = [2] p(c_57) = [1] p(c_58) = [1] x1 + [4] x2 + [1] p(c_59) = [1] x2 + [1] p(c_60) = [1] x1 + [0] p(c_61) = [2] x2 + [1] p(c_62) = [4] p(c_63) = [0] p(c_64) = [1] x1 + [1] x2 + [0] p(c_65) = [1] x1 + [0] p(c_66) = [0] p(c_67) = [1] x1 + [0] p(c_68) = [1] x2 + [0] p(c_69) = [2] x1 + [1] p(c_70) = [0] p(c_71) = [0] p(c_72) = [1] p(c_73) = [1] p(c_74) = [1] p(c_75) = [4] p(c_76) = [1] p(c_77) = [2] p(c_78) = [4] p(c_79) = [1] p(c_80) = [1] p(c_81) = [2] p(c_82) = [0] p(c_83) = [2] p(c_84) = [0] p(c_85) = [2] p(c_86) = [0] p(c_87) = [1] p(c_88) = [0] p(c_89) = [4] p(c_90) = [1] x1 + [1] p(c_91) = [1] p(c_92) = [2] x1 + [1] p(c_93) = [1] p(c_94) = [4] p(c_95) = [1] p(c_96) = [1] p(c_97) = [4] x1 + [1] p(c_98) = [2] x1 + [2] p(c_99) = [0] p(c_100) = [1] x1 + [1] p(c_101) = [0] p(c_102) = [2] p(c_103) = [1] p(c_104) = [1] p(c_105) = [2] p(c_106) = [4] p(c_107) = [0] p(c_108) = [2] p(c_109) = [0] p(c_110) = [4] p(c_111) = [0] p(c_112) = [0] p(c_113) = [1] x1 + [4] p(c_114) = [2] x2 + [1] p(c_115) = [0] p(c_116) = [1] p(c_117) = [0] p(c_118) = [4] p(c_119) = [0] p(c_120) = [0] p(c_121) = [0] p(c_122) = [1] x1 + [1] p(c_123) = [1] p(c_124) = [1] p(c_125) = [0] p(c_126) = [1] p(c_127) = [1] x1 + [0] p(c_128) = [1] x1 + [2] p(c_129) = [0] p(c_130) = [1] p(c_131) = [0] p(c_132) = [2] p(c_133) = [1] x2 + [2] p(c_134) = [2] p(c_135) = [1] x1 + [4] x2 + [4] p(c_136) = [1] p(c_137) = [2] p(c_138) = [4] p(c_139) = [1] p(c_140) = [1] p(c_141) = [1] p(c_142) = [4] p(c_143) = [1] x1 + [0] p(c_144) = [1] p(c_145) = [1] p(c_146) = [0] p(c_147) = [2] p(c_148) = [4] Following rules are strictly oriented: sub'#(@b1,@b2,@r) = [2] @b2 + [1] > [2] @b2 + [0] = c_49(sub'#1#(@b1,@b2,@r)) Following rules are (at-least) weakly oriented: bitToInt#(@b) = [0] >= [0] = c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) = [0] >= [0] = c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) = [0] >= [0] = c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) = [0] >= [0] = c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) = [0] >= [0] = c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) = [0] >= [0] = c_25(compare#(@xs,@ys)) mult#(@b1,@b2) = [0] >= [0] = c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) = [0] >= [0] = c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) = [2] @b2 + [1] @b3 + [1] >= [1] = c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) = [4] @b1 + [4] @b2 + [5] >= [2] @b2 + [1] = c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#1#(::(@x,@xs),@b2,@r) = [2] @b2 + [0] >= [2] @b2 + [0] = c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) = [2] @y + [2] @ys + [8] >= [2] @ys + [7] = c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) = [2] @ys + [7] >= [2] @ys + [2] = c_54(sub'#(@xs,@ys,@r')) ** Step 13.a:11: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)) - Weak DPs: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/1,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_18) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_25) = {1}, uargs(c_40) = {1}, uargs(c_41) = {1}, uargs(c_46) = {1,2}, uargs(c_47) = {1}, uargs(c_49) = {1}, uargs(c_50) = {1}, uargs(c_52) = {1}, uargs(c_54) = {1} Following symbols are considered usable: {add,add',add'#1,add'#2,add'#3,mult,mult#1,mult#2,mult#3,#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div# ,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'# ,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3# ,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub# ,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [1] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [0] p(#add) = [5] x1 + [2] p(#and) = [3] p(#ckgt) = [0] p(#cklt) = [0] p(#compare) = [0] p(#div) = [4] x1 + [0] p(#divByZero) = [0] p(#eq) = [0] p(#equal) = [3] x2 + [1] p(#false) = [0] p(#greater) = [0] p(#less) = [0] p(#mult) = [0] p(#natdiv) = [0] p(#natmult) = [1] x1 + [1] p(#natsub) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [1] p(#pred) = [1] x1 + [0] p(#s) = [0] p(#sub) = [0] p(#succ) = [3] p(#true) = [1] p(*) = [0] p(+) = [0] p(-) = [0] p(::) = [1] x2 + [2] p(add) = [1] x2 + [0] p(add') = [1] x2 + [0] p(add'#1) = [1] x2 + [0] p(add'#2) = [1] x1 + [0] p(add'#3) = [1] x3 + [2] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [0] p(div) = [0] p(leq) = [0] p(mod) = [0] p(mult) = [1] x1 + [0] p(mult#1) = [1] x1 + [0] p(mult#2) = [1] x1 + [0] p(mult#3) = [1] x3 + [0] p(mult3) = [0] p(nil) = [0] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [0] p(sub'#4) = [0] p(sub'#5) = [0] p(sum) = [0] p(sum#1) = [0] p(sum#2) = [2] x1 + [0] p(sum#3) = [0] p(sum#4) = [0] p(tuple#2) = [1] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#less#) = [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(add#) = [0] p(add'#) = [0] p(add'#1#) = [0] p(add'#2#) = [0] p(add'#3#) = [0] p(bitToInt#) = [1] p(bitToInt'#) = [0] p(bitToInt'#1#) = [0] p(compare#) = [0] p(compare#1#) = [0] p(compare#2#) = [0] p(compare#3#) = [0] p(compare#4#) = [0] p(compare#5#) = [0] p(compare#6#) = [0] p(diff#) = [0] p(diff#1#) = [0] p(div#) = [0] p(leq#) = [0] p(mod#) = [0] p(mult#) = [1] x1 + [0] p(mult#1#) = [1] x1 + [0] p(mult#2#) = [0] p(mult#3#) = [0] p(mult3#) = [6] x1 + [0] p(sub#) = [5] p(sub#1#) = [0] p(sub'#) = [0] p(sub'#1#) = [0] p(sub'#2#) = [0] p(sub'#3#) = [0] p(sub'#4#) = [0] p(sub'#5#) = [0] p(sum#) = [0] p(sum#1#) = [1] x1 + [0] p(sum#2#) = [0] p(sum#3#) = [0] p(sum#4#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [1] x1 + [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [2] x1 + [0] p(c_19) = [1] x1 + [0] p(c_20) = [1] x1 + [0] p(c_21) = [0] p(c_22) = [4] x1 + [0] p(c_23) = [4] x1 + [0] p(c_24) = [0] p(c_25) = [4] x1 + [0] p(c_26) = [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [0] p(c_30) = [0] p(c_31) = [0] p(c_32) = [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) = [1] x1 + [0] p(c_41) = [1] x1 + [1] p(c_42) = [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [0] p(c_46) = [4] x1 + [2] x2 + [0] p(c_47) = [4] x1 + [0] p(c_48) = [0] p(c_49) = [1] x1 + [0] p(c_50) = [2] x1 + [0] p(c_51) = [2] p(c_52) = [1] x1 + [0] p(c_53) = [0] p(c_54) = [1] x1 + [0] p(c_55) = [0] p(c_56) = [0] p(c_57) = [0] p(c_58) = [0] p(c_59) = [0] p(c_60) = [0] p(c_61) = [0] p(c_62) = [0] p(c_63) = [4] x2 + [0] p(c_64) = [1] x1 + [0] p(c_65) = [1] x1 + [1] x2 + [0] p(c_66) = [0] p(c_67) = [1] x1 + [0] p(c_68) = [1] x2 + [0] p(c_69) = [4] p(c_70) = [2] x1 + [1] x2 + [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) = [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [0] p(c_81) = [0] p(c_82) = [0] p(c_83) = [0] p(c_84) = [0] p(c_85) = [0] p(c_86) = [1] x1 + [0] p(c_87) = [0] p(c_88) = [0] p(c_89) = [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) = [2] x1 + [0] p(c_98) = [0] p(c_99) = [0] p(c_100) = [0] p(c_101) = [0] p(c_102) = [0] p(c_103) = [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) = [0] p(c_111) = [4] x1 + [0] p(c_112) = [0] p(c_113) = [0] p(c_114) = [4] x2 + [0] p(c_115) = [2] p(c_116) = [0] p(c_117) = [0] p(c_118) = [0] p(c_119) = [0] p(c_120) = [0] p(c_121) = [0] p(c_122) = [1] x1 + [1] x2 + [4] x3 + [1] p(c_123) = [2] p(c_124) = [0] p(c_125) = [0] p(c_126) = [4] p(c_127) = [4] x1 + [0] p(c_128) = [4] x1 + [0] p(c_129) = [0] p(c_130) = [1] p(c_131) = [1] x1 + [0] p(c_132) = [1] p(c_133) = [1] x2 + [0] p(c_134) = [2] p(c_135) = [1] p(c_136) = [0] p(c_137) = [0] p(c_138) = [2] p(c_139) = [2] p(c_140) = [0] p(c_141) = [1] p(c_142) = [1] p(c_143) = [4] x1 + [1] p(c_144) = [2] x1 + [0] p(c_145) = [1] p(c_146) = [0] p(c_147) = [0] p(c_148) = [1] Following rules are strictly oriented: mult#1#(::(@x,@xs),@b2) = [1] @xs + [2] > [1] @xs + [1] = c_41(mult#(@xs,@b2)) Following rules are (at-least) weakly oriented: bitToInt#(@b) = [1] >= [0] = c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) = [0] >= [0] = c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) = [0] >= [0] = c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) = [0] >= [0] = c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) = [0] >= [0] = c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) = [0] >= [0] = c_25(compare#(@xs,@ys)) mult#(@b1,@b2) = [1] @b1 + [0] >= [1] @b1 + [0] = c_40(mult#1#(@b1,@b2)) mult3#(@b1,@b2,@b3) = [6] @b1 + [0] >= [6] @b1 + [0] = c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) = [5] >= [0] = c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) = [0] >= [0] = c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) = [0] >= [0] = c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) = [0] >= [0] = c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) = [0] >= [0] = c_54(sub'#(@xs,@ys,@r')) add(@b1,@b2) = [1] @b2 + [0] >= [1] @b2 + [0] = add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) = [1] @b2 + [0] >= [1] @b2 + [0] = add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) = [1] @b2 + [0] >= [1] @b2 + [0] = add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) = [1] @b2 + [0] >= [0] = nil() add'#2(::(@y,@ys),@r,@x,@xs) = [1] @ys + [2] >= [1] @ys + [2] = add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) = [0] >= [0] = nil() add'#3(tuple#2(@z,@r'),@xs,@ys) = [1] @ys + [2] >= [1] @ys + [2] = ::(@z,add'(@xs,@ys,@r')) mult(@b1,@b2) = [1] @b1 + [0] >= [1] @b1 + [0] = mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) = [1] @xs + [2] >= [1] @xs + [2] = mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) = [0] >= [0] = nil() mult#2(@zs,@b2,@x) = [1] @zs + [0] >= [1] @zs + [0] = mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) = [1] @zs + [0] >= [1] @zs + [0] = @zs mult#3(#true(),@b2,@zs) = [1] @zs + [0] >= [1] @zs + [0] = add(@b2,@zs) ** Step 13.a:12: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) - Weak DPs: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/1,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_18) = {1}, uargs(c_19) = {1}, uargs(c_20) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_25) = {1}, uargs(c_40) = {1}, uargs(c_41) = {1}, uargs(c_46) = {1,2}, uargs(c_47) = {1}, uargs(c_49) = {1}, uargs(c_50) = {1}, uargs(c_52) = {1}, uargs(c_54) = {1} Following symbols are considered usable: {add,add',add'#1,add'#2,add'#3,mult,mult#1,mult#2,mult#3,#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div# ,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'# ,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3# ,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub# ,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [0] p(#EQ) = [2] p(#GT) = [0] p(#LT) = [5] p(#abs) = [0] p(#add) = [0] p(#and) = [0] p(#ckgt) = [0] p(#cklt) = [2] x1 + [0] p(#compare) = [0] p(#div) = [0] p(#divByZero) = [0] p(#eq) = [2] p(#equal) = [3] x2 + [0] p(#false) = [0] p(#greater) = [0] p(#less) = [0] p(#mult) = [3] p(#natdiv) = [0] p(#natmult) = [0] p(#natsub) = [7] p(#neg) = [5] p(#pos) = [1] x1 + [2] p(#pred) = [0] p(#s) = [2] p(#sub) = [0] p(#succ) = [0] p(#true) = [5] p(*) = [0] p(+) = [3] p(-) = [0] p(::) = [1] x2 + [1] p(add) = [1] x2 + [0] p(add') = [1] x2 + [0] p(add'#1) = [1] x2 + [0] p(add'#2) = [1] x1 + [0] p(add'#3) = [1] x3 + [1] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [0] p(div) = [0] p(leq) = [0] p(mod) = [1] p(mult) = [4] x1 + [1] p(mult#1) = [4] x1 + [1] p(mult#2) = [1] x1 + [2] p(mult#3) = [1] x3 + [2] p(mult3) = [0] p(nil) = [0] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [0] p(sub'#4) = [0] p(sub'#5) = [0] p(sum) = [0] p(sum#1) = [1] x1 + [0] p(sum#2) = [2] x1 + [0] p(sum#3) = [0] p(sum#4) = [0] p(tuple#2) = [1] x1 + [4] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#less#) = [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(add#) = [0] p(add'#) = [0] p(add'#1#) = [0] p(add'#2#) = [0] p(add'#3#) = [0] p(bitToInt#) = [0] p(bitToInt'#) = [0] p(bitToInt'#1#) = [0] p(compare#) = [0] p(compare#1#) = [0] p(compare#2#) = [0] p(compare#3#) = [0] p(compare#4#) = [0] p(compare#5#) = [0] p(compare#6#) = [0] p(diff#) = [0] p(diff#1#) = [0] p(div#) = [0] p(leq#) = [0] p(mod#) = [0] p(mult#) = [1] x1 + [1] p(mult#1#) = [1] x1 + [0] p(mult#2#) = [0] p(mult#3#) = [0] p(mult3#) = [5] x1 + [4] x2 + [3] p(sub#) = [1] x1 + [4] x2 + [4] p(sub#1#) = [0] p(sub'#) = [1] x1 + [4] x2 + [1] p(sub'#1#) = [1] x1 + [4] x2 + [0] p(sub'#2#) = [4] x1 + [1] x4 + [0] p(sub'#3#) = [1] x2 + [4] x3 + [3] p(sub'#4#) = [0] p(sub'#5#) = [0] p(sum#) = [0] p(sum#1#) = [0] p(sum#2#) = [0] p(sum#3#) = [0] p(sum#4#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [1] x1 + [0] p(c_19) = [4] x1 + [0] p(c_20) = [2] x1 + [0] p(c_21) = [0] p(c_22) = [4] x1 + [0] p(c_23) = [4] x1 + [0] p(c_24) = [0] p(c_25) = [4] x1 + [0] p(c_26) = [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [0] p(c_30) = [1] x1 + [1] x2 + [0] p(c_31) = [0] p(c_32) = [0] p(c_33) = [1] x1 + [0] p(c_34) = [1] x4 + [1] x5 + [0] p(c_35) = [0] p(c_36) = [0] p(c_37) = [0] p(c_38) = [2] p(c_39) = [4] x1 + [1] x2 + [2] x3 + [1] p(c_40) = [1] x1 + [0] p(c_41) = [1] x1 + [0] p(c_42) = [4] p(c_43) = [0] p(c_44) = [2] p(c_45) = [1] p(c_46) = [1] x1 + [1] x2 + [0] p(c_47) = [1] x1 + [0] p(c_48) = [1] p(c_49) = [1] x1 + [0] p(c_50) = [1] x1 + [1] p(c_51) = [2] p(c_52) = [1] x1 + [1] p(c_53) = [1] p(c_54) = [1] x1 + [2] p(c_55) = [2] p(c_56) = [1] p(c_57) = [1] x1 + [0] p(c_58) = [0] p(c_59) = [1] x2 + [0] p(c_60) = [1] x1 + [2] p(c_61) = [4] x1 + [4] p(c_62) = [1] x2 + [0] p(c_63) = [0] p(c_64) = [1] x1 + [2] p(c_65) = [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [0] p(c_69) = [1] x1 + [2] p(c_70) = [1] x1 + [4] x2 + [4] p(c_71) = [0] p(c_72) = [0] p(c_73) = [1] p(c_74) = [0] p(c_75) = [1] p(c_76) = [0] p(c_77) = [0] p(c_78) = [1] p(c_79) = [1] p(c_80) = [0] p(c_81) = [0] p(c_82) = [1] p(c_83) = [0] p(c_84) = [4] p(c_85) = [2] p(c_86) = [1] x1 + [1] p(c_87) = [4] p(c_88) = [4] p(c_89) = [0] p(c_90) = [0] p(c_91) = [2] p(c_92) = [0] p(c_93) = [1] p(c_94) = [4] p(c_95) = [0] p(c_96) = [1] p(c_97) = [2] p(c_98) = [0] p(c_99) = [2] p(c_100) = [2] p(c_101) = [1] x1 + [1] p(c_102) = [0] p(c_103) = [1] p(c_104) = [0] p(c_105) = [0] p(c_106) = [2] p(c_107) = [0] p(c_108) = [1] p(c_109) = [0] p(c_110) = [1] p(c_111) = [2] x1 + [0] p(c_112) = [0] p(c_113) = [0] p(c_114) = [2] x1 + [1] x2 + [1] p(c_115) = [0] p(c_116) = [1] p(c_117) = [4] p(c_118) = [0] p(c_119) = [0] p(c_120) = [1] p(c_121) = [0] p(c_122) = [2] x2 + [2] p(c_123) = [4] p(c_124) = [0] p(c_125) = [0] p(c_126) = [1] p(c_127) = [2] x1 + [0] p(c_128) = [4] p(c_129) = [0] p(c_130) = [2] p(c_131) = [0] p(c_132) = [0] p(c_133) = [0] p(c_134) = [2] p(c_135) = [4] x1 + [1] p(c_136) = [4] p(c_137) = [0] p(c_138) = [0] p(c_139) = [1] p(c_140) = [1] p(c_141) = [0] p(c_142) = [0] p(c_143) = [2] x1 + [0] p(c_144) = [1] x1 + [2] p(c_145) = [2] p(c_146) = [0] p(c_147) = [2] p(c_148) = [1] Following rules are strictly oriented: mult#(@b1,@b2) = [1] @b1 + [1] > [1] @b1 + [0] = c_40(mult#1#(@b1,@b2)) Following rules are (at-least) weakly oriented: bitToInt#(@b) = [0] >= [0] = c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) = [0] >= [0] = c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) = [0] >= [0] = c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) = [0] >= [0] = c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) = [0] >= [0] = c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) = [0] >= [0] = c_25(compare#(@xs,@ys)) mult#1#(::(@x,@xs),@b2) = [1] @xs + [1] >= [1] @xs + [1] = c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) = [5] @b1 + [4] @b2 + [3] >= [5] @b1 + [3] = c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) = [1] @b1 + [4] @b2 + [4] >= [1] @b1 + [4] @b2 + [1] = c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) = [1] @b1 + [4] @b2 + [1] >= [1] @b1 + [4] @b2 + [0] = c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) = [4] @b2 + [1] @xs + [1] >= [4] @b2 + [1] @xs + [1] = c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) = [1] @xs + [4] @ys + [4] >= [1] @xs + [4] @ys + [4] = c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) = [1] @xs + [4] @ys + [3] >= [1] @xs + [4] @ys + [3] = c_54(sub'#(@xs,@ys,@r')) add(@b1,@b2) = [1] @b2 + [0] >= [1] @b2 + [0] = add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) = [1] @b2 + [0] >= [1] @b2 + [0] = add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) = [1] @b2 + [0] >= [1] @b2 + [0] = add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) = [1] @b2 + [0] >= [0] = nil() add'#2(::(@y,@ys),@r,@x,@xs) = [1] @ys + [1] >= [1] @ys + [1] = add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) = [0] >= [0] = nil() add'#3(tuple#2(@z,@r'),@xs,@ys) = [1] @ys + [1] >= [1] @ys + [1] = ::(@z,add'(@xs,@ys,@r')) mult(@b1,@b2) = [4] @b1 + [1] >= [4] @b1 + [1] = mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) = [4] @xs + [5] >= [4] @xs + [4] = mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) = [1] >= [0] = nil() mult#2(@zs,@b2,@x) = [1] @zs + [2] >= [1] @zs + [2] = mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) = [1] @zs + [2] >= [1] @zs + [0] = @zs mult#3(#true(),@b2,@zs) = [1] @zs + [2] >= [1] @zs + [0] = add(@b2,@zs) ** Step 13.a:13: EmptyProcessor. WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0()))))) bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)) bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))) compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)) compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)) compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)) mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)) mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)) mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2)) sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0()))) sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)) sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs)) sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys)) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r')) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/1,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). ** Step 13.b:1: RemoveWeakSuffixes. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) - Weak DPs: bitToInt#(@b) -> bitToInt'#(@b,#abs(#pos(#s(#0())))) bitToInt'#(@b,@n) -> bitToInt'#1#(@b,@n) bitToInt'#1#(::(@x,@xs),@n) -> bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) compare#(@b1,@b2) -> compare#1#(@b1,@b2) compare#1#(::(@x,@xs),@b2) -> compare#2#(@b2,@x,@xs) compare#2#(::(@y,@ys),@x,@xs) -> compare#(@xs,@ys) mult#(@b1,@b2) -> mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult3#(@b1,@b2,@b3) -> mult#(@b1,@b2) mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) sub#(@b1,@b2) -> sub'#(@b1,@b2,#abs(#0())) sub'#(@b1,@b2,@r) -> sub'#1#(@b1,@b2,@r) sub'#1#(::(@x,@xs),@b2,@r) -> sub'#2#(@b2,@r,@x,@xs) sub'#2#(::(@y,@ys),@r,@x,@xs) -> sub'#3#(diff(@x,@y,@r),@xs,@ys) sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> sub'#(@xs,@ys,@r') - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) -->_1 add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)):2 2:S:add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) -->_1 add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)):3 3:S:add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) -->_1 add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)):4 4:S:add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) -->_1 add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')):5 5:S:add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) -->_1 add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)):2 6:S:mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) -->_1 mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)):7 7:S:mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) -->_1 add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))):1 8:W:bitToInt#(@b) -> bitToInt'#(@b,#abs(#pos(#s(#0())))) -->_1 bitToInt'#(@b,@n) -> bitToInt'#1#(@b,@n):9 9:W:bitToInt'#(@b,@n) -> bitToInt'#1#(@b,@n) -->_1 bitToInt'#1#(::(@x,@xs),@n) -> bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))):10 10:W:bitToInt'#1#(::(@x,@xs),@n) -> bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) -->_1 bitToInt'#(@b,@n) -> bitToInt'#1#(@b,@n):9 11:W:compare#(@b1,@b2) -> compare#1#(@b1,@b2) -->_1 compare#1#(::(@x,@xs),@b2) -> compare#2#(@b2,@x,@xs):12 12:W:compare#1#(::(@x,@xs),@b2) -> compare#2#(@b2,@x,@xs) -->_1 compare#2#(::(@y,@ys),@x,@xs) -> compare#(@xs,@ys):13 13:W:compare#2#(::(@y,@ys),@x,@xs) -> compare#(@xs,@ys) -->_1 compare#(@b1,@b2) -> compare#1#(@b1,@b2):11 14:W:mult#(@b1,@b2) -> mult#1#(@b1,@b2) -->_1 mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x):16 -->_1 mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2):15 15:W:mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) -->_1 mult#(@b1,@b2) -> mult#1#(@b1,@b2):14 16:W:mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) -->_1 mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)):6 17:W:mult3#(@b1,@b2,@b3) -> mult#(@b1,@b2) -->_1 mult#(@b1,@b2) -> mult#1#(@b1,@b2):14 18:W:mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) -->_1 mult#(@b1,@b2) -> mult#1#(@b1,@b2):14 19:W:sub#(@b1,@b2) -> sub'#(@b1,@b2,#abs(#0())) -->_1 sub'#(@b1,@b2,@r) -> sub'#1#(@b1,@b2,@r):20 20:W:sub'#(@b1,@b2,@r) -> sub'#1#(@b1,@b2,@r) -->_1 sub'#1#(::(@x,@xs),@b2,@r) -> sub'#2#(@b2,@r,@x,@xs):21 21:W:sub'#1#(::(@x,@xs),@b2,@r) -> sub'#2#(@b2,@r,@x,@xs) -->_1 sub'#2#(::(@y,@ys),@r,@x,@xs) -> sub'#3#(diff(@x,@y,@r),@xs,@ys):22 22:W:sub'#2#(::(@y,@ys),@r,@x,@xs) -> sub'#3#(diff(@x,@y,@r),@xs,@ys) -->_1 sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> sub'#(@xs,@ys,@r'):23 23:W:sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> sub'#(@xs,@ys,@r') -->_1 sub'#(@b1,@b2,@r) -> sub'#1#(@b1,@b2,@r):20 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 19: sub#(@b1,@b2) -> sub'#(@b1,@b2,#abs(#0())) 20: sub'#(@b1,@b2,@r) -> sub'#1#(@b1,@b2,@r) 23: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> sub'#(@xs,@ys,@r') 22: sub'#2#(::(@y,@ys),@r,@x,@xs) -> sub'#3#(diff(@x,@y,@r),@xs,@ys) 21: sub'#1#(::(@x,@xs),@b2,@r) -> sub'#2#(@b2,@r,@x,@xs) 11: compare#(@b1,@b2) -> compare#1#(@b1,@b2) 13: compare#2#(::(@y,@ys),@x,@xs) -> compare#(@xs,@ys) 12: compare#1#(::(@x,@xs),@b2) -> compare#2#(@b2,@x,@xs) 8: bitToInt#(@b) -> bitToInt'#(@b,#abs(#pos(#s(#0())))) 9: bitToInt'#(@b,@n) -> bitToInt'#1#(@b,@n) 10: bitToInt'#1#(::(@x,@xs),@n) -> bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))) ** Step 13.b:2: RemoveHeads. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) - Weak DPs: mult#(@b1,@b2) -> mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult3#(@b1,@b2,@b3) -> mult#(@b1,@b2) mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: RemoveHeads + Details: Consider the dependency graph 1:S:add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) -->_1 add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)):2 2:S:add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) -->_1 add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)):3 3:S:add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) -->_1 add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)):4 4:S:add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) -->_1 add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')):5 5:S:add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) -->_1 add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)):2 6:S:mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) -->_1 mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)):7 7:S:mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) -->_1 add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))):1 14:W:mult#(@b1,@b2) -> mult#1#(@b1,@b2) -->_1 mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x):16 -->_1 mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2):15 15:W:mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) -->_1 mult#(@b1,@b2) -> mult#1#(@b1,@b2):14 16:W:mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) -->_1 mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)):6 17:W:mult3#(@b1,@b2,@b3) -> mult#(@b1,@b2) -->_1 mult#(@b1,@b2) -> mult#1#(@b1,@b2):14 18:W:mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) -->_1 mult#(@b1,@b2) -> mult#1#(@b1,@b2):14 Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts). [(17,mult3#(@b1,@b2,@b3) -> mult#(@b1,@b2))] ** Step 13.b:3: UsableRules. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) - Weak DPs: mult#(@b1,@b2) -> mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #cklt(#EQ()) -> #false() #cklt(#GT()) -> #false() #cklt(#LT()) -> #true() #compare(#0(),#0()) -> #EQ() #compare(#0(),#neg(@y)) -> #GT() #compare(#0(),#pos(@y)) -> #LT() #compare(#0(),#s(@y)) -> #LT() #compare(#neg(@x),#0()) -> #LT() #compare(#neg(@x),#neg(@y)) -> #compare(@y,@x) #compare(#neg(@x),#pos(@y)) -> #LT() #compare(#pos(@x),#0()) -> #GT() #compare(#pos(@x),#neg(@y)) -> #GT() #compare(#pos(@x),#pos(@y)) -> #compare(@x,@y) #compare(#s(@x),#0()) -> #GT() #compare(#s(@x),#s(@y)) -> #compare(@x,@y) #div(#0(),#0()) -> #divByZero() #div(#0(),#neg(@y)) -> #0() #div(#0(),#pos(@y)) -> #0() #div(#neg(@x),#0()) -> #divByZero() #div(#neg(@x),#neg(@y)) -> #pos(#natdiv(@x,@y)) #div(#neg(@x),#pos(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#0()) -> #divByZero() #div(#pos(@x),#neg(@y)) -> #neg(#natdiv(@x,@y)) #div(#pos(@x),#pos(@y)) -> #pos(#natdiv(@x,@y)) #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #less(@x,@y) -> #cklt(#compare(@x,@y)) #mult(#0(),#0()) -> #0() #mult(#0(),#neg(@y)) -> #0() #mult(#0(),#pos(@y)) -> #0() #mult(#neg(@x),#0()) -> #0() #mult(#neg(@x),#neg(@y)) -> #pos(#natmult(@x,@y)) #mult(#neg(@x),#pos(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#0()) -> #0() #mult(#pos(@x),#neg(@y)) -> #neg(#natmult(@x,@y)) #mult(#pos(@x),#pos(@y)) -> #pos(#natmult(@x,@y)) #natdiv(#0(),#0()) -> #divByZero() #natdiv(#s(@x),#s(@y)) -> #s(#natdiv(#natsub(@x,@y),#s(@y))) #natmult(#0(),@y) -> #0() #natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@y)) #natsub(@x,#0()) -> @x #natsub(#s(@x),#s(@y)) -> #natsub(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #sub(@x,#0()) -> @x #sub(@x,#neg(@y)) -> #add(@x,#pos(@y)) #sub(@x,#pos(@y)) -> #add(@x,#neg(@y)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) -(@x,@y) -> #sub(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) diff(@x,@y,@r) -> tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0()))) diff#1(#false()) -> #abs(#0()) diff#1(#true()) -> #abs(#pos(#s(#0()))) div(@x,@y) -> #div(@x,@y) mod(@x,@y) -> -(@x,*(@x,div(@x,@y))) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) mult#(@b1,@b2) -> mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) ** Step 13.b:4: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) - Weak DPs: mult#(@b1,@b2) -> mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_17) = {1}, uargs(c_43) = {1}, uargs(c_45) = {1} Following symbols are considered usable: {add,add',add'#1,add'#2,add'#3,mult,mult#1,mult#2,mult#3,#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div# ,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'# ,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3# ,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub# ,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [0] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [2] p(#add) = [2] x1 + [2] p(#and) = [2] x1 + [1] x2 + [6] p(#ckgt) = [0] p(#cklt) = [0] p(#compare) = [0] p(#div) = [0] p(#divByZero) = [0] p(#eq) = [2] p(#equal) = [4] x2 + [3] p(#false) = [0] p(#greater) = [0] p(#less) = [4] x2 + [0] p(#mult) = [1] x1 + [0] p(#natdiv) = [2] x1 + [4] x2 + [2] p(#natmult) = [1] x2 + [0] p(#natsub) = [1] p(#neg) = [1] p(#pos) = [3] p(#pred) = [1] x1 + [1] p(#s) = [2] p(#sub) = [0] p(#succ) = [5] p(#true) = [0] p(*) = [1] x1 + [0] p(+) = [1] p(-) = [2] x1 + [4] x2 + [4] p(::) = [1] x2 + [0] p(add) = [0] p(add') = [0] p(add'#1) = [0] p(add'#2) = [0] p(add'#3) = [0] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [2] x1 + [2] p(div) = [1] x1 + [0] p(leq) = [1] p(mod) = [2] x1 + [1] x2 + [1] p(mult) = [1] x2 + [2] p(mult#1) = [1] x2 + [2] p(mult#2) = [1] x1 + [0] p(mult#3) = [1] x3 + [0] p(mult3) = [2] x1 + [1] x3 + [2] p(nil) = [0] p(sub) = [1] x2 + [2] p(sub#1) = [1] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [1] p(sub'#3) = [1] x1 + [0] p(sub'#4) = [0] p(sub'#5) = [4] x2 + [0] p(sum) = [1] x1 + [4] x2 + [0] p(sum#1) = [1] x1 + [2] p(sum#2) = [0] p(sum#3) = [0] p(sum#4) = [0] p(tuple#2) = [1] x2 + [4] p(#abs#) = [1] p(#add#) = [1] x2 + [1] p(#and#) = [1] p(#ckgt#) = [0] p(#cklt#) = [1] x1 + [0] p(#compare#) = [0] p(#div#) = [1] x1 + [2] x2 + [1] p(#eq#) = [2] x1 + [2] p(#equal#) = [4] x2 + [1] p(#greater#) = [1] x2 + [1] p(#less#) = [1] x2 + [0] p(#mult#) = [1] p(#natdiv#) = [0] p(#natmult#) = [0] p(#natsub#) = [1] x1 + [1] p(#pred#) = [4] x1 + [0] p(#sub#) = [1] p(#succ#) = [1] x1 + [1] p(*#) = [4] x1 + [2] x2 + [1] p(+#) = [4] x1 + [0] p(-#) = [4] p(add#) = [0] p(add'#) = [0] p(add'#1#) = [0] p(add'#2#) = [0] p(add'#3#) = [0] p(bitToInt#) = [0] p(bitToInt'#) = [0] p(bitToInt'#1#) = [2] x2 + [0] p(compare#) = [1] x2 + [1] p(compare#1#) = [0] p(compare#2#) = [1] x1 + [4] x2 + [0] p(compare#3#) = [1] x1 + [0] p(compare#4#) = [0] p(compare#5#) = [2] x2 + [0] p(compare#6#) = [2] x1 + [0] p(diff#) = [1] p(diff#1#) = [0] p(div#) = [1] x1 + [2] p(leq#) = [1] x2 + [0] p(mod#) = [1] x1 + [1] p(mult#) = [4] x2 + [5] p(mult#1#) = [4] x2 + [5] p(mult#2#) = [2] x1 + [2] x2 + [1] p(mult#3#) = [1] x2 + [0] p(mult3#) = [6] x2 + [5] p(sub#) = [1] x1 + [1] x2 + [0] p(sub#1#) = [2] x1 + [0] p(sub'#) = [1] x1 + [1] x2 + [4] p(sub'#1#) = [4] x2 + [0] p(sub'#2#) = [2] x3 + [1] p(sub'#3#) = [1] x1 + [0] p(sub'#4#) = [1] x2 + [0] p(sub'#5#) = [2] x2 + [4] p(sum#) = [1] p(sum#1#) = [0] p(sum#2#) = [4] x1 + [1] p(sum#3#) = [4] x1 + [0] p(sum#4#) = [1] p(c_1) = [1] p(c_2) = [4] p(c_3) = [4] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [4] x1 + [2] x2 + [0] p(c_8) = [1] x1 + [0] p(c_9) = [1] x1 + [2] p(c_10) = [1] x1 + [1] p(c_11) = [1] x1 + [0] p(c_12) = [4] x1 + [0] p(c_13) = [4] x1 + [0] p(c_14) = [0] p(c_15) = [2] x1 + [0] p(c_16) = [0] p(c_17) = [2] x1 + [0] p(c_18) = [1] p(c_19) = [1] p(c_20) = [4] x1 + [0] p(c_21) = [0] p(c_22) = [0] p(c_23) = [1] x1 + [4] p(c_24) = [2] x1 + [1] p(c_25) = [1] x1 + [0] p(c_26) = [1] p(c_27) = [2] x1 + [4] p(c_28) = [4] p(c_29) = [1] x1 + [1] p(c_30) = [1] x1 + [4] p(c_31) = [4] x1 + [1] p(c_32) = [1] p(c_33) = [1] x1 + [0] p(c_34) = [1] x3 + [1] x6 + [1] x7 + [2] p(c_35) = [0] p(c_36) = [4] x1 + [1] p(c_37) = [1] p(c_38) = [1] x1 + [1] p(c_39) = [0] p(c_40) = [4] p(c_41) = [1] x1 + [2] p(c_42) = [0] p(c_43) = [2] x1 + [0] p(c_44) = [0] p(c_45) = [4] x1 + [0] p(c_46) = [4] p(c_47) = [1] x1 + [1] p(c_48) = [1] p(c_49) = [1] x1 + [2] p(c_50) = [0] p(c_51) = [2] p(c_52) = [4] p(c_53) = [1] p(c_54) = [2] p(c_55) = [0] p(c_56) = [2] p(c_57) = [1] x1 + [2] p(c_58) = [1] x2 + [1] x3 + [1] p(c_59) = [4] x1 + [0] p(c_60) = [2] x1 + [1] p(c_61) = [1] x1 + [1] p(c_62) = [1] x2 + [1] p(c_63) = [1] x1 + [2] x2 + [1] p(c_64) = [1] p(c_65) = [4] p(c_66) = [0] p(c_67) = [1] x1 + [0] p(c_68) = [0] p(c_69) = [2] x1 + [0] p(c_70) = [4] x1 + [1] x2 + [1] p(c_71) = [2] p(c_72) = [2] p(c_73) = [1] p(c_74) = [0] p(c_75) = [1] p(c_76) = [1] p(c_77) = [1] p(c_78) = [0] p(c_79) = [0] p(c_80) = [2] p(c_81) = [0] p(c_82) = [0] p(c_83) = [0] p(c_84) = [2] p(c_85) = [1] p(c_86) = [0] p(c_87) = [0] p(c_88) = [0] p(c_89) = [1] p(c_90) = [2] x1 + [0] p(c_91) = [0] p(c_92) = [2] x1 + [0] p(c_93) = [0] p(c_94) = [2] p(c_95) = [1] p(c_96) = [1] p(c_97) = [1] x1 + [0] p(c_98) = [1] x1 + [1] p(c_99) = [0] p(c_100) = [1] x1 + [1] p(c_101) = [0] p(c_102) = [0] p(c_103) = [1] p(c_104) = [1] p(c_105) = [2] p(c_106) = [1] p(c_107) = [1] p(c_108) = [2] p(c_109) = [0] p(c_110) = [1] p(c_111) = [0] p(c_112) = [0] p(c_113) = [0] p(c_114) = [0] p(c_115) = [4] p(c_116) = [2] p(c_117) = [0] p(c_118) = [2] p(c_119) = [0] p(c_120) = [0] p(c_121) = [0] p(c_122) = [2] p(c_123) = [0] p(c_124) = [2] p(c_125) = [4] p(c_126) = [1] p(c_127) = [2] p(c_128) = [1] p(c_129) = [1] p(c_130) = [1] x1 + [2] p(c_131) = [2] p(c_132) = [0] p(c_133) = [1] x1 + [1] x2 + [1] p(c_134) = [1] p(c_135) = [1] x2 + [0] p(c_136) = [1] p(c_137) = [0] p(c_138) = [1] p(c_139) = [4] p(c_140) = [0] p(c_141) = [0] p(c_142) = [1] p(c_143) = [2] x1 + [4] p(c_144) = [1] x1 + [1] p(c_145) = [1] p(c_146) = [1] p(c_147) = [1] p(c_148) = [0] Following rules are strictly oriented: mult#2#(@zs,@b2,@x) = [2] @b2 + [2] @zs + [1] > [2] @b2 + [0] = c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) Following rules are (at-least) weakly oriented: add#(@b1,@b2) = [0] >= [0] = c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) = [0] >= [0] = c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) = [0] >= [0] = c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) = [0] >= [0] = c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) = [0] >= [0] = c_17(add'#(@xs,@ys,@r')) mult#(@b1,@b2) = [4] @b2 + [5] >= [4] @b2 + [5] = mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) = [4] @b2 + [5] >= [4] @b2 + [5] = mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) = [4] @b2 + [5] >= [4] @b2 + [5] = mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#3#(#true(),@b2,@zs) = [1] @b2 + [0] >= [0] = c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) = [6] @b2 + [5] >= [4] @b2 + [5] = mult#(mult(@b1,@b2),@b2) add(@b1,@b2) = [0] >= [0] = add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) = [0] >= [0] = add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) = [0] >= [0] = add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) = [0] >= [0] = nil() add'#2(::(@y,@ys),@r,@x,@xs) = [0] >= [0] = add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) = [0] >= [0] = nil() add'#3(tuple#2(@z,@r'),@xs,@ys) = [0] >= [0] = ::(@z,add'(@xs,@ys,@r')) mult(@b1,@b2) = [1] @b2 + [2] >= [1] @b2 + [2] = mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) = [1] @b2 + [2] >= [1] @b2 + [2] = mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) = [1] @b2 + [2] >= [0] = nil() mult#2(@zs,@b2,@x) = [1] @zs + [0] >= [1] @zs + [0] = mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) = [1] @zs + [0] >= [1] @zs + [0] = @zs mult#3(#true(),@b2,@zs) = [1] @zs + [0] >= [0] = add(@b2,@zs) ** Step 13.b:5: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) - Weak DPs: mult#(@b1,@b2) -> mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_17) = {1}, uargs(c_43) = {1}, uargs(c_45) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1# ,compare#,compare#1#,compare#2#,compare#3#,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod# ,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1# ,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [0] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [3] p(#add) = [0] p(#and) = [1] x1 + [5] p(#ckgt) = [0] p(#cklt) = [0] p(#compare) = [0] p(#div) = [0] p(#divByZero) = [0] p(#eq) = [4] x2 + [1] p(#equal) = [0] p(#false) = [0] p(#greater) = [0] p(#less) = [0] p(#mult) = [0] p(#natdiv) = [0] p(#natmult) = [0] p(#natsub) = [0] p(#neg) = [0] p(#pos) = [0] p(#pred) = [0] p(#s) = [0] p(#sub) = [0] p(#succ) = [0] p(#true) = [2] p(*) = [0] p(+) = [0] p(-) = [0] p(::) = [1] p(add) = [0] p(add') = [0] p(add'#1) = [0] p(add'#2) = [4] x1 + [0] p(add'#3) = [4] x1 + [0] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [0] p(div) = [0] p(leq) = [0] p(mod) = [0] p(mult) = [0] p(mult#1) = [0] p(mult#2) = [3] x1 + [4] p(mult#3) = [7] p(mult3) = [0] p(nil) = [1] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [0] p(sub'#4) = [0] p(sub'#5) = [0] p(sum) = [2] x3 + [0] p(sum#1) = [0] p(sum#2) = [0] p(sum#3) = [3] p(sum#4) = [0] p(tuple#2) = [1] x2 + [2] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#less#) = [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(add#) = [1] p(add'#) = [0] p(add'#1#) = [0] p(add'#2#) = [0] p(add'#3#) = [0] p(bitToInt#) = [0] p(bitToInt'#) = [0] p(bitToInt'#1#) = [0] p(compare#) = [0] p(compare#1#) = [0] p(compare#2#) = [0] p(compare#3#) = [0] p(compare#4#) = [1] x3 + [0] p(compare#5#) = [0] p(compare#6#) = [0] p(diff#) = [0] p(diff#1#) = [0] p(div#) = [0] p(leq#) = [0] p(mod#) = [0] p(mult#) = [4] x2 + [7] p(mult#1#) = [4] x2 + [7] p(mult#2#) = [4] x2 + [6] p(mult#3#) = [1] p(mult3#) = [4] x2 + [7] p(sub#) = [0] p(sub#1#) = [0] p(sub'#) = [0] p(sub'#1#) = [0] p(sub'#2#) = [0] p(sub'#3#) = [0] p(sub'#4#) = [0] p(sub'#5#) = [0] p(sum#) = [0] p(sum#1#) = [0] p(sum#2#) = [0] p(sum#3#) = [0] p(sum#4#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [4] x1 + [0] p(c_12) = [1] x1 + [0] p(c_13) = [1] x1 + [0] p(c_14) = [0] p(c_15) = [1] x1 + [0] p(c_16) = [0] p(c_17) = [4] x1 + [0] p(c_18) = [0] p(c_19) = [0] p(c_20) = [1] x1 + [0] p(c_21) = [4] x1 + [0] p(c_22) = [0] p(c_23) = [0] p(c_24) = [2] x1 + [0] p(c_25) = [4] x1 + [0] p(c_26) = [1] x1 + [0] p(c_27) = [1] x1 + [0] p(c_28) = [0] p(c_29) = [0] p(c_30) = [0] p(c_31) = [0] p(c_32) = [0] p(c_33) = [0] p(c_34) = [1] x1 + [0] p(c_35) = [1] x1 + [0] p(c_36) = [0] p(c_37) = [1] x1 + [0] p(c_38) = [2] x1 + [0] p(c_39) = [4] x1 + [4] x3 + [0] p(c_40) = [0] p(c_41) = [2] x2 + [0] p(c_42) = [0] p(c_43) = [4] x1 + [2] p(c_44) = [0] p(c_45) = [1] x1 + [0] p(c_46) = [0] p(c_47) = [0] p(c_48) = [0] p(c_49) = [2] x1 + [0] p(c_50) = [4] x1 + [0] p(c_51) = [0] p(c_52) = [0] p(c_53) = [0] p(c_54) = [0] p(c_55) = [1] x1 + [0] p(c_56) = [0] p(c_57) = [1] x1 + [0] p(c_58) = [1] x3 + [0] p(c_59) = [2] x1 + [1] x2 + [0] p(c_60) = [1] x1 + [0] p(c_61) = [1] x1 + [0] p(c_62) = [1] x1 + [0] p(c_63) = [4] x1 + [0] p(c_64) = [1] x1 + [4] x2 + [0] p(c_65) = [1] x1 + [2] x2 + [0] p(c_66) = [0] p(c_67) = [1] x1 + [0] p(c_68) = [1] x1 + [1] x2 + [0] p(c_69) = [1] x1 + [0] p(c_70) = [2] x2 + [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) = [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [0] p(c_81) = [0] p(c_82) = [0] p(c_83) = [0] p(c_84) = [0] p(c_85) = [0] p(c_86) = [1] x1 + [0] p(c_87) = [0] p(c_88) = [0] p(c_89) = [0] p(c_90) = [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) = [1] x1 + [0] p(c_98) = [1] x1 + [0] p(c_99) = [0] p(c_100) = [0] p(c_101) = [0] p(c_102) = [0] p(c_103) = [0] p(c_104) = [0] p(c_105) = [0] p(c_106) = [0] p(c_107) = [1] x1 + [0] p(c_108) = [0] p(c_109) = [0] p(c_110) = [0] p(c_111) = [1] x1 + [0] p(c_112) = [0] p(c_113) = [4] x1 + [0] p(c_114) = [1] x1 + [0] p(c_115) = [0] p(c_116) = [0] p(c_117) = [0] p(c_118) = [0] p(c_119) = [0] p(c_120) = [0] p(c_121) = [0] p(c_122) = [1] x1 + [1] x2 + [0] p(c_123) = [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) = [4] x1 + [0] p(c_131) = [0] p(c_132) = [0] p(c_133) = [2] x2 + [0] p(c_134) = [0] p(c_135) = [4] x2 + [0] p(c_136) = [0] p(c_137) = [0] p(c_138) = [0] p(c_139) = [0] p(c_140) = [0] p(c_141) = [0] p(c_142) = [0] p(c_143) = [0] p(c_144) = [0] p(c_145) = [0] p(c_146) = [0] p(c_147) = [0] p(c_148) = [0] Following rules are strictly oriented: add#(@b1,@b2) = [1] > [0] = c_11(add'#(@b1,@b2,#abs(#0()))) Following rules are (at-least) weakly oriented: add'#(@b1,@b2,@r) = [0] >= [0] = c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) = [0] >= [0] = c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) = [0] >= [0] = c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) = [0] >= [0] = c_17(add'#(@xs,@ys,@r')) mult#(@b1,@b2) = [4] @b2 + [7] >= [4] @b2 + [7] = mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) = [4] @b2 + [7] >= [4] @b2 + [7] = mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) = [4] @b2 + [7] >= [4] @b2 + [6] = mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#2#(@zs,@b2,@x) = [4] @b2 + [6] >= [6] = c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) = [1] >= [1] = c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) = [4] @b2 + [7] >= [4] @b2 + [7] = mult#(mult(@b1,@b2),@b2) ** Step 13.b:6: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) - Weak DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) mult#(@b1,@b2) -> mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_17) = {1}, uargs(c_43) = {1}, uargs(c_45) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1# ,compare#,compare#1#,compare#2#,compare#3#,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod# ,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1# ,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [2] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [1] p(#add) = [3] x1 + [0] p(#and) = [1] p(#ckgt) = [0] p(#cklt) = [0] p(#compare) = [0] p(#div) = [0] p(#divByZero) = [0] p(#eq) = [0] p(#equal) = [1] x2 + [0] p(#false) = [5] p(#greater) = [0] p(#less) = [0] p(#mult) = [0] p(#natdiv) = [0] p(#natmult) = [0] p(#natsub) = [0] p(#neg) = [3] p(#pos) = [4] p(#pred) = [0] p(#s) = [1] x1 + [0] p(#sub) = [0] p(#succ) = [0] p(#true) = [0] p(*) = [0] p(+) = [1] x1 + [5] p(-) = [0] p(::) = [1] x2 + [1] p(add) = [0] p(add') = [1] x1 + [0] p(add'#1) = [0] p(add'#2) = [5] p(add'#3) = [2] x1 + [5] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [0] p(div) = [0] p(leq) = [0] p(mod) = [0] p(mult) = [7] p(mult#1) = [0] p(mult#2) = [6] p(mult#3) = [0] p(mult3) = [0] p(nil) = [0] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [0] p(sub'#4) = [0] p(sub'#5) = [0] p(sum) = [0] p(sum#1) = [1] x1 + [0] p(sum#2) = [0] p(sum#3) = [1] x1 + [7] p(sum#4) = [1] x1 + [0] p(tuple#2) = [1] x1 + [1] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#less#) = [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(add#) = [7] x1 + [4] p(add'#) = [6] x1 + [4] p(add'#1#) = [6] x1 + [4] p(add'#2#) = [6] x4 + [4] p(add'#3#) = [6] x2 + [4] p(bitToInt#) = [0] p(bitToInt'#) = [0] p(bitToInt'#1#) = [0] p(compare#) = [0] p(compare#1#) = [0] p(compare#2#) = [0] p(compare#3#) = [0] p(compare#4#) = [0] p(compare#5#) = [0] p(compare#6#) = [0] p(diff#) = [0] p(diff#1#) = [4] p(div#) = [1] x1 + [4] x2 + [1] p(leq#) = [2] x1 + [4] x2 + [1] p(mod#) = [2] x2 + [1] p(mult#) = [7] x2 + [5] p(mult#1#) = [7] x2 + [5] p(mult#2#) = [7] x2 + [5] p(mult#3#) = [7] x2 + [5] p(mult3#) = [7] x2 + [5] p(sub#) = [2] x1 + [1] x2 + [2] p(sub#1#) = [2] p(sub'#) = [0] p(sub'#1#) = [1] x2 + [1] x3 + [1] p(sub'#2#) = [1] x1 + [1] x2 + [1] x3 + [0] p(sub'#3#) = [2] x2 + [1] p(sub'#4#) = [1] x1 + [1] x2 + [0] p(sub'#5#) = [0] p(sum#) = [1] x3 + [4] p(sum#1#) = [1] x1 + [4] p(sum#2#) = [1] p(sum#3#) = [1] x1 + [1] p(sum#4#) = [1] x1 + [1] p(c_1) = [1] p(c_2) = [0] p(c_3) = [2] p(c_4) = [2] p(c_5) = [2] x1 + [0] p(c_6) = [1] x2 + [0] p(c_7) = [1] x2 + [0] p(c_8) = [2] p(c_9) = [1] x1 + [1] p(c_10) = [1] p(c_11) = [1] x1 + [0] p(c_12) = [1] x1 + [0] p(c_13) = [1] x1 + [5] p(c_14) = [2] p(c_15) = [1] x1 + [0] p(c_16) = [2] p(c_17) = [1] x1 + [0] p(c_18) = [1] p(c_19) = [0] p(c_20) = [0] p(c_21) = [4] p(c_22) = [0] p(c_23) = [4] x1 + [4] p(c_24) = [2] x1 + [1] p(c_25) = [1] p(c_26) = [1] x1 + [0] p(c_27) = [1] x1 + [4] x2 + [2] p(c_28) = [1] p(c_29) = [4] x2 + [0] p(c_30) = [1] x1 + [1] x2 + [0] p(c_31) = [0] p(c_32) = [0] p(c_33) = [1] x1 + [2] p(c_34) = [1] x1 + [4] x4 + [1] x7 + [2] p(c_35) = [1] x1 + [4] p(c_36) = [1] p(c_37) = [1] p(c_38) = [1] x1 + [1] p(c_39) = [1] x2 + [1] x3 + [4] p(c_40) = [1] x1 + [1] p(c_41) = [1] x1 + [2] x2 + [1] p(c_42) = [0] p(c_43) = [1] x1 + [0] p(c_44) = [0] p(c_45) = [1] x1 + [1] p(c_46) = [4] x1 + [4] x2 + [1] p(c_47) = [0] p(c_48) = [0] p(c_49) = [4] p(c_50) = [0] p(c_51) = [0] p(c_52) = [0] p(c_53) = [2] p(c_54) = [1] p(c_55) = [1] p(c_56) = [0] p(c_57) = [1] p(c_58) = [0] p(c_59) = [2] x2 + [0] p(c_60) = [2] x2 + [1] p(c_61) = [2] x1 + [4] x2 + [2] p(c_62) = [1] x2 + [1] p(c_63) = [2] x1 + [0] p(c_64) = [1] x1 + [1] x2 + [2] p(c_65) = [2] x1 + [2] x2 + [1] p(c_66) = [0] p(c_67) = [0] p(c_68) = [1] x1 + [4] x2 + [1] p(c_69) = [2] p(c_70) = [0] p(c_71) = [1] p(c_72) = [1] p(c_73) = [1] p(c_74) = [0] p(c_75) = [0] p(c_76) = [0] p(c_77) = [1] p(c_78) = [2] p(c_79) = [1] p(c_80) = [2] p(c_81) = [1] p(c_82) = [1] p(c_83) = [0] p(c_84) = [1] p(c_85) = [2] p(c_86) = [0] p(c_87) = [0] p(c_88) = [1] p(c_89) = [0] p(c_90) = [2] x1 + [0] p(c_91) = [1] p(c_92) = [1] x1 + [1] p(c_93) = [0] p(c_94) = [0] p(c_95) = [0] p(c_96) = [1] p(c_97) = [1] x1 + [1] p(c_98) = [1] x1 + [0] p(c_99) = [0] p(c_100) = [1] p(c_101) = [2] x1 + [4] p(c_102) = [0] p(c_103) = [1] p(c_104) = [1] p(c_105) = [0] p(c_106) = [0] p(c_107) = [1] p(c_108) = [0] p(c_109) = [1] p(c_110) = [1] p(c_111) = [1] x1 + [1] p(c_112) = [0] p(c_113) = [1] x1 + [0] p(c_114) = [1] x1 + [0] p(c_115) = [2] p(c_116) = [2] p(c_117) = [0] p(c_118) = [1] p(c_119) = [4] p(c_120) = [0] p(c_121) = [1] p(c_122) = [1] x1 + [1] p(c_123) = [2] p(c_124) = [1] p(c_125) = [1] p(c_126) = [2] p(c_127) = [1] x1 + [1] p(c_128) = [1] x1 + [1] p(c_129) = [2] p(c_130) = [1] x1 + [4] p(c_131) = [0] p(c_132) = [0] p(c_133) = [4] x1 + [1] p(c_134) = [0] p(c_135) = [2] x1 + [1] x2 + [4] p(c_136) = [1] p(c_137) = [1] x1 + [0] p(c_138) = [1] p(c_139) = [0] p(c_140) = [2] p(c_141) = [4] p(c_142) = [0] p(c_143) = [0] p(c_144) = [4] x1 + [0] p(c_145) = [0] p(c_146) = [0] p(c_147) = [0] p(c_148) = [0] Following rules are strictly oriented: add'#1#(::(@x,@xs),@b2,@r) = [6] @xs + [10] > [6] @xs + [9] = c_13(add'#2#(@b2,@r,@x,@xs)) Following rules are (at-least) weakly oriented: add#(@b1,@b2) = [7] @b1 + [4] >= [6] @b1 + [4] = c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) = [6] @b1 + [4] >= [6] @b1 + [4] = c_12(add'#1#(@b1,@b2,@r)) add'#2#(::(@y,@ys),@r,@x,@xs) = [6] @xs + [4] >= [6] @xs + [4] = c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) = [6] @xs + [4] >= [6] @xs + [4] = c_17(add'#(@xs,@ys,@r')) mult#(@b1,@b2) = [7] @b2 + [5] >= [7] @b2 + [5] = mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) = [7] @b2 + [5] >= [7] @b2 + [5] = mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) = [7] @b2 + [5] >= [7] @b2 + [5] = mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#2#(@zs,@b2,@x) = [7] @b2 + [5] >= [7] @b2 + [5] = c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) = [7] @b2 + [5] >= [7] @b2 + [5] = c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) = [7] @b2 + [5] >= [7] @b2 + [5] = mult#(mult(@b1,@b2),@b2) ** Step 13.b:7: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) - Weak DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) mult#(@b1,@b2) -> mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_17) = {1}, uargs(c_43) = {1}, uargs(c_45) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1# ,compare#,compare#1#,compare#2#,compare#3#,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod# ,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1# ,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [0] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [3] x1 + [2] p(#add) = [0] p(#and) = [0] p(#ckgt) = [0] p(#cklt) = [0] p(#compare) = [0] p(#div) = [0] p(#divByZero) = [0] p(#eq) = [1] p(#equal) = [4] x2 + [0] p(#false) = [0] p(#greater) = [0] p(#less) = [0] p(#mult) = [0] p(#natdiv) = [0] p(#natmult) = [0] p(#natsub) = [0] p(#neg) = [1] p(#pos) = [2] p(#pred) = [2] x1 + [3] p(#s) = [0] p(#sub) = [0] p(#succ) = [1] x1 + [0] p(#true) = [0] p(*) = [0] p(+) = [2] p(-) = [0] p(::) = [1] p(add) = [0] p(add') = [0] p(add'#1) = [0] p(add'#2) = [5] p(add'#3) = [0] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [0] p(div) = [0] p(leq) = [0] p(mod) = [0] p(mult) = [0] p(mult#1) = [0] p(mult#2) = [1] x1 + [0] p(mult#3) = [0] p(mult3) = [0] p(nil) = [0] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [0] p(sub'#4) = [0] p(sub'#5) = [0] p(sum) = [0] p(sum#1) = [1] x1 + [1] p(sum#2) = [0] p(sum#3) = [0] p(sum#4) = [0] p(tuple#2) = [1] x2 + [0] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#less#) = [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(add#) = [0] p(add'#) = [0] p(add'#1#) = [0] p(add'#2#) = [0] p(add'#3#) = [0] p(bitToInt#) = [0] p(bitToInt'#) = [0] p(bitToInt'#1#) = [0] p(compare#) = [0] p(compare#1#) = [0] p(compare#2#) = [0] p(compare#3#) = [0] p(compare#4#) = [0] p(compare#5#) = [0] p(compare#6#) = [0] p(diff#) = [0] p(diff#1#) = [0] p(div#) = [0] p(leq#) = [0] p(mod#) = [0] p(mult#) = [6] p(mult#1#) = [6] p(mult#2#) = [2] x1 + [4] p(mult#3#) = [4] p(mult3#) = [6] p(sub#) = [0] p(sub#1#) = [0] p(sub'#) = [0] p(sub'#1#) = [0] p(sub'#2#) = [0] p(sub'#3#) = [0] p(sub'#4#) = [0] p(sub'#5#) = [0] p(sum#) = [0] p(sum#1#) = [0] p(sum#2#) = [0] p(sum#3#) = [0] p(sum#4#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [1] x1 + [0] p(c_12) = [2] x1 + [0] p(c_13) = [4] x1 + [0] p(c_14) = [0] p(c_15) = [4] x1 + [0] p(c_16) = [2] p(c_17) = [4] x1 + [0] p(c_18) = [2] x1 + [0] p(c_19) = [0] p(c_20) = [0] p(c_21) = [0] p(c_22) = [2] x1 + [0] p(c_23) = [1] x1 + [0] p(c_24) = [1] x1 + [0] p(c_25) = [1] x1 + [0] p(c_26) = [0] p(c_27) = [1] x1 + [0] p(c_28) = [0] p(c_29) = [1] x1 + [0] p(c_30) = [1] x1 + [0] p(c_31) = [1] x1 + [2] p(c_32) = [2] x1 + [0] p(c_33) = [4] x1 + [0] p(c_34) = [2] x1 + [1] x2 + [1] x3 + [1] x4 + [1] x5 + [1] x6 + [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) = [1] x1 + [2] x2 + [0] p(c_42) = [0] p(c_43) = [1] x1 + [0] p(c_44) = [0] p(c_45) = [1] x1 + [3] p(c_46) = [1] x2 + [0] p(c_47) = [1] x1 + [0] p(c_48) = [0] p(c_49) = [4] x1 + [0] p(c_50) = [0] p(c_51) = [0] p(c_52) = [1] x1 + [0] p(c_53) = [0] p(c_54) = [1] x1 + [0] p(c_55) = [4] x1 + [0] p(c_56) = [0] p(c_57) = [0] p(c_58) = [1] x1 + [1] x2 + [4] x3 + [0] p(c_59) = [0] p(c_60) = [1] x2 + [0] p(c_61) = [0] p(c_62) = [0] p(c_63) = [4] x2 + [0] p(c_64) = [1] x2 + [0] p(c_65) = [2] x2 + [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [1] x1 + [1] x2 + [0] p(c_69) = [1] x1 + [0] p(c_70) = [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) = [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [0] p(c_81) = [0] p(c_82) = [0] p(c_83) = [0] p(c_84) = [0] p(c_85) = [0] p(c_86) = [1] x1 + [0] p(c_87) = [0] p(c_88) = [0] p(c_89) = [0] p(c_90) = [4] x1 + [0] p(c_91) = [0] p(c_92) = [1] x1 + [0] p(c_93) = [0] p(c_94) = [0] p(c_95) = [0] p(c_96) = [0] p(c_97) = [1] x1 + [0] p(c_98) = [1] x1 + [0] p(c_99) = [0] p(c_100) = [0] p(c_101) = [0] p(c_102) = [0] p(c_103) = [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) = [0] p(c_111) = [1] x1 + [0] p(c_112) = [0] p(c_113) = [0] p(c_114) = [2] x1 + [0] p(c_115) = [0] p(c_116) = [0] p(c_117) = [0] p(c_118) = [0] p(c_119) = [0] p(c_120) = [0] p(c_121) = [0] p(c_122) = [1] x3 + [0] p(c_123) = [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) = [1] x1 + [0] p(c_131) = [0] p(c_132) = [2] p(c_133) = [1] p(c_134) = [2] p(c_135) = [1] x1 + [4] x2 + [1] p(c_136) = [1] p(c_137) = [2] x1 + [0] p(c_138) = [2] p(c_139) = [4] p(c_140) = [4] p(c_141) = [2] p(c_142) = [0] p(c_143) = [1] x1 + [0] p(c_144) = [2] x1 + [2] p(c_145) = [1] p(c_146) = [0] p(c_147) = [2] p(c_148) = [2] Following rules are strictly oriented: mult#3#(#true(),@b2,@zs) = [4] > [3] = c_45(add#(@b2,@zs)) Following rules are (at-least) weakly oriented: add#(@b1,@b2) = [0] >= [0] = c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) = [0] >= [0] = c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) = [0] >= [0] = c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) = [0] >= [0] = c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) = [0] >= [0] = c_17(add'#(@xs,@ys,@r')) mult#(@b1,@b2) = [6] >= [6] = mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) = [6] >= [6] = mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) = [6] >= [6] = mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#2#(@zs,@b2,@x) = [2] @zs + [4] >= [4] = c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult3#(@b1,@b2,@b3) = [6] >= [6] = mult#(mult(@b1,@b2),@b2) ** Step 13.b:8: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) - Weak DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) mult#(@b1,@b2) -> mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_17) = {1}, uargs(c_43) = {1}, uargs(c_45) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1# ,compare#,compare#1#,compare#2#,compare#3#,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod# ,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1# ,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [2] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [1] x1 + [1] p(#add) = [0] p(#and) = [3] x2 + [0] p(#ckgt) = [0] p(#cklt) = [0] p(#compare) = [0] p(#div) = [0] p(#divByZero) = [0] p(#eq) = [0] p(#equal) = [4] p(#false) = [1] p(#greater) = [0] p(#less) = [0] p(#mult) = [0] p(#natdiv) = [0] p(#natmult) = [0] p(#natsub) = [0] p(#neg) = [0] p(#pos) = [1] x1 + [7] p(#pred) = [0] p(#s) = [5] p(#sub) = [0] p(#succ) = [0] p(#true) = [4] p(*) = [0] p(+) = [7] x2 + [6] p(-) = [0] p(::) = [1] x1 + [1] x2 + [1] p(add) = [0] p(add') = [2] x2 + [0] p(add'#1) = [6] x1 + [0] p(add'#2) = [0] p(add'#3) = [0] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [2] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [0] p(div) = [0] p(leq) = [0] p(mod) = [0] p(mult) = [2] p(mult#1) = [1] x2 + [0] p(mult#2) = [1] x3 + [0] p(mult#3) = [0] p(mult3) = [2] x3 + [0] p(nil) = [0] p(sub) = [2] x1 + [1] p(sub#1) = [1] p(sub') = [1] x2 + [0] p(sub'#1) = [1] x1 + [0] p(sub'#2) = [1] x3 + [1] x4 + [1] p(sub'#3) = [1] x2 + [2] p(sub'#4) = [2] x1 + [2] x2 + [0] p(sub'#5) = [4] x1 + [1] x2 + [4] x3 + [1] p(sum) = [0] p(sum#1) = [2] x1 + [0] p(sum#2) = [1] x2 + [0] p(sum#3) = [0] p(sum#4) = [1] x1 + [1] p(tuple#2) = [1] x1 + [0] p(#abs#) = [2] p(#add#) = [0] p(#and#) = [1] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [2] p(#div#) = [1] x1 + [0] p(#eq#) = [1] x1 + [0] p(#equal#) = [4] x1 + [1] x2 + [4] p(#greater#) = [4] x1 + [4] p(#less#) = [1] x2 + [4] p(#mult#) = [1] x1 + [2] x2 + [4] p(#natdiv#) = [1] x1 + [1] x2 + [0] p(#natmult#) = [1] x1 + [1] x2 + [0] p(#natsub#) = [1] p(#pred#) = [1] x1 + [2] p(#sub#) = [1] x1 + [0] p(#succ#) = [2] p(*#) = [1] x2 + [1] p(+#) = [1] x1 + [0] p(-#) = [1] x1 + [4] x2 + [4] p(add#) = [6] x1 + [4] p(add'#) = [6] x1 + [2] p(add'#1#) = [6] x1 + [2] p(add'#2#) = [6] x4 + [3] p(add'#3#) = [6] x2 + [2] p(bitToInt#) = [0] p(bitToInt'#) = [1] x1 + [1] x2 + [1] p(bitToInt'#1#) = [2] x2 + [0] p(compare#) = [2] x2 + [1] p(compare#1#) = [0] p(compare#2#) = [0] p(compare#3#) = [4] x3 + [2] p(compare#4#) = [2] x1 + [2] x2 + [1] p(compare#5#) = [1] x1 + [1] x2 + [4] x3 + [0] p(compare#6#) = [4] x1 + [2] p(diff#) = [2] x1 + [1] x2 + [4] x3 + [0] p(diff#1#) = [4] x1 + [0] p(div#) = [0] p(leq#) = [1] x1 + [0] p(mod#) = [2] x1 + [2] x2 + [1] p(mult#) = [6] x2 + [7] p(mult#1#) = [6] x2 + [7] p(mult#2#) = [6] x2 + [6] p(mult#3#) = [6] x2 + [4] p(mult3#) = [1] x1 + [6] x2 + [7] p(sub#) = [1] p(sub#1#) = [0] p(sub'#) = [1] x1 + [1] x2 + [1] p(sub'#1#) = [2] x1 + [1] x2 + [1] x3 + [0] p(sub'#2#) = [4] x1 + [1] x2 + [2] x3 + [4] x4 + [0] p(sub'#3#) = [1] x1 + [2] x3 + [1] p(sub'#4#) = [0] p(sub'#5#) = [1] x2 + [0] p(sum#) = [1] x2 + [1] p(sum#1#) = [2] x1 + [2] p(sum#2#) = [1] p(sum#3#) = [4] p(sum#4#) = [1] p(c_1) = [1] p(c_2) = [4] p(c_3) = [1] p(c_4) = [0] p(c_5) = [2] x1 + [1] p(c_6) = [4] x2 + [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [2] p(c_11) = [1] x1 + [2] p(c_12) = [1] x1 + [0] p(c_13) = [1] x1 + [5] p(c_14) = [4] p(c_15) = [1] x1 + [0] p(c_16) = [2] p(c_17) = [1] x1 + [0] p(c_18) = [1] p(c_19) = [1] p(c_20) = [2] p(c_21) = [0] p(c_22) = [2] p(c_23) = [2] x1 + [0] p(c_24) = [1] x1 + [1] p(c_25) = [1] x1 + [0] p(c_26) = [1] x1 + [4] p(c_27) = [1] x1 + [2] x2 + [4] p(c_28) = [0] p(c_29) = [4] x1 + [0] p(c_30) = [1] x1 + [1] x2 + [0] p(c_31) = [1] p(c_32) = [0] p(c_33) = [0] p(c_34) = [1] x1 + [1] x3 + [1] x4 + [1] x5 + [1] x7 + [0] p(c_35) = [4] x1 + [0] p(c_36) = [2] x1 + [1] p(c_37) = [2] x1 + [4] p(c_38) = [4] p(c_39) = [1] p(c_40) = [1] p(c_41) = [4] p(c_42) = [1] p(c_43) = [1] x1 + [0] p(c_44) = [0] p(c_45) = [1] x1 + [0] p(c_46) = [4] x1 + [1] x2 + [4] p(c_47) = [4] x1 + [1] p(c_48) = [2] p(c_49) = [4] p(c_50) = [0] p(c_51) = [1] p(c_52) = [0] p(c_53) = [4] p(c_54) = [4] p(c_55) = [1] x1 + [1] p(c_56) = [0] p(c_57) = [2] x1 + [4] p(c_58) = [2] x1 + [2] x2 + [1] x3 + [2] p(c_59) = [1] p(c_60) = [2] x2 + [4] p(c_61) = [1] p(c_62) = [1] p(c_63) = [1] x2 + [0] p(c_64) = [1] x1 + [2] x2 + [0] p(c_65) = [4] p(c_66) = [0] p(c_67) = [4] p(c_68) = [2] x2 + [0] p(c_69) = [1] p(c_70) = [4] x1 + [0] p(c_71) = [1] p(c_72) = [2] p(c_73) = [2] p(c_74) = [2] p(c_75) = [1] p(c_76) = [0] p(c_77) = [4] p(c_78) = [1] p(c_79) = [0] p(c_80) = [0] p(c_81) = [1] p(c_82) = [0] p(c_83) = [0] p(c_84) = [1] p(c_85) = [1] p(c_86) = [1] p(c_87) = [4] p(c_88) = [1] p(c_89) = [0] p(c_90) = [1] x1 + [1] p(c_91) = [0] p(c_92) = [1] p(c_93) = [0] p(c_94) = [1] p(c_95) = [0] p(c_96) = [1] p(c_97) = [1] x1 + [1] p(c_98) = [1] p(c_99) = [2] p(c_100) = [1] p(c_101) = [1] x1 + [1] p(c_102) = [1] p(c_103) = [0] p(c_104) = [0] p(c_105) = [0] p(c_106) = [0] p(c_107) = [2] p(c_108) = [1] p(c_109) = [2] p(c_110) = [4] p(c_111) = [1] x1 + [1] p(c_112) = [4] p(c_113) = [1] p(c_114) = [1] x1 + [2] x3 + [4] p(c_115) = [1] p(c_116) = [0] p(c_117) = [2] p(c_118) = [2] p(c_119) = [0] p(c_120) = [4] p(c_121) = [0] p(c_122) = [2] x1 + [4] x2 + [0] p(c_123) = [4] p(c_124) = [1] p(c_125) = [2] p(c_126) = [0] p(c_127) = [1] p(c_128) = [2] x1 + [4] p(c_129) = [4] p(c_130) = [1] p(c_131) = [1] p(c_132) = [1] p(c_133) = [4] x1 + [1] x2 + [4] p(c_134) = [2] p(c_135) = [2] x1 + [1] x2 + [1] p(c_136) = [0] p(c_137) = [4] x1 + [0] p(c_138) = [1] p(c_139) = [1] p(c_140) = [0] p(c_141) = [4] p(c_142) = [1] p(c_143) = [1] p(c_144) = [4] x1 + [1] p(c_145) = [0] p(c_146) = [1] p(c_147) = [1] p(c_148) = [4] Following rules are strictly oriented: add'#2#(::(@y,@ys),@r,@x,@xs) = [6] @xs + [3] > [6] @xs + [2] = c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) Following rules are (at-least) weakly oriented: add#(@b1,@b2) = [6] @b1 + [4] >= [6] @b1 + [4] = c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) = [6] @b1 + [2] >= [6] @b1 + [2] = c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) = [6] @x + [6] @xs + [8] >= [6] @xs + [8] = c_13(add'#2#(@b2,@r,@x,@xs)) add'#3#(tuple#2(@z,@r'),@xs,@ys) = [6] @xs + [2] >= [6] @xs + [2] = c_17(add'#(@xs,@ys,@r')) mult#(@b1,@b2) = [6] @b2 + [7] >= [6] @b2 + [7] = mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) = [6] @b2 + [7] >= [6] @b2 + [7] = mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) = [6] @b2 + [7] >= [6] @b2 + [6] = mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#2#(@zs,@b2,@x) = [6] @b2 + [6] >= [6] @b2 + [4] = c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) = [6] @b2 + [4] >= [6] @b2 + [4] = c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) = [1] @b1 + [6] @b2 + [7] >= [6] @b2 + [7] = mult#(mult(@b1,@b2),@b2) ** Step 13.b:9: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) - Weak DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) mult#(@b1,@b2) -> mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_17) = {1}, uargs(c_43) = {1}, uargs(c_45) = {1} Following symbols are considered usable: {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult# ,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1# ,compare#,compare#1#,compare#2#,compare#3#,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod# ,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1# ,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [0] p(#EQ) = [0] p(#GT) = [0] p(#LT) = [0] p(#abs) = [2] p(#add) = [0] p(#and) = [4] x2 + [0] p(#ckgt) = [0] p(#cklt) = [0] p(#compare) = [0] p(#div) = [0] p(#divByZero) = [0] p(#eq) = [0] p(#equal) = [1] x2 + [4] p(#false) = [1] p(#greater) = [0] p(#less) = [0] p(#mult) = [0] p(#natdiv) = [0] p(#natmult) = [0] p(#natsub) = [0] p(#neg) = [1] x1 + [0] p(#pos) = [3] p(#pred) = [3] p(#s) = [2] p(#sub) = [0] p(#succ) = [0] p(#true) = [0] p(*) = [0] p(+) = [4] x2 + [0] p(-) = [0] p(::) = [1] x2 + [4] p(add) = [0] p(add') = [4] x3 + [0] p(add'#1) = [0] p(add'#2) = [0] p(add'#3) = [0] p(bitToInt) = [0] p(bitToInt') = [0] p(bitToInt'#1) = [0] p(compare) = [0] p(compare#1) = [0] p(compare#2) = [0] p(compare#3) = [0] p(compare#4) = [0] p(compare#5) = [0] p(compare#6) = [0] p(diff) = [0] p(diff#1) = [0] p(div) = [0] p(leq) = [0] p(mod) = [0] p(mult) = [0] p(mult#1) = [0] p(mult#2) = [0] p(mult#3) = [1] x1 + [2] p(mult3) = [0] p(nil) = [0] p(sub) = [0] p(sub#1) = [0] p(sub') = [0] p(sub'#1) = [0] p(sub'#2) = [0] p(sub'#3) = [0] p(sub'#4) = [0] p(sub'#5) = [0] p(sum) = [0] p(sum#1) = [1] x1 + [3] p(sum#2) = [3] x2 + [0] p(sum#3) = [0] p(sum#4) = [0] p(tuple#2) = [1] x2 + [1] p(#abs#) = [0] p(#add#) = [0] p(#and#) = [0] p(#ckgt#) = [0] p(#cklt#) = [0] p(#compare#) = [0] p(#div#) = [0] p(#eq#) = [0] p(#equal#) = [0] p(#greater#) = [0] p(#less#) = [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(add#) = [2] x1 + [4] p(add'#) = [1] x1 + [2] p(add'#1#) = [1] x1 + [2] p(add'#2#) = [1] x4 + [3] p(add'#3#) = [1] x2 + [3] p(bitToInt#) = [0] p(bitToInt'#) = [0] p(bitToInt'#1#) = [0] p(compare#) = [0] p(compare#1#) = [0] p(compare#2#) = [0] p(compare#3#) = [0] p(compare#4#) = [0] p(compare#5#) = [0] p(compare#6#) = [0] p(diff#) = [0] p(diff#1#) = [0] p(div#) = [0] p(leq#) = [0] p(mod#) = [1] x2 + [0] p(mult#) = [3] x2 + [7] p(mult#1#) = [3] x2 + [7] p(mult#2#) = [2] x2 + [7] p(mult#3#) = [2] x2 + [5] p(mult3#) = [3] x2 + [7] p(sub#) = [0] p(sub#1#) = [0] p(sub'#) = [0] p(sub'#1#) = [0] p(sub'#2#) = [0] p(sub'#3#) = [0] p(sub'#4#) = [0] p(sub'#5#) = [0] p(sum#) = [4] x3 + [0] p(sum#1#) = [1] p(sum#2#) = [1] x2 + [0] p(sum#3#) = [2] x1 + [0] p(sum#4#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [4] p(c_5) = [1] p(c_6) = [1] p(c_7) = [1] p(c_8) = [2] p(c_9) = [4] p(c_10) = [4] x1 + [0] p(c_11) = [2] x1 + [0] p(c_12) = [1] x1 + [0] p(c_13) = [1] x1 + [3] p(c_14) = [2] p(c_15) = [1] x1 + [0] p(c_16) = [0] p(c_17) = [1] x1 + [0] p(c_18) = [1] x1 + [0] p(c_19) = [0] p(c_20) = [0] p(c_21) = [1] x1 + [0] p(c_22) = [1] x1 + [0] p(c_23) = [0] p(c_24) = [1] x1 + [0] p(c_25) = [1] x1 + [0] p(c_26) = [1] x1 + [0] p(c_27) = [2] x2 + [0] p(c_28) = [0] p(c_29) = [0] p(c_30) = [1] x1 + [2] x2 + [0] p(c_31) = [0] p(c_32) = [2] x1 + [0] p(c_33) = [0] p(c_34) = [1] x1 + [4] x3 + [1] x6 + [0] p(c_35) = [0] p(c_36) = [0] p(c_37) = [1] x1 + [0] p(c_38) = [1] x1 + [0] p(c_39) = [4] x3 + [0] p(c_40) = [0] p(c_41) = [0] p(c_42) = [0] p(c_43) = [1] x1 + [2] p(c_44) = [0] p(c_45) = [1] x1 + [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) = [1] x1 + [0] p(c_53) = [0] p(c_54) = [1] x1 + [0] p(c_55) = [4] x1 + [1] x2 + [0] p(c_56) = [0] p(c_57) = [0] p(c_58) = [1] x1 + [0] p(c_59) = [0] p(c_60) = [1] x1 + [0] p(c_61) = [2] x1 + [4] x2 + [0] p(c_62) = [4] x1 + [2] x2 + [0] p(c_63) = [1] x2 + [0] p(c_64) = [1] x2 + [0] p(c_65) = [4] x1 + [1] x2 + [0] p(c_66) = [0] p(c_67) = [2] p(c_68) = [0] p(c_69) = [2] x1 + [0] p(c_70) = [4] x2 + [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) = [0] p(c_78) = [0] p(c_79) = [0] p(c_80) = [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) = [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) = [1] x1 + [0] p(c_98) = [2] x1 + [0] p(c_99) = [0] p(c_100) = [1] x1 + [0] p(c_101) = [1] x1 + [0] p(c_102) = [0] p(c_103) = [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) = [0] p(c_111) = [1] x1 + [0] p(c_112) = [0] p(c_113) = [1] x1 + [0] p(c_114) = [1] x2 + [0] p(c_115) = [0] p(c_116) = [0] p(c_117) = [0] p(c_118) = [0] p(c_119) = [0] p(c_120) = [0] p(c_121) = [0] p(c_122) = [0] p(c_123) = [0] p(c_124) = [0] p(c_125) = [0] p(c_126) = [0] p(c_127) = [4] x1 + [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) = [2] x1 + [0] p(c_134) = [0] p(c_135) = [1] x1 + [0] p(c_136) = [0] p(c_137) = [1] x1 + [0] p(c_138) = [0] p(c_139) = [0] p(c_140) = [0] p(c_141) = [0] p(c_142) = [0] p(c_143) = [0] p(c_144) = [0] p(c_145) = [0] p(c_146) = [0] p(c_147) = [0] p(c_148) = [0] Following rules are strictly oriented: add'#3#(tuple#2(@z,@r'),@xs,@ys) = [1] @xs + [3] > [1] @xs + [2] = c_17(add'#(@xs,@ys,@r')) Following rules are (at-least) weakly oriented: add#(@b1,@b2) = [2] @b1 + [4] >= [2] @b1 + [4] = c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) = [1] @b1 + [2] >= [1] @b1 + [2] = c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) = [1] @xs + [6] >= [1] @xs + [6] = c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) = [1] @xs + [3] >= [1] @xs + [3] = c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) mult#(@b1,@b2) = [3] @b2 + [7] >= [3] @b2 + [7] = mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) = [3] @b2 + [7] >= [3] @b2 + [7] = mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) = [3] @b2 + [7] >= [2] @b2 + [7] = mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#2#(@zs,@b2,@x) = [2] @b2 + [7] >= [2] @b2 + [7] = c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) = [2] @b2 + [5] >= [2] @b2 + [4] = c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) = [3] @b2 + [7] >= [3] @b2 + [7] = mult#(mult(@b1,@b2),@b2) ** Step 13.b:10: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) - Weak DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) mult#(@b1,@b2) -> mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_11) = {1}, uargs(c_12) = {1}, uargs(c_13) = {1}, uargs(c_15) = {1}, uargs(c_17) = {1}, uargs(c_43) = {1}, uargs(c_45) = {1} Following symbols are considered usable: {add,add',add'#1,add'#2,add'#3,mult,mult#1,mult#2,mult#3,#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div# ,#eq#,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'# ,add'#1#,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3# ,compare#4#,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub# ,sub#1#,sub'#,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} TcT has computed the following interpretation: p(#0) = [2] p(#EQ) = [1] p(#GT) = [4] p(#LT) = [0] p(#abs) = [0] p(#add) = [3] p(#and) = [4] x1 + [2] x2 + [0] p(#ckgt) = [4] p(#cklt) = [1] p(#compare) = [2] p(#div) = [1] x2 + [1] p(#divByZero) = [1] p(#eq) = [1] x2 + [0] p(#equal) = [7] x2 + [0] p(#false) = [0] p(#greater) = [2] x1 + [0] p(#less) = [1] p(#mult) = [1] x2 + [4] p(#natdiv) = [4] x1 + [2] p(#natmult) = [1] x1 + [4] p(#natsub) = [4] x2 + [0] p(#neg) = [1] x1 + [0] p(#pos) = [2] p(#pred) = [3] x1 + [0] p(#s) = [1] p(#sub) = [1] x1 + [1] x2 + [0] p(#succ) = [1] x1 + [0] p(#true) = [0] p(*) = [4] p(+) = [7] x2 + [0] p(-) = [1] x1 + [0] p(::) = [1] x2 + [2] p(add) = [1] x2 + [0] p(add') = [1] x2 + [0] p(add'#1) = [1] x2 + [0] p(add'#2) = [1] x1 + [0] p(add'#3) = [1] x3 + [2] p(bitToInt) = [1] p(bitToInt') = [2] p(bitToInt'#1) = [4] x2 + [0] p(compare) = [0] p(compare#1) = [2] p(compare#2) = [1] x3 + [2] p(compare#3) = [4] x2 + [1] p(compare#4) = [1] x3 + [4] p(compare#5) = [1] x2 + [4] x3 + [0] p(compare#6) = [1] p(diff) = [4] p(diff#1) = [1] x1 + [4] p(div) = [0] p(leq) = [1] p(mod) = [4] x2 + [4] p(mult) = [1] x1 + [0] p(mult#1) = [1] x1 + [0] p(mult#2) = [1] x1 + [0] p(mult#3) = [1] x3 + [0] p(mult3) = [1] x1 + [1] x2 + [4] x3 + [2] p(nil) = [0] p(sub) = [2] x1 + [0] p(sub#1) = [2] p(sub') = [1] p(sub'#1) = [4] x1 + [2] p(sub'#2) = [1] x1 + [2] x3 + [1] p(sub'#3) = [1] x1 + [1] x3 + [0] p(sub'#4) = [1] p(sub'#5) = [1] x3 + [1] p(sum) = [4] x1 + [0] p(sum#1) = [2] x1 + [1] p(sum#2) = [1] x1 + [1] x2 + [0] p(sum#3) = [0] p(sum#4) = [0] p(tuple#2) = [0] p(#abs#) = [1] x1 + [0] p(#add#) = [1] x2 + [1] p(#and#) = [1] x1 + [1] x2 + [1] p(#ckgt#) = [1] x1 + [0] p(#cklt#) = [1] x1 + [4] p(#compare#) = [1] x1 + [1] x2 + [0] p(#div#) = [1] x1 + [1] x2 + [1] p(#eq#) = [0] p(#equal#) = [4] x1 + [2] x2 + [1] p(#greater#) = [1] p(#less#) = [2] x1 + [4] x2 + [0] p(#mult#) = [1] x1 + [1] x2 + [0] p(#natdiv#) = [1] x1 + [1] p(#natmult#) = [2] x1 + [0] p(#natsub#) = [1] p(#pred#) = [1] x1 + [0] p(#sub#) = [4] x1 + [4] p(#succ#) = [1] x1 + [1] p(*#) = [1] x2 + [1] p(+#) = [1] x1 + [1] x2 + [1] p(-#) = [1] x1 + [1] x2 + [1] p(add#) = [4] x1 + [6] x2 + [2] p(add'#) = [2] x1 + [3] x2 + [1] p(add'#1#) = [2] x1 + [3] x2 + [0] p(add'#2#) = [3] x1 + [2] x4 + [0] p(add'#3#) = [2] x2 + [3] x3 + [1] p(bitToInt#) = [0] p(bitToInt'#) = [0] p(bitToInt'#1#) = [1] x2 + [1] p(compare#) = [1] x1 + [1] p(compare#1#) = [0] p(compare#2#) = [1] p(compare#3#) = [1] x1 + [2] p(compare#4#) = [1] p(compare#5#) = [1] x1 + [1] x2 + [1] x3 + [2] p(compare#6#) = [1] x1 + [1] p(diff#) = [4] x2 + [1] x3 + [0] p(diff#1#) = [1] p(div#) = [1] x1 + [2] x2 + [1] p(leq#) = [1] p(mod#) = [1] x2 + [0] p(mult#) = [6] x1 + [6] x2 + [4] p(mult#1#) = [6] x1 + [6] x2 + [3] p(mult#2#) = [6] x1 + [6] x2 + [3] p(mult#3#) = [4] x2 + [6] x3 + [2] p(mult3#) = [6] x1 + [6] x2 + [1] x3 + [5] p(sub#) = [2] x1 + [1] x2 + [1] p(sub#1#) = [4] p(sub'#) = [4] p(sub'#1#) = [1] x1 + [4] p(sub'#2#) = [1] x3 + [0] p(sub'#3#) = [1] x1 + [1] x2 + [1] x3 + [0] p(sub'#4#) = [1] x1 + [1] x2 + [0] p(sub'#5#) = [1] x3 + [0] p(sum#) = [2] x1 + [1] x2 + [2] x3 + [0] p(sum#1#) = [0] p(sum#2#) = [1] x1 + [0] p(sum#3#) = [1] x2 + [0] p(sum#4#) = [2] p(c_1) = [0] p(c_2) = [0] p(c_3) = [2] p(c_4) = [2] p(c_5) = [4] x1 + [4] p(c_6) = [1] x2 + [0] p(c_7) = [1] x1 + [1] p(c_8) = [1] x1 + [0] p(c_9) = [4] p(c_10) = [0] p(c_11) = [2] x1 + [0] p(c_12) = [1] x1 + [0] p(c_13) = [1] x1 + [4] p(c_14) = [0] p(c_15) = [1] x1 + [5] p(c_16) = [4] p(c_17) = [1] x1 + [0] p(c_18) = [0] p(c_19) = [1] x1 + [0] p(c_20) = [1] p(c_21) = [1] p(c_22) = [1] x1 + [0] p(c_23) = [4] p(c_24) = [1] p(c_25) = [4] x1 + [1] p(c_26) = [1] p(c_27) = [1] x2 + [1] p(c_28) = [1] p(c_29) = [1] x2 + [1] p(c_30) = [4] p(c_31) = [0] p(c_32) = [1] p(c_33) = [0] p(c_34) = [1] x1 + [4] x2 + [2] x4 + [1] x6 + [0] p(c_35) = [1] x1 + [0] p(c_36) = [1] x1 + [0] p(c_37) = [1] p(c_38) = [1] p(c_39) = [1] x3 + [2] p(c_40) = [1] p(c_41) = [0] p(c_42) = [1] p(c_43) = [1] x1 + [1] p(c_44) = [4] p(c_45) = [1] x1 + [0] p(c_46) = [4] x1 + [0] p(c_47) = [0] p(c_48) = [4] p(c_49) = [0] p(c_50) = [4] x1 + [1] p(c_51) = [4] p(c_52) = [0] p(c_53) = [1] p(c_54) = [0] p(c_55) = [2] x1 + [0] p(c_56) = [2] p(c_57) = [0] p(c_58) = [0] p(c_59) = [0] p(c_60) = [1] x2 + [1] p(c_61) = [2] p(c_62) = [1] x2 + [1] p(c_63) = [1] x2 + [0] p(c_64) = [1] x1 + [4] x2 + [1] p(c_65) = [2] x2 + [2] p(c_66) = [0] p(c_67) = [2] x1 + [1] p(c_68) = [1] x1 + [2] p(c_69) = [1] x1 + [0] p(c_70) = [4] x2 + [0] p(c_71) = [1] p(c_72) = [0] p(c_73) = [1] p(c_74) = [0] p(c_75) = [0] p(c_76) = [0] p(c_77) = [0] p(c_78) = [0] p(c_79) = [1] p(c_80) = [1] p(c_81) = [0] p(c_82) = [2] p(c_83) = [0] p(c_84) = [0] p(c_85) = [4] p(c_86) = [1] x1 + [1] p(c_87) = [1] p(c_88) = [1] p(c_89) = [1] p(c_90) = [1] x1 + [0] p(c_91) = [0] p(c_92) = [1] x1 + [0] p(c_93) = [1] p(c_94) = [1] p(c_95) = [1] p(c_96) = [0] p(c_97) = [1] p(c_98) = [1] p(c_99) = [0] p(c_100) = [1] x1 + [0] p(c_101) = [0] p(c_102) = [4] p(c_103) = [2] p(c_104) = [4] p(c_105) = [1] p(c_106) = [1] p(c_107) = [1] p(c_108) = [0] p(c_109) = [2] p(c_110) = [2] p(c_111) = [1] x1 + [0] p(c_112) = [4] p(c_113) = [2] x1 + [0] p(c_114) = [1] x2 + [0] p(c_115) = [2] p(c_116) = [4] p(c_117) = [0] p(c_118) = [0] p(c_119) = [1] p(c_120) = [2] p(c_121) = [0] p(c_122) = [1] x2 + [1] p(c_123) = [1] p(c_124) = [4] p(c_125) = [4] p(c_126) = [0] p(c_127) = [1] x1 + [0] p(c_128) = [1] x1 + [4] p(c_129) = [0] p(c_130) = [2] x1 + [0] p(c_131) = [4] p(c_132) = [1] p(c_133) = [1] x1 + [2] p(c_134) = [0] p(c_135) = [1] x1 + [2] x2 + [0] p(c_136) = [4] p(c_137) = [4] p(c_138) = [0] p(c_139) = [0] p(c_140) = [1] p(c_141) = [1] p(c_142) = [1] p(c_143) = [0] p(c_144) = [2] x1 + [2] p(c_145) = [0] p(c_146) = [1] p(c_147) = [4] p(c_148) = [2] Following rules are strictly oriented: add'#(@b1,@b2,@r) = [2] @b1 + [3] @b2 + [1] > [2] @b1 + [3] @b2 + [0] = c_12(add'#1#(@b1,@b2,@r)) Following rules are (at-least) weakly oriented: add#(@b1,@b2) = [4] @b1 + [6] @b2 + [2] >= [4] @b1 + [6] @b2 + [2] = c_11(add'#(@b1,@b2,#abs(#0()))) add'#1#(::(@x,@xs),@b2,@r) = [3] @b2 + [2] @xs + [4] >= [3] @b2 + [2] @xs + [4] = c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) = [2] @xs + [3] @ys + [6] >= [2] @xs + [3] @ys + [6] = c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) = [2] @xs + [3] @ys + [1] >= [2] @xs + [3] @ys + [1] = c_17(add'#(@xs,@ys,@r')) mult#(@b1,@b2) = [6] @b1 + [6] @b2 + [4] >= [6] @b1 + [6] @b2 + [3] = mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) = [6] @b2 + [6] @xs + [15] >= [6] @b2 + [6] @xs + [4] = mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) = [6] @b2 + [6] @xs + [15] >= [6] @b2 + [6] @xs + [15] = mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#2#(@zs,@b2,@x) = [6] @b2 + [6] @zs + [3] >= [4] @b2 + [6] @zs + [3] = c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) = [4] @b2 + [6] @zs + [2] >= [4] @b2 + [6] @zs + [2] = c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) = [6] @b1 + [6] @b2 + [1] @b3 + [5] >= [6] @b1 + [6] @b2 + [4] = mult#(mult(@b1,@b2),@b2) add(@b1,@b2) = [1] @b2 + [0] >= [1] @b2 + [0] = add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) = [1] @b2 + [0] >= [1] @b2 + [0] = add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) = [1] @b2 + [0] >= [1] @b2 + [0] = add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) = [1] @b2 + [0] >= [0] = nil() add'#2(::(@y,@ys),@r,@x,@xs) = [1] @ys + [2] >= [1] @ys + [2] = add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) = [0] >= [0] = nil() add'#3(tuple#2(@z,@r'),@xs,@ys) = [1] @ys + [2] >= [1] @ys + [2] = ::(@z,add'(@xs,@ys,@r')) mult(@b1,@b2) = [1] @b1 + [0] >= [1] @b1 + [0] = mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) = [1] @xs + [2] >= [1] @xs + [2] = mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) = [0] >= [0] = nil() mult#2(@zs,@b2,@x) = [1] @zs + [0] >= [1] @zs + [0] = mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) = [1] @zs + [0] >= [1] @zs + [0] = @zs mult#3(#true(),@b2,@zs) = [1] @zs + [0] >= [1] @zs + [0] = add(@b2,@zs) ** Step 13.b:11: EmptyProcessor. WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))) add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)) add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs)) add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys)) add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r')) mult#(@b1,@b2) -> mult#1#(@b1,@b2) mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2) mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)) mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs)) mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2) - Weak TRS: #abs(#0()) -> #0() #abs(#pos(@x)) -> #pos(@x) #add(#0(),@y) -> @y #add(#neg(#s(#0())),@y) -> #pred(@y) #add(#neg(#s(#s(@x))),@y) -> #pred(#add(#pos(#s(@x)),@y)) #add(#pos(#s(#0())),@y) -> #succ(@y) #add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@x)),@y)) #and(#false(),#false()) -> #false() #and(#false(),#true()) -> #false() #and(#true(),#false()) -> #false() #and(#true(),#true()) -> #true() #eq(#0(),#0()) -> #true() #eq(#0(),#neg(@y)) -> #false() #eq(#0(),#pos(@y)) -> #false() #eq(#0(),#s(@y)) -> #false() #eq(#neg(@x),#0()) -> #false() #eq(#neg(@x),#neg(@y)) -> #eq(@x,@y) #eq(#neg(@x),#pos(@y)) -> #false() #eq(#pos(@x),#0()) -> #false() #eq(#pos(@x),#neg(@y)) -> #false() #eq(#pos(@x),#pos(@y)) -> #eq(@x,@y) #eq(#s(@x),#0()) -> #false() #eq(#s(@x),#s(@y)) -> #eq(@x,@y) #eq(::(@x_1,@x_2),::(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #eq(::(@x_1,@x_2),nil()) -> #false() #eq(::(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #false() #eq(nil(),::(@y_1,@y_2)) -> #false() #eq(nil(),nil()) -> #true() #eq(nil(),tuple#2(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),::(@y_1,@y_2)) -> #false() #eq(tuple#2(@x_1,@x_2),nil()) -> #false() #eq(tuple#2(@x_1,@x_2),tuple#2(@y_1,@y_2)) -> #and(#eq(@x_1,@y_1),#eq(@x_2,@y_2)) #equal(@x,@y) -> #eq(@x,@y) #pred(#0()) -> #neg(#s(#0())) #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) #pred(#pos(#s(#0()))) -> #0() #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) #succ(#0()) -> #pos(#s(#0())) #succ(#neg(#s(#0()))) -> #0() #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) +(@x,@y) -> #add(@x,@y) add(@b1,@b2) -> add'(@b1,@b2,#abs(#0())) add'(@b1,@b2,@r) -> add'#1(@b1,@b2,@r) add'#1(::(@x,@xs),@b2,@r) -> add'#2(@b2,@r,@x,@xs) add'#1(nil(),@b2,@r) -> nil() add'#2(::(@y,@ys),@r,@x,@xs) -> add'#3(sum(@x,@y,@r),@xs,@ys) add'#2(nil(),@r,@x,@xs) -> nil() add'#3(tuple#2(@z,@r'),@xs,@ys) -> ::(@z,add'(@xs,@ys,@r')) mult(@b1,@b2) -> mult#1(@b1,@b2) mult#1(::(@x,@xs),@b2) -> mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x) mult#1(nil(),@b2) -> nil() mult#2(@zs,@b2,@x) -> mult#3(#equal(@x,#pos(#s(#0()))),@b2,@zs) mult#3(#false(),@b2,@zs) -> @zs mult#3(#true(),@b2,@zs) -> add(@b2,@zs) sum(@x,@y,@r) -> sum#1(+(+(@x,@y),@r)) sum#1(@s) -> sum#2(#equal(@s,#0()),@s) sum#2(#false(),@s) -> sum#3(#equal(@s,#pos(#s(#0()))),@s) sum#2(#true(),@s) -> tuple#2(#abs(#0()),#abs(#0())) sum#3(#false(),@s) -> sum#4(#equal(@s,#pos(#s(#s(#0()))))) sum#3(#true(),@s) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#0())) sum#4(#false()) -> tuple#2(#abs(#pos(#s(#0()))),#abs(#pos(#s(#0())))) sum#4(#true()) -> tuple#2(#abs(#0()),#abs(#pos(#s(#0())))) - Signature: {#abs/1,#add/2,#and/2,#ckgt/1,#cklt/1,#compare/2,#div/2,#eq/2,#equal/2,#greater/2,#less/2,#mult/2,#natdiv/2 ,#natmult/2,#natsub/2,#pred/1,#sub/2,#succ/1,*/2,+/2,-/2,add/2,add'/3,add'#1/3,add'#2/4,add'#3/3,bitToInt/1 ,bitToInt'/2,bitToInt'#1/2,compare/2,compare#1/2,compare#2/3,compare#3/3,compare#4/4,compare#5/3,compare#6/1 ,diff/3,diff#1/1,div/2,leq/2,mod/2,mult/2,mult#1/2,mult#2/3,mult#3/3,mult3/3,sub/2,sub#1/1,sub'/3,sub'#1/3 ,sub'#2/4,sub'#3/3,sub'#4/2,sub'#5/3,sum/3,sum#1/1,sum#2/2,sum#3/2,sum#4/1,#abs#/1,#add#/2,#and#/2,#ckgt#/1 ,#cklt#/1,#compare#/2,#div#/2,#eq#/2,#equal#/2,#greater#/2,#less#/2,#mult#/2,#natdiv#/2,#natmult#/2 ,#natsub#/2,#pred#/1,#sub#/2,#succ#/1,*#/2,+#/2,-#/2,add#/2,add'#/3,add'#1#/3,add'#2#/4,add'#3#/3 ,bitToInt#/1,bitToInt'#/2,bitToInt'#1#/2,compare#/2,compare#1#/2,compare#2#/3,compare#3#/3,compare#4#/4 ,compare#5#/3,compare#6#/1,diff#/3,diff#1#/1,div#/2,leq#/2,mod#/2,mult#/2,mult#1#/2,mult#2#/3,mult#3#/3 ,mult3#/3,sub#/2,sub#1#/1,sub'#/3,sub'#1#/3,sub'#2#/4,sub'#3#/3,sub'#4#/2,sub'#5#/3,sum#/3,sum#1#/1,sum#2#/2 ,sum#3#/2,sum#4#/1} / {#0/0,#EQ/0,#GT/0,#LT/0,#divByZero/0,#false/0,#neg/1,#pos/1,#s/1,#true/0,::/2,nil/0 ,tuple#2/2,c_1/0,c_2/0,c_3/0,c_4/0,c_5/1,c_6/2,c_7/2,c_8/1,c_9/1,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/1 ,c_16/0,c_17/1,c_18/1,c_19/1,c_20/1,c_21/1,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/2,c_28/0,c_29/2,c_30/2 ,c_31/1,c_32/1,c_33/1,c_34/7,c_35/1,c_36/1,c_37/1,c_38/1,c_39/3,c_40/1,c_41/2,c_42/0,c_43/1,c_44/0,c_45/1 ,c_46/2,c_47/1,c_48/0,c_49/1,c_50/1,c_51/0,c_52/1,c_53/0,c_54/1,c_55/2,c_56/0,c_57/1,c_58/3,c_59/2,c_60/2 ,c_61/2,c_62/2,c_63/2,c_64/2,c_65/2,c_66/0,c_67/1,c_68/2,c_69/1,c_70/2,c_71/0,c_72/0,c_73/0,c_74/0,c_75/0 ,c_76/0,c_77/0,c_78/0,c_79/0,c_80/0,c_81/0,c_82/0,c_83/0,c_84/0,c_85/0,c_86/1,c_87/0,c_88/0,c_89/0,c_90/1 ,c_91/0,c_92/1,c_93/0,c_94/0,c_95/0,c_96/0,c_97/1,c_98/1,c_99/0,c_100/1,c_101/1,c_102/0,c_103/0,c_104/0 ,c_105/0,c_106/0,c_107/1,c_108/0,c_109/0,c_110/0,c_111/1,c_112/0,c_113/1,c_114/3,c_115/0,c_116/0,c_117/0 ,c_118/0,c_119/0,c_120/0,c_121/0,c_122/3,c_123/0,c_124/0,c_125/0,c_126/0,c_127/1,c_128/1,c_129/0,c_130/1 ,c_131/1,c_132/0,c_133/2,c_134/0,c_135/2,c_136/0,c_137/1,c_138/0,c_139/0,c_140/0,c_141/0,c_142/0,c_143/1 ,c_144/1,c_145/0,c_146/0,c_147/0,c_148/0} - Obligation: innermost runtime complexity wrt. defined symbols {#abs#,#add#,#and#,#ckgt#,#cklt#,#compare#,#div#,#eq# ,#equal#,#greater#,#less#,#mult#,#natdiv#,#natmult#,#natsub#,#pred#,#sub#,#succ#,*#,+#,-#,add#,add'#,add'#1# ,add'#2#,add'#3#,bitToInt#,bitToInt'#,bitToInt'#1#,compare#,compare#1#,compare#2#,compare#3#,compare#4# ,compare#5#,compare#6#,diff#,diff#1#,div#,leq#,mod#,mult#,mult#1#,mult#2#,mult#3#,mult3#,sub#,sub#1#,sub'# ,sub'#1#,sub'#2#,sub'#3#,sub'#4#,sub'#5#,sum#,sum#1#,sum#2#,sum#3#,sum#4#} and constructors {#0,#EQ,#GT,#LT ,#divByZero,#false,#neg,#pos,#s,#true,::,nil,tuple#2} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). WORST_CASE(?,O(n^2))