* 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: UsableRules 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:
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()
#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,@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)
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)
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()))))
#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#(@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()))))
* Step 4: 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(#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()
#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,@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)
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)
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 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())))))
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(#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()
#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,@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)
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)
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 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))
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(#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()
#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,@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)
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)
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 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()))
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(#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()
#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,@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)
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)
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 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))
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(#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()
#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,@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)
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)
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 9: 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(#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()
#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,@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)
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)
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 10: 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(#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()
#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,@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)
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)
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 11: 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(#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()
#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,@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)
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)
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 12: 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(#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()
#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,@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)
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)
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 13: 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 14: Decompose 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:
Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd}
+ Details:
We analyse the complexity of following sub-problems (R) and (S).
Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component.
Problem (R)
- Strict DPs:
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'))
- 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#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}
Problem (S)
- 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))
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 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'))
- 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}
** Step 14.a:1: RemoveWeakSuffixes 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'))
- 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#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:
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:W:bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))))
-->_1 bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)):7
7:W: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:W: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:W:compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2))
-->_1 compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)):10
10:W: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:W:compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
-->_1 compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)):9
13:W: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:W: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)):13
-->_1 mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)):15
15:W: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:W:mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs))
-->_1 add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))):1
17:W: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:W:sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
-->_1 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):19
19:W: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:W: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:W: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:W: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
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
18: sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
19: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r))
22: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r'))
21: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys))
20: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs))
9: compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2))
11: compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
10: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs))
6: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))))
7: bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n))
8: bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))))
** Step 14.a:2: 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'))
- Weak DPs:
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))
- 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) -> 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))
** Step 14.a:3: 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'))
- Weak DPs:
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))
- 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:
DecomposeDG {onSelection = all below first cut in WDG, onUpper = Just someStrategy, onLower = Nothing}
+ Details:
We decompose the input problem according to the dependency graph into the upper component
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))
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.
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)
*** Step 14.a:3.a:1: PredecessorEstimationCP WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2))
- Weak DPs:
mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@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()
#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:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
1: mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2))
Consider the set of all dependency pairs
1: 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))
3: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
SPACE(?,?)on application of the dependency pairs
{1}
These cover all (indirect) predecessors of dependency pairs
{1,2,3}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
**** Step 14.a:3.a:1.a:1: NaturalMI WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2))
- Weak DPs:
mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@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()
#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 first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
+ Details:
We apply a matrix interpretation of kind constructor based matrix interpretation:
The following argument positions are considered usable:
uargs(c_40) = {1},
uargs(c_41) = {1,2},
uargs(c_46) = {1,2}
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) = [4]
p(#EQ) = [0]
p(#GT) = [0]
p(#LT) = [0]
p(#abs) = [2] x1 + [6]
p(#add) = [5]
p(#and) = [0]
p(#ckgt) = [0]
p(#cklt) = [0]
p(#compare) = [0]
p(#div) = [0]
p(#divByZero) = [0]
p(#eq) = [0]
p(#equal) = [1] x1 + [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) = [2] x1 + [4]
p(#s) = [1] x1 + [0]
p(#sub) = [0]
p(#succ) = [3]
p(#true) = [1]
p(*) = [0]
p(+) = [0]
p(-) = [0]
p(::) = [1] x2 + [2]
p(add) = [1] x2 + [2]
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) = [2] x1 + [2]
p(mult#1) = [2] x1 + [2]
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) = [7]
p(sum#2) = [4] x1 + [1]
p(sum#3) = [3]
p(sum#4) = [1] 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#) = [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] x1 + [1]
p(mult#1#) = [2] x1 + [0]
p(mult#2#) = [0]
p(mult#3#) = [0]
p(mult3#) = [6] x1 + [4] x3 + [6]
p(sub#) = [1] x2 + [0]
p(sub#1#) = [2] x1 + [0]
p(sub'#) = [2] x2 + [0]
p(sub'#1#) = [1] x1 + [0]
p(sub'#2#) = [1] x1 + [4] x2 + [1] x3 + [1] x4 + [0]
p(sub'#3#) = [4] x2 + [4] x3 + [0]
p(sub'#4#) = [2] x2 + [0]
p(sub'#5#) = [0]
p(sum#) = [1] x1 + [0]
p(sum#1#) = [0]
p(sum#2#) = [1] x1 + [1] x2 + [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) = [2] x2 + [0]
p(c_7) = [0]
p(c_8) = [0]
p(c_9) = [0]
p(c_10) = [0]
p(c_11) = [2] x1 + [0]
p(c_12) = [0]
p(c_13) = [1] x1 + [0]
p(c_14) = [0]
p(c_15) = [1] x1 + [0]
p(c_16) = [0]
p(c_17) = [0]
p(c_18) = [0]
p(c_19) = [0]
p(c_20) = [0]
p(c_21) = [1] x1 + [0]
p(c_22) = [2] x1 + [0]
p(c_23) = [0]
p(c_24) = [0]
p(c_25) = [1] x1 + [0]
p(c_26) = [1] x1 + [0]
p(c_27) = [4] x1 + [2] x2 + [0]
p(c_28) = [0]
p(c_29) = [4] x1 + [0]
p(c_30) = [0]
p(c_31) = [0]
p(c_32) = [0]
p(c_33) = [2] x1 + [0]
p(c_34) = [1] x3 + [4] x4 + [1] x6 + [0]
p(c_35) = [0]
p(c_36) = [1] x1 + [0]
p(c_37) = [0]
p(c_38) = [4] x1 + [0]
p(c_39) = [4] x1 + [2] x2 + [0]
p(c_40) = [1] x1 + [1]
p(c_41) = [1] x1 + [1] x2 + [1]
p(c_42) = [0]
p(c_43) = [1] x1 + [0]
p(c_44) = [0]
p(c_45) = [1] x1 + [0]
p(c_46) = [1] x1 + [1] x2 + [0]
p(c_47) = [0]
p(c_48) = [0]
p(c_49) = [2]
p(c_50) = [0]
p(c_51) = [0]
p(c_52) = [0]
p(c_53) = [0]
p(c_54) = [0]
p(c_55) = [1] x2 + [0]
p(c_56) = [0]
p(c_57) = [1] x1 + [0]
p(c_58) = [4] x2 + [0]
p(c_59) = [0]
p(c_60) = [2] x1 + [2] x2 + [0]
p(c_61) = [1] x1 + [0]
p(c_62) = [4] x2 + [0]
p(c_63) = [4] x2 + [0]
p(c_64) = [1] x1 + [1] x2 + [0]
p(c_65) = [1] x1 + [0]
p(c_66) = [0]
p(c_67) = [0]
p(c_68) = [1] x2 + [0]
p(c_69) = [2] 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) = [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) = [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) = [0]
p(c_114) = [2] x1 + [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) = [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) = [0]
p(c_131) = [1] x1 + [0]
p(c_132) = [0]
p(c_133) = [0]
p(c_134) = [0]
p(c_135) = [4] 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) = [1] x1 + [0]
p(c_144) = [4] x1 + [0]
p(c_145) = [0]
p(c_146) = [0]
p(c_147) = [0]
p(c_148) = [0]
Following rules are strictly oriented:
mult#1#(::(@x,@xs),@b2) = [2] @xs + [4]
> [2] @xs + [2]
= c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2))
Following rules are (at-least) weakly oriented:
mult#(@b1,@b2) = [2] @b1 + [1]
>= [2] @b1 + [1]
= c_40(mult#1#(@b1,@b2))
mult3#(@b1,@b2,@b3) = [6] @b1 + [4] @b3 + [6]
>= [6] @b1 + [6]
= c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
add(@b1,@b2) = [1] @b2 + [2]
>= [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) = [2] @b1 + [2]
>= [2] @b1 + [2]
= mult#1(@b1,@b2)
mult#1(::(@x,@xs),@b2) = [2] @xs + [6]
>= [2] @xs + [6]
= mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x)
mult#1(nil(),@b2) = [2]
>= [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 + [2]
= add(@b2,@zs)
**** Step 14.a:3.a:1.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
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))
- 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:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
**** Step 14.a:3.a:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
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))
- 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:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W: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)):2
2:W: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)):1
3:W:mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
-->_2 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):1
-->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):1
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
3: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
1: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
2: mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2))
**** Step 14.a:3.a:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- 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).
*** Step 14.a:3.b:1: PredecessorEstimationCP 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'))
- 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))
mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs))
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()
#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:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
3: add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs))
Consider the set of all dependency pairs
1: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#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))
5: add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r'))
6: mult#(@b1,@b2) -> mult#1#(@b1,@b2)
7: mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2)
8: mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x)
9: mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs))
10: mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs))
11: mult3#(@b1,@b2,@b3) -> mult#(@b1,@b2)
12: mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2)
Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
SPACE(?,?)on application of the dependency pairs
{3}
These cover all (indirect) predecessors of dependency pairs
{3,4,5,11,12}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
**** Step 14.a:3.b:1.a:1: 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'))
- 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))
mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs))
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()
#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 first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
+ Details:
We apply a matrix interpretation of kind constructor based matrix interpretation:
The following argument positions are considered usable:
uargs(c_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) = [3]
p(#EQ) = [0]
p(#GT) = [0]
p(#LT) = [0]
p(#abs) = [0]
p(#add) = [6]
p(#and) = [6] x1 + [2]
p(#ckgt) = [0]
p(#cklt) = [0]
p(#compare) = [0]
p(#div) = [0]
p(#divByZero) = [0]
p(#eq) = [2] x2 + [1]
p(#equal) = [1] x1 + [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) = [0]
p(#pred) = [6]
p(#s) = [4]
p(#sub) = [0]
p(#succ) = [7]
p(#true) = [0]
p(*) = [0]
p(+) = [5]
p(-) = [0]
p(::) = [1] x2 + [2]
p(add) = [0]
p(add') = [2]
p(add'#1) = [0]
p(add'#2) = [5]
p(add'#3) = [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) = [0]
p(mult) = [7]
p(mult#1) = [1] x1 + [5]
p(mult#2) = [3]
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) = [0]
p(sum#2) = [4] x1 + [6] x2 + [1]
p(sum#3) = [4]
p(sum#4) = [1]
p(tuple#2) = [0]
p(#abs#) = [0]
p(#add#) = [0]
p(#and#) = [0]
p(#ckgt#) = [0]
p(#cklt#) = [0]
p(#compare#) = [0]
p(#div#) = [0]
p(#eq#) = [1] x1 + [1] x2 + [0]
p(#equal#) = [1]
p(#greater#) = [0]
p(#less#) = [4] x2 + [1]
p(#mult#) = [0]
p(#natdiv#) = [1] x2 + [4]
p(#natmult#) = [0]
p(#natsub#) = [2]
p(#pred#) = [0]
p(#sub#) = [0]
p(#succ#) = [1] x1 + [0]
p(*#) = [2] x1 + [1] x2 + [1]
p(+#) = [0]
p(-#) = [0]
p(add#) = [4] x1 + [0]
p(add'#) = [4] x1 + [0]
p(add'#1#) = [4] x1 + [0]
p(add'#2#) = [4] x4 + [0]
p(add'#3#) = [4] x2 + [0]
p(bitToInt#) = [1]
p(bitToInt'#) = [2] x2 + [1]
p(bitToInt'#1#) = [1] x2 + [1]
p(compare#) = [2] x1 + [1]
p(compare#1#) = [2] x1 + [0]
p(compare#2#) = [1] x1 + [4]
p(compare#3#) = [1] x3 + [1]
p(compare#4#) = [2] x2 + [1] x3 + [4] x4 + [1]
p(compare#5#) = [1] x1 + [4] x2 + [1] x3 + [4]
p(compare#6#) = [4]
p(diff#) = [1] x2 + [2] x3 + [4]
p(diff#1#) = [1] x1 + [0]
p(div#) = [1] x1 + [4]
p(leq#) = [4] x2 + [0]
p(mod#) = [1]
p(mult#) = [4] x2 + [2]
p(mult#1#) = [4] x2 + [2]
p(mult#2#) = [4] x2 + [2]
p(mult#3#) = [4] x2 + [0]
p(mult3#) = [1] x1 + [7] x2 + [2]
p(sub#) = [1] x1 + [0]
p(sub#1#) = [1] x1 + [1]
p(sub'#) = [1] x1 + [1] x2 + [2] x3 + [0]
p(sub'#1#) = [1] x1 + [1] x2 + [1]
p(sub'#2#) = [2] x2 + [0]
p(sub'#3#) = [1] x2 + [4]
p(sub'#4#) = [1] x1 + [1]
p(sub'#5#) = [1] x2 + [1] x3 + [0]
p(sum#) = [4] x1 + [0]
p(sum#1#) = [0]
p(sum#2#) = [1] x1 + [2] x2 + [1]
p(sum#3#) = [1] x1 + [1]
p(sum#4#) = [0]
p(c_1) = [2]
p(c_2) = [1]
p(c_3) = [4]
p(c_4) = [1]
p(c_5) = [1]
p(c_6) = [1] x2 + [0]
p(c_7) = [1] x2 + [0]
p(c_8) = [1] x1 + [2]
p(c_9) = [1] x1 + [0]
p(c_10) = [1] x1 + [0]
p(c_11) = [1] x1 + [0]
p(c_12) = [1] x1 + [0]
p(c_13) = [1] x1 + [7]
p(c_14) = [1]
p(c_15) = [1] x1 + [0]
p(c_16) = [0]
p(c_17) = [1] x1 + [0]
p(c_18) = [4] x1 + [0]
p(c_19) = [1] x1 + [2]
p(c_20) = [4] x1 + [4]
p(c_21) = [0]
p(c_22) = [0]
p(c_23) = [4]
p(c_24) = [4]
p(c_25) = [1] x1 + [0]
p(c_26) = [0]
p(c_27) = [4]
p(c_28) = [2]
p(c_29) = [1] x1 + [2] x2 + [2]
p(c_30) = [0]
p(c_31) = [4] x1 + [1]
p(c_32) = [1]
p(c_33) = [0]
p(c_34) = [1] x1 + [4] x2 + [2] x3 + [1] x5 + [1] x6 + [1] x7 + [1]
p(c_35) = [1] x1 + [1]
p(c_36) = [1] x1 + [4]
p(c_37) = [1] x1 + [1]
p(c_38) = [1] x1 + [1]
p(c_39) = [1] x3 + [1]
p(c_40) = [1] x1 + [0]
p(c_41) = [1] x2 + [0]
p(c_42) = [2]
p(c_43) = [1] x1 + [0]
p(c_44) = [0]
p(c_45) = [1] x1 + [0]
p(c_46) = [0]
p(c_47) = [2] x1 + [1]
p(c_48) = [1]
p(c_49) = [1] x1 + [1]
p(c_50) = [1] x1 + [0]
p(c_51) = [2]
p(c_52) = [2]
p(c_53) = [0]
p(c_54) = [1] x1 + [1]
p(c_55) = [1] x1 + [1] x2 + [0]
p(c_56) = [0]
p(c_57) = [1] x1 + [1]
p(c_58) = [1] x3 + [0]
p(c_59) = [1] x2 + [0]
p(c_60) = [4] x2 + [0]
p(c_61) = [1] x1 + [1]
p(c_62) = [4] x2 + [2]
p(c_63) = [1] x1 + [1]
p(c_64) = [1]
p(c_65) = [0]
p(c_66) = [1]
p(c_67) = [0]
p(c_68) = [2] x1 + [1]
p(c_69) = [1] x1 + [1]
p(c_70) = [1]
p(c_71) = [0]
p(c_72) = [1]
p(c_73) = [4]
p(c_74) = [0]
p(c_75) = [0]
p(c_76) = [2]
p(c_77) = [0]
p(c_78) = [0]
p(c_79) = [0]
p(c_80) = [0]
p(c_81) = [1]
p(c_82) = [2]
p(c_83) = [0]
p(c_84) = [1]
p(c_85) = [1]
p(c_86) = [1] x1 + [4]
p(c_87) = [2]
p(c_88) = [1]
p(c_89) = [0]
p(c_90) = [1] x1 + [0]
p(c_91) = [1]
p(c_92) = [2]
p(c_93) = [1]
p(c_94) = [1]
p(c_95) = [0]
p(c_96) = [1]
p(c_97) = [4] x1 + [4]
p(c_98) = [1]
p(c_99) = [4]
p(c_100) = [1] x1 + [0]
p(c_101) = [4] x1 + [1]
p(c_102) = [4]
p(c_103) = [0]
p(c_104) = [1]
p(c_105) = [2]
p(c_106) = [2]
p(c_107) = [0]
p(c_108) = [0]
p(c_109) = [2]
p(c_110) = [4]
p(c_111) = [2]
p(c_112) = [0]
p(c_113) = [1]
p(c_114) = [1] x1 + [0]
p(c_115) = [1]
p(c_116) = [0]
p(c_117) = [0]
p(c_118) = [0]
p(c_119) = [4]
p(c_120) = [2]
p(c_121) = [1]
p(c_122) = [1] x1 + [2] x3 + [1]
p(c_123) = [2]
p(c_124) = [0]
p(c_125) = [0]
p(c_126) = [4]
p(c_127) = [2]
p(c_128) = [4]
p(c_129) = [4]
p(c_130) = [1] x1 + [1]
p(c_131) = [4]
p(c_132) = [0]
p(c_133) = [1] x1 + [4] x2 + [1]
p(c_134) = [1]
p(c_135) = [1] x2 + [4]
p(c_136) = [4]
p(c_137) = [1] x1 + [0]
p(c_138) = [0]
p(c_139) = [2]
p(c_140) = [1]
p(c_141) = [1]
p(c_142) = [0]
p(c_143) = [4]
p(c_144) = [2] x1 + [4]
p(c_145) = [4]
p(c_146) = [0]
p(c_147) = [4]
p(c_148) = [0]
Following rules are strictly oriented:
add'#1#(::(@x,@xs),@b2,@r) = [4] @xs + [8]
> [4] @xs + [7]
= c_13(add'#2#(@b2,@r,@x,@xs))
Following rules are (at-least) weakly oriented:
add#(@b1,@b2) = [4] @b1 + [0]
>= [4] @b1 + [0]
= c_11(add'#(@b1,@b2,#abs(#0())))
add'#(@b1,@b2,@r) = [4] @b1 + [0]
>= [4] @b1 + [0]
= c_12(add'#1#(@b1,@b2,@r))
add'#2#(::(@y,@ys),@r,@x,@xs) = [4] @xs + [0]
>= [4] @xs + [0]
= c_15(add'#3#(sum(@x,@y,@r),@xs,@ys))
add'#3#(tuple#2(@z,@r'),@xs,@ys) = [4] @xs + [0]
>= [4] @xs + [0]
= c_17(add'#(@xs,@ys,@r'))
mult#(@b1,@b2) = [4] @b2 + [2]
>= [4] @b2 + [2]
= mult#1#(@b1,@b2)
mult#1#(::(@x,@xs),@b2) = [4] @b2 + [2]
>= [4] @b2 + [2]
= mult#(@xs,@b2)
mult#1#(::(@x,@xs),@b2) = [4] @b2 + [2]
>= [4] @b2 + [2]
= mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x)
mult#2#(@zs,@b2,@x) = [4] @b2 + [2]
>= [4] @b2 + [0]
= c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs))
mult#3#(#true(),@b2,@zs) = [4] @b2 + [0]
>= [4] @b2 + [0]
= c_45(add#(@b2,@zs))
mult3#(@b1,@b2,@b3) = [1] @b1 + [7] @b2 + [2]
>= [4] @b2 + [2]
= mult#(@b1,@b2)
mult3#(@b1,@b2,@b3) = [1] @b1 + [7] @b2 + [2]
>= [4] @b2 + [2]
= mult#(mult(@b1,@b2),@b2)
**** Step 14.a:3.b:1.a:2: Assumption WORST_CASE(?,O(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'#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'#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#(@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()
#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:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
**** Step 14.a:3.b:1.b:1: PredecessorEstimationCP 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))
- Weak DPs:
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#(@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()
#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:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
1: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())))
Consider the set of all dependency pairs
1: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#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))
5: add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r'))
6: mult#(@b1,@b2) -> mult#1#(@b1,@b2)
7: mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2)
8: mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x)
9: mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs))
10: mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs))
11: mult3#(@b1,@b2,@b3) -> mult#(@b1,@b2)
12: mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2)
Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
SPACE(?,?)on application of the dependency pairs
{1}
These cover all (indirect) predecessors of dependency pairs
{1,11,12}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
***** Step 14.a:3.b:1.b:1.a:1: 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))
- Weak DPs:
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#(@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()
#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 first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
+ Details:
We apply a matrix interpretation of kind constructor based matrix interpretation:
The following argument positions are considered usable:
uargs(c_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) = [1]
p(#abs) = [4]
p(#add) = [1]
p(#and) = [5] x2 + [0]
p(#ckgt) = [0]
p(#cklt) = [4]
p(#compare) = [1] x2 + [1]
p(#div) = [2] x2 + [1]
p(#divByZero) = [2]
p(#eq) = [1] x1 + [0]
p(#equal) = [4] x1 + [0]
p(#false) = [2]
p(#greater) = [2] x2 + [4]
p(#less) = [2]
p(#mult) = [1] x1 + [2]
p(#natdiv) = [1]
p(#natmult) = [1]
p(#natsub) = [1] x1 + [0]
p(#neg) = [2]
p(#pos) = [1] x1 + [0]
p(#pred) = [1] x1 + [6]
p(#s) = [0]
p(#sub) = [1]
p(#succ) = [1] x1 + [2]
p(#true) = [0]
p(*) = [1]
p(+) = [5]
p(-) = [1]
p(::) = [0]
p(add) = [4] x2 + [0]
p(add') = [0]
p(add'#1) = [1] x2 + [0]
p(add'#2) = [4] x1 + [1] x4 + [2]
p(add'#3) = [2]
p(bitToInt) = [0]
p(bitToInt') = [4] x2 + [0]
p(bitToInt'#1) = [1] x2 + [0]
p(compare) = [1] x2 + [1]
p(compare#1) = [1] x2 + [0]
p(compare#2) = [1] x2 + [0]
p(compare#3) = [1] x3 + [0]
p(compare#4) = [2]
p(compare#5) = [1] x3 + [2]
p(compare#6) = [1]
p(diff) = [2] x1 + [2]
p(diff#1) = [2]
p(div) = [0]
p(leq) = [1] x1 + [1]
p(mod) = [1]
p(mult) = [0]
p(mult#1) = [0]
p(mult#2) = [1] x2 + [4] x3 + [0]
p(mult#3) = [0]
p(mult3) = [1] x2 + [0]
p(nil) = [1]
p(sub) = [0]
p(sub#1) = [1]
p(sub') = [1] x2 + [0]
p(sub'#1) = [1] x1 + [1] x3 + [0]
p(sub'#2) = [1] x2 + [1] x4 + [2]
p(sub'#3) = [4] x1 + [0]
p(sub'#4) = [4] x1 + [1] x2 + [2]
p(sub'#5) = [1] x2 + [0]
p(sum) = [0]
p(sum#1) = [1] x1 + [1]
p(sum#2) = [1]
p(sum#3) = [1]
p(sum#4) = [0]
p(tuple#2) = [4]
p(#abs#) = [1] x1 + [1]
p(#add#) = [1]
p(#and#) = [0]
p(#ckgt#) = [1]
p(#cklt#) = [0]
p(#compare#) = [2] x2 + [1]
p(#div#) = [0]
p(#eq#) = [1] x2 + [0]
p(#equal#) = [4] x2 + [1]
p(#greater#) = [0]
p(#less#) = [0]
p(#mult#) = [0]
p(#natdiv#) = [4] x1 + [1] x2 + [0]
p(#natmult#) = [1] x1 + [1]
p(#natsub#) = [1] x1 + [2] x2 + [2]
p(#pred#) = [2]
p(#sub#) = [1] x2 + [1]
p(#succ#) = [0]
p(*#) = [1] x1 + [0]
p(+#) = [2] x1 + [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#) = [2] x1 + [1]
p(compare#) = [1] x2 + [0]
p(compare#1#) = [1] x2 + [2]
p(compare#2#) = [1] x1 + [4]
p(compare#3#) = [2] x1 + [1] x2 + [1]
p(compare#4#) = [1] x3 + [1]
p(compare#5#) = [1] x3 + [0]
p(compare#6#) = [4]
p(diff#) = [1]
p(diff#1#) = [1]
p(div#) = [1] x1 + [1] x2 + [1]
p(leq#) = [4] x1 + [2] x2 + [1]
p(mod#) = [1] x1 + [1] x2 + [4]
p(mult#) = [7]
p(mult#1#) = [7]
p(mult#2#) = [4] x1 + [7]
p(mult#3#) = [1] x3 + [1]
p(mult3#) = [7]
p(sub#) = [2] x2 + [1]
p(sub#1#) = [0]
p(sub'#) = [0]
p(sub'#1#) = [1] x2 + [0]
p(sub'#2#) = [1] x3 + [1]
p(sub'#3#) = [4] x1 + [0]
p(sub'#4#) = [1] x2 + [1]
p(sub'#5#) = [2] x1 + [4] x3 + [1]
p(sum#) = [2] x1 + [1] x3 + [0]
p(sum#1#) = [4] x1 + [0]
p(sum#2#) = [1] x1 + [1]
p(sum#3#) = [0]
p(sum#4#) = [4] x1 + [4]
p(c_1) = [0]
p(c_2) = [0]
p(c_3) = [0]
p(c_4) = [2]
p(c_5) = [1]
p(c_6) = [1] x1 + [1] x2 + [0]
p(c_7) = [1] x1 + [1] x2 + [0]
p(c_8) = [4]
p(c_9) = [2]
p(c_10) = [1]
p(c_11) = [1] x1 + [0]
p(c_12) = [2] x1 + [0]
p(c_13) = [4] x1 + [0]
p(c_14) = [4]
p(c_15) = [4] x1 + [0]
p(c_16) = [1]
p(c_17) = [4] x1 + [0]
p(c_18) = [1]
p(c_19) = [1] x1 + [1]
p(c_20) = [1]
p(c_21) = [0]
p(c_22) = [0]
p(c_23) = [1] x1 + [0]
p(c_24) = [1] x1 + [1]
p(c_25) = [0]
p(c_26) = [0]
p(c_27) = [0]
p(c_28) = [0]
p(c_29) = [4]
p(c_30) = [4] x1 + [1] x2 + [0]
p(c_31) = [1]
p(c_32) = [1] x1 + [0]
p(c_33) = [0]
p(c_34) = [4] x1 + [1] x2 + [4] x7 + [0]
p(c_35) = [1] x1 + [2]
p(c_36) = [0]
p(c_37) = [1] x1 + [1]
p(c_38) = [1] x1 + [1]
p(c_39) = [2] x1 + [1] x2 + [1]
p(c_40) = [0]
p(c_41) = [4] x1 + [1]
p(c_42) = [0]
p(c_43) = [4] x1 + [3]
p(c_44) = [0]
p(c_45) = [1] x1 + [0]
p(c_46) = [2]
p(c_47) = [0]
p(c_48) = [0]
p(c_49) = [0]
p(c_50) = [0]
p(c_51) = [0]
p(c_52) = [0]
p(c_53) = [0]
p(c_54) = [0]
p(c_55) = [0]
p(c_56) = [0]
p(c_57) = [0]
p(c_58) = [0]
p(c_59) = [0]
p(c_60) = [0]
p(c_61) = [1] x2 + [0]
p(c_62) = [0]
p(c_63) = [0]
p(c_64) = [0]
p(c_65) = [0]
p(c_66) = [0]
p(c_67) = [0]
p(c_68) = [0]
p(c_69) = [0]
p(c_70) = [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) = [2]
p(c_104) = [0]
p(c_105) = [0]
p(c_106) = [0]
p(c_107) = [0]
p(c_108) = [0]
p(c_109) = [1]
p(c_110) = [0]
p(c_111) = [1] x1 + [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) = [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) = [7]
>= [7]
= mult#1#(@b1,@b2)
mult#1#(::(@x,@xs),@b2) = [7]
>= [7]
= mult#(@xs,@b2)
mult#1#(::(@x,@xs),@b2) = [7]
>= [7]
= mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x)
mult#2#(@zs,@b2,@x) = [4] @zs + [7]
>= [4] @zs + [7]
= c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs))
mult#3#(#true(),@b2,@zs) = [1] @zs + [1]
>= [1]
= c_45(add#(@b2,@zs))
mult3#(@b1,@b2,@b3) = [7]
>= [7]
= mult#(@b1,@b2)
mult3#(@b1,@b2,@b3) = [7]
>= [7]
= mult#(mult(@b1,@b2),@b2)
***** Step 14.a:3.b:1.b:1.a:2: Assumption WORST_CASE(?,O(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#(@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()
#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:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
***** Step 14.a:3.b:1.b:1.b:1: PredecessorEstimationCP 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#(@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()
#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:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
1: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r))
Consider the set of all dependency pairs
1: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r))
2: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())))
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))
5: add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r'))
6: mult#(@b1,@b2) -> mult#1#(@b1,@b2)
7: mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2)
8: mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x)
9: mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs))
10: mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs))
11: mult3#(@b1,@b2,@b3) -> mult#(@b1,@b2)
12: mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2)
Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
SPACE(?,?)on application of the dependency pairs
{1}
These cover all (indirect) predecessors of dependency pairs
{1,3,4,5,11,12}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
****** Step 14.a:3.b:1.b:1.b:1.a:1: 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#(@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()
#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 first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
+ Details:
We apply a matrix interpretation of kind constructor based matrix interpretation:
The following argument positions are considered usable:
uargs(c_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] x1 + [3]
p(#add) = [6] x1 + [0]
p(#and) = [0]
p(#ckgt) = [0]
p(#cklt) = [0]
p(#compare) = [0]
p(#div) = [0]
p(#divByZero) = [0]
p(#eq) = [0]
p(#equal) = [1]
p(#false) = [0]
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) = [2]
p(#pred) = [0]
p(#s) = [1] x1 + [0]
p(#sub) = [0]
p(#succ) = [0]
p(#true) = [0]
p(*) = [0]
p(+) = [4] x2 + [5]
p(-) = [0]
p(::) = [1] x2 + [1]
p(add) = [0]
p(add') = [3]
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) = [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) = [4] x2 + [0]
p(sum#3) = [1] x1 + [1]
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#) = [4] x1 + [6]
p(add'#) = [4] x1 + [5]
p(add'#1#) = [4] x1 + [4]
p(add'#2#) = [4] x4 + [5]
p(add'#3#) = [4] x2 + [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#) = [4] x2 + [6]
p(mult#1#) = [4] x2 + [6]
p(mult#2#) = [4] x2 + [6]
p(mult#3#) = [4] x2 + [6]
p(mult3#) = [6] x2 + [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) = [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) = [1] x1 + [0]
p(c_18) = [2] x1 + [0]
p(c_19) = [1] x1 + [0]
p(c_20) = [0]
p(c_21) = [2] x1 + [0]
p(c_22) = [1] x1 + [0]
p(c_23) = [0]
p(c_24) = [1] x1 + [0]
p(c_25) = [2] x1 + [0]
p(c_26) = [0]
p(c_27) = [2] x1 + [1] x2 + [0]
p(c_28) = [0]
p(c_29) = [2] x1 + [1] x2 + [0]
p(c_30) = [4] x1 + [1] x2 + [0]
p(c_31) = [1] x1 + [0]
p(c_32) = [0]
p(c_33) = [1] x1 + [0]
p(c_34) = [4] x1 + [1] x2 + [1] x4 + [0]
p(c_35) = [0]
p(c_36) = [2] x1 + [0]
p(c_37) = [0]
p(c_38) = [0]
p(c_39) = [1] x1 + [2] x2 + [1] x3 + [0]
p(c_40) = [1] x1 + [0]
p(c_41) = [4] x2 + [0]
p(c_42) = [0]
p(c_43) = [1] x1 + [0]
p(c_44) = [0]
p(c_45) = [1] x1 + [0]
p(c_46) = [2] x2 + [0]
p(c_47) = [1] x1 + [0]
p(c_48) = [0]
p(c_49) = [1] x1 + [0]
p(c_50) = [0]
p(c_51) = [0]
p(c_52) = [0]
p(c_53) = [0]
p(c_54) = [0]
p(c_55) = [4] x2 + [0]
p(c_56) = [0]
p(c_57) = [4] x1 + [0]
p(c_58) = [1] x1 + [0]
p(c_59) = [0]
p(c_60) = [1] x1 + [0]
p(c_61) = [0]
p(c_62) = [2] x1 + [0]
p(c_63) = [0]
p(c_64) = [0]
p(c_65) = [1] x1 + [2] x2 + [0]
p(c_66) = [0]
p(c_67) = [0]
p(c_68) = [0]
p(c_69) = [2] x1 + [0]
p(c_70) = [1] x1 + [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) = [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) = [2] 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) = [4] 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) = [2] 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) = [1] x1 + [0]
p(c_129) = [0]
p(c_130) = [0]
p(c_131) = [0]
p(c_132) = [0]
p(c_133) = [2] x2 + [0]
p(c_134) = [0]
p(c_135) = [1] x2 + [2]
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) = [1] x1 + [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,@r) = [4] @b1 + [5]
> [4] @b1 + [4]
= c_12(add'#1#(@b1,@b2,@r))
Following rules are (at-least) weakly oriented:
add#(@b1,@b2) = [4] @b1 + [6]
>= [4] @b1 + [5]
= c_11(add'#(@b1,@b2,#abs(#0())))
add'#1#(::(@x,@xs),@b2,@r) = [4] @xs + [8]
>= [4] @xs + [5]
= c_13(add'#2#(@b2,@r,@x,@xs))
add'#2#(::(@y,@ys),@r,@x,@xs) = [4] @xs + [5]
>= [4] @xs + [5]
= c_15(add'#3#(sum(@x,@y,@r),@xs,@ys))
add'#3#(tuple#2(@z,@r'),@xs,@ys) = [4] @xs + [5]
>= [4] @xs + [5]
= c_17(add'#(@xs,@ys,@r'))
mult#(@b1,@b2) = [4] @b2 + [6]
>= [4] @b2 + [6]
= mult#1#(@b1,@b2)
mult#1#(::(@x,@xs),@b2) = [4] @b2 + [6]
>= [4] @b2 + [6]
= mult#(@xs,@b2)
mult#1#(::(@x,@xs),@b2) = [4] @b2 + [6]
>= [4] @b2 + [6]
= mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x)
mult#2#(@zs,@b2,@x) = [4] @b2 + [6]
>= [4] @b2 + [6]
= c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs))
mult#3#(#true(),@b2,@zs) = [4] @b2 + [6]
>= [4] @b2 + [6]
= c_45(add#(@b2,@zs))
mult3#(@b1,@b2,@b3) = [6] @b2 + [6]
>= [4] @b2 + [6]
= mult#(@b1,@b2)
mult3#(@b1,@b2,@b3) = [6] @b2 + [6]
>= [4] @b2 + [6]
= mult#(mult(@b1,@b2),@b2)
****** Step 14.a:3.b:1.b:1.b:1.a:2: Assumption 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#(@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()
#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:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
****** Step 14.a:3.b:1.b:1.b:1.b:1: RemoveWeakSuffixes 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#(@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()
#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:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())))
-->_1 add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)):2
2:W: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:W: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:W: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:W: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:W:mult#(@b1,@b2) -> mult#1#(@b1,@b2)
-->_1 mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x):8
-->_1 mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2):7
7:W:mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2)
-->_1 mult#(@b1,@b2) -> mult#1#(@b1,@b2):6
8: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)):9
9:W: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)):10
10:W:mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs))
-->_1 add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))):1
11:W:mult3#(@b1,@b2,@b3) -> mult#(@b1,@b2)
-->_1 mult#(@b1,@b2) -> mult#1#(@b1,@b2):6
12:W:mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2)
-->_1 mult#(@b1,@b2) -> mult#1#(@b1,@b2):6
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
12: mult3#(@b1,@b2,@b3) -> mult#(mult(@b1,@b2),@b2)
11: mult3#(@b1,@b2,@b3) -> mult#(@b1,@b2)
6: mult#(@b1,@b2) -> mult#1#(@b1,@b2)
7: mult#1#(::(@x,@xs),@b2) -> mult#(@xs,@b2)
8: mult#1#(::(@x,@xs),@b2) -> mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x)
9: mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs))
10: mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs))
1: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())))
2: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r))
5: add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r'))
4: add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys))
3: add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs))
****** Step 14.a:3.b:1.b:1.b:1.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- 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).
** Step 14.b:1: PredecessorEstimation 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))
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 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'))
- 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:
PredecessorEstimation {onSelection = all simple predecessor estimation selector}
+ Details:
We estimate the number of application of
{10}
by application of
Pre({10}) = {9}.
Here rules are labelled as follows:
1: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))))
2: bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n))
3: bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))))
4: compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2))
5: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs))
6: compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
7: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
8: mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2))
9: mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs))
10: mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs))
11: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
12: sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
13: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r))
14: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs))
15: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys))
16: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r'))
17: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())))
18: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r))
19: add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs))
20: add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys))
21: add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r'))
** Step 14.b:2: PredecessorEstimation 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))
mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@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 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 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:
PredecessorEstimation {onSelection = all simple predecessor estimation selector}
+ Details:
We estimate the number of application of
{9}
by application of
Pre({9}) = {8}.
Here rules are labelled as follows:
1: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))))
2: bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n))
3: bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))))
4: compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2))
5: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs))
6: compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
7: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
8: mult#1#(::(@x,@xs),@b2) -> c_41(mult#2#(::(#abs(#0()),mult(@xs,@b2)),@b2,@x),mult#(@xs,@b2))
9: mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs))
10: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
11: sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
12: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r))
13: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs))
14: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys))
15: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r'))
16: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())))
17: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r))
18: add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs))
19: add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys))
20: add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r'))
21: mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs))
** Step 14.b:3: RemoveWeakSuffixes 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 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 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: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))
-->_1 mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs)):20
-->_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
15:W:add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())))
-->_1 add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r)):16
16:W: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)):17
17:W: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)):18
18:W: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')):19
19:W: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)):16
20:W: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)):21
21:W:mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs))
-->_1 add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0()))):15
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
20: mult#2#(@zs,@b2,@x) -> c_43(mult#3#(#equal(@x,#pos(#s(#0()))),@b2,@zs))
21: mult#3#(#true(),@b2,@zs) -> c_45(add#(@b2,@zs))
15: add#(@b1,@b2) -> c_11(add'#(@b1,@b2,#abs(#0())))
16: add'#(@b1,@b2,@r) -> c_12(add'#1#(@b1,@b2,@r))
19: add'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_17(add'#(@xs,@ys,@r'))
18: add'#2#(::(@y,@ys),@r,@x,@xs) -> c_15(add'#3#(sum(@x,@y,@r),@xs,@ys))
17: add'#1#(::(@x,@xs),@b2,@r) -> c_13(add'#2#(@b2,@r,@x,@xs))
** Step 14.b:4: 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 14.b:5: Decompose 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:
Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd}
+ Details:
We analyse the complexity of following sub-problems (R) and (S).
Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component.
Problem (R)
- Strict DPs:
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()))))))
- Weak DPs:
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}
Problem (S)
- Strict DPs:
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 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()))))))
- 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}
*** Step 14.b:5.a:1: RemoveWeakSuffixes 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()))))))
- Weak DPs:
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:
RemoveWeakSuffixes
+ 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:W:compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2))
-->_1 compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)):5
5:W: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:W:compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
-->_1 compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)):4
7:W:mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
-->_1 mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)):8
8:W:mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
-->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):7
9:W: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:W:sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
-->_1 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):11
11:W: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:W: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:W: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:W: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
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
10: sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
11: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r))
14: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r'))
13: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys))
12: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs))
9: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
7: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
8: mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
4: compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2))
6: compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
5: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs))
*** Step 14.b:5.a:2: UsableRules 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()))))))
- 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:
UsableRules
+ Details:
We replace rewrite rules by usable rules:
#abs(#pos(@x)) -> #pos(@x)
#add(#pos(#s(#0())),@y) -> #succ(@y)
#add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@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))
#natmult(#0(),@y) -> #0()
#natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@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)
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()))))))
*** Step 14.b:5.a:3: PredecessorEstimationCP 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()))))))
- Weak TRS:
#abs(#pos(@x)) -> #pos(@x)
#add(#pos(#s(#0())),@y) -> #succ(@y)
#add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@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))
#natmult(#0(),@y) -> #0()
#natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@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)
- 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:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
3: bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))))
Consider the set of all dependency pairs
1: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))))
2: bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n))
3: bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))))
Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
SPACE(?,?)on application of the dependency pairs
{3}
These cover all (indirect) predecessors of dependency pairs
{1,2,3}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
**** Step 14.b:5.a:3.a:1: 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()))))))
- Weak TRS:
#abs(#pos(@x)) -> #pos(@x)
#add(#pos(#s(#0())),@y) -> #succ(@y)
#add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@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))
#natmult(#0(),@y) -> #0()
#natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@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)
- 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 first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
+ Details:
We apply a matrix interpretation of kind constructor based matrix interpretation:
The following argument positions are considered usable:
uargs(c_18) = {1},
uargs(c_19) = {1},
uargs(c_20) = {1}
Following symbols are considered usable:
{#abs,#mult,*,#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) = [0]
p(#add) = [2] x2 + [7]
p(#and) = [0]
p(#ckgt) = [0]
p(#cklt) = [0]
p(#compare) = [0]
p(#div) = [0]
p(#divByZero) = [0]
p(#eq) = [0]
p(#equal) = [0]
p(#false) = [0]
p(#greater) = [0]
p(#less) = [0]
p(#mult) = [1] x1 + [2] x2 + [0]
p(#natdiv) = [0]
p(#natmult) = [4] x1 + [0]
p(#natsub) = [0]
p(#neg) = [2]
p(#pos) = [0]
p(#pred) = [0]
p(#s) = [0]
p(#sub) = [0]
p(#succ) = [0]
p(#true) = [0]
p(*) = [1] x1 + [2] x2 + [1]
p(+) = [0]
p(-) = [0]
p(::) = [1] x1 + [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) = [1]
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(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) = [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#) = [4] x1 + [0]
p(bitToInt'#) = [4] x1 + [4] x2 + [0]
p(bitToInt'#1#) = [4] x1 + [4] x2 + [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#) = [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#) = [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 + [0]
p(c_21) = [0]
p(c_22) = [0]
p(c_23) = [0]
p(c_24) = [0]
p(c_25) = [0]
p(c_26) = [2] x1 + [0]
p(c_27) = [2] x2 + [0]
p(c_28) = [0]
p(c_29) = [0]
p(c_30) = [0]
p(c_31) = [0]
p(c_32) = [1] x1 + [0]
p(c_33) = [4] x1 + [0]
p(c_34) = [4] x5 + [0]
p(c_35) = [2]
p(c_36) = [0]
p(c_37) = [0]
p(c_38) = [0]
p(c_39) = [0]
p(c_40) = [0]
p(c_41) = [0]
p(c_42) = [0]
p(c_43) = [0]
p(c_44) = [0]
p(c_45) = [0]
p(c_46) = [0]
p(c_47) = [0]
p(c_48) = [0]
p(c_49) = [0]
p(c_50) = [0]
p(c_51) = [0]
p(c_52) = [0]
p(c_53) = [0]
p(c_54) = [0]
p(c_55) = [0]
p(c_56) = [0]
p(c_57) = [0]
p(c_58) = [0]
p(c_59) = [0]
p(c_60) = [0]
p(c_61) = [0]
p(c_62) = [0]
p(c_63) = [0]
p(c_64) = [0]
p(c_65) = [0]
p(c_66) = [0]
p(c_67) = [0]
p(c_68) = [0]
p(c_69) = [0]
p(c_70) = [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) = [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'#1#(::(@x,@xs),@n) = [4] @n + [4] @x + [4] @xs + [8]
> [4] @n + [4] @xs + [4]
= c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))))
Following rules are (at-least) weakly oriented:
bitToInt#(@b) = [4] @b + [0]
>= [4] @b + [0]
= c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))))
bitToInt'#(@b,@n) = [4] @b + [4] @n + [0]
>= [4] @b + [4] @n + [0]
= c_19(bitToInt'#1#(@b,@n))
#abs(#pos(@x)) = [0]
>= [0]
= #pos(@x)
#mult(#0(),#0()) = [0]
>= [0]
= #0()
#mult(#0(),#neg(@y)) = [4]
>= [0]
= #0()
#mult(#0(),#pos(@y)) = [0]
>= [0]
= #0()
#mult(#neg(@x),#0()) = [2]
>= [0]
= #0()
#mult(#neg(@x),#neg(@y)) = [6]
>= [0]
= #pos(#natmult(@x,@y))
#mult(#neg(@x),#pos(@y)) = [2]
>= [2]
= #neg(#natmult(@x,@y))
#mult(#pos(@x),#0()) = [0]
>= [0]
= #0()
#mult(#pos(@x),#neg(@y)) = [4]
>= [2]
= #neg(#natmult(@x,@y))
#mult(#pos(@x),#pos(@y)) = [0]
>= [0]
= #pos(#natmult(@x,@y))
*(@x,@y) = [1] @x + [2] @y + [1]
>= [1] @x + [2] @y + [0]
= #mult(@x,@y)
**** Step 14.b:5.a:3.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))))
bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n))
- Weak DPs:
bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))))
- Weak TRS:
#abs(#pos(@x)) -> #pos(@x)
#add(#pos(#s(#0())),@y) -> #succ(@y)
#add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@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))
#natmult(#0(),@y) -> #0()
#natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@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)
- 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:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
**** Step 14.b:5.a:3.b:1: RemoveWeakSuffixes 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()))))))
- Weak TRS:
#abs(#pos(@x)) -> #pos(@x)
#add(#pos(#s(#0())),@y) -> #succ(@y)
#add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@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))
#natmult(#0(),@y) -> #0()
#natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@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)
- 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:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))))
-->_1 bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)):2
2:W: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:W: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
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
1: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))))
2: bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n))
3: bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))))
**** Step 14.b:5.a:3.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- Weak TRS:
#abs(#pos(@x)) -> #pos(@x)
#add(#pos(#s(#0())),@y) -> #succ(@y)
#add(#pos(#s(#s(@x))),@y) -> #succ(#add(#pos(#s(@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))
#natmult(#0(),@y) -> #0()
#natmult(#s(@x),@y) -> #add(#pos(@y),#natmult(@x,@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)
- 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 14.b:5.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
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 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()))))))
- 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:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2))
-->_1 compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)):2
2: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)):3
3:S:compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
-->_1 compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)):1
4:S:mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
-->_1 mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)):5
5:S:mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
-->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):4
6: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)):4
-->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):4
7:S:sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
-->_1 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):8
8: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)):9
9: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)):10
10: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')):11
11: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)):8
12:W:bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))))
-->_1 bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)):13
13:W:bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n))
-->_1 bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0())))))):14
14:W:bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))))
-->_1 bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n)):13
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
12: bitToInt#(@b) -> c_18(bitToInt'#(@b,#abs(#pos(#s(#0())))))
13: bitToInt'#(@b,@n) -> c_19(bitToInt'#1#(@b,@n))
14: bitToInt'#1#(::(@x,@xs),@n) -> c_20(bitToInt'#(@xs,*(@n,#pos(#s(#s(#0()))))))
*** Step 14.b:5.b:2: Decompose WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
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:
Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd}
+ Details:
We analyse the complexity of following sub-problems (R) and (S).
Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component.
Problem (R)
- Strict DPs:
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))
- Weak DPs:
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}
Problem (S)
- Strict DPs:
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:
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))
- 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}
**** Step 14.b:5.b:2.a:1: RemoveWeakSuffixes WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
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))
- Weak DPs:
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:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2))
-->_1 compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)):2
2: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)):3
3:S:compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
-->_1 compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)):1
4:W:mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
-->_1 mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)):5
5:W:mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
-->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):4
6:W:mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
-->_2 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):4
-->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):4
7:W:sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
-->_1 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):8
8:W: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)):9
9:W: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)):10
10:W: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')):11
11:W: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)):8
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
7: sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
8: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r))
11: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r'))
10: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys))
9: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs))
6: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
4: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
5: mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
**** Step 14.b:5.b:2.a:2: UsableRules WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
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))
- 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:
UsableRules
+ Details:
We replace rewrite rules by usable rules:
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))
**** Step 14.b:5.b:2.a:3: PredecessorEstimationCP WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
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))
- 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:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
3: compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
Consider the set of all dependency pairs
1: compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2))
2: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs))
3: compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
SPACE(?,?)on application of the dependency pairs
{3}
These cover all (indirect) predecessors of dependency pairs
{1,2,3}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
***** Step 14.b:5.b:2.a:3.a:1: NaturalMI WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
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))
- 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 first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
+ Details:
We apply a matrix interpretation of kind constructor based matrix interpretation:
The following argument positions are considered usable:
uargs(c_22) = {1},
uargs(c_23) = {1},
uargs(c_25) = {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) = [1]
p(#LT) = [0]
p(#abs) = [1]
p(#add) = [1] x1 + [1] x2 + [1]
p(#and) = [0]
p(#ckgt) = [1] x1 + [0]
p(#cklt) = [2] x1 + [8]
p(#compare) = [2] x2 + [2]
p(#div) = [0]
p(#divByZero) = [0]
p(#eq) = [1] x2 + [4]
p(#equal) = [1]
p(#false) = [0]
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) = [1] x1 + [0]
p(#pred) = [0]
p(#s) = [0]
p(#sub) = [1]
p(#succ) = [0]
p(#true) = [0]
p(*) = [0]
p(+) = [0]
p(-) = [0]
p(::) = [1] x2 + [4]
p(add) = [0]
p(add') = [0]
p(add'#1) = [0]
p(add'#2) = [0]
p(add'#3) = [0]
p(bitToInt) = [0]
p(bitToInt') = [2] x2 + [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] x2 + [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) = [1] x3 + [0]
p(nil) = [1]
p(sub) = [1] x1 + [4]
p(sub#1) = [0]
p(sub') = [8]
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) = [1] x1 + [2]
p(tuple#2) = [1] x1 + [1] x2 + [4]
p(#abs#) = [1] x1 + [1]
p(#add#) = [2] x1 + [0]
p(#and#) = [1] x1 + [0]
p(#ckgt#) = [1]
p(#cklt#) = [4]
p(#compare#) = [0]
p(#div#) = [1] x1 + [1] x2 + [0]
p(#eq#) = [2] x1 + [2] x2 + [1]
p(#equal#) = [1] x1 + [1] x2 + [1]
p(#greater#) = [1] x2 + [0]
p(#less#) = [1] x1 + [2]
p(#mult#) = [1] x1 + [1] x2 + [2]
p(#natdiv#) = [8] x1 + [1] x2 + [1]
p(#natmult#) = [1] x1 + [1]
p(#natsub#) = [2] x1 + [1] x2 + [1]
p(#pred#) = [4] x1 + [0]
p(#sub#) = [0]
p(#succ#) = [1] x1 + [1]
p(*#) = [1] x2 + [4]
p(+#) = [1] x1 + [1] x2 + [1]
p(-#) = [1] x1 + [1]
p(add#) = [2] x2 + [8]
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#) = [4] x2 + [0]
p(compare#1#) = [4] x2 + [0]
p(compare#2#) = [4] x1 + [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#) = [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) = [0]
p(c_19) = [0]
p(c_20) = [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 + [14]
p(c_26) = [1] x1 + [0]
p(c_27) = [2] x1 + [0]
p(c_28) = [0]
p(c_29) = [0]
p(c_30) = [2] x1 + [0]
p(c_31) = [1] x1 + [0]
p(c_32) = [1] x1 + [0]
p(c_33) = [0]
p(c_34) = [1] x1 + [1] x2 + [1] x3 + [2] x4 + [1] x5 + [1] x6 + [1] x7 + [0]
p(c_35) = [1] x1 + [0]
p(c_36) = [1] x1 + [0]
p(c_37) = [0]
p(c_38) = [1] x1 + [0]
p(c_39) = [4] x1 + [0]
p(c_40) = [0]
p(c_41) = [0]
p(c_42) = [0]
p(c_43) = [1] x1 + [0]
p(c_44) = [0]
p(c_45) = [0]
p(c_46) = [4] x2 + [0]
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) = [0]
p(c_53) = [0]
p(c_54) = [0]
p(c_55) = [2] x1 + [1] x2 + [0]
p(c_56) = [0]
p(c_57) = [0]
p(c_58) = [2] x1 + [1] x2 + [0]
p(c_59) = [0]
p(c_60) = [2] x2 + [0]
p(c_61) = [0]
p(c_62) = [1] x2 + [0]
p(c_63) = [0]
p(c_64) = [2] x1 + [0]
p(c_65) = [0]
p(c_66) = [0]
p(c_67) = [0]
p(c_68) = [4] x1 + [2] x2 + [0]
p(c_69) = [1] x1 + [0]
p(c_70) = [4] 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) = [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) = [2] x1 + [0]
p(c_98) = [0]
p(c_99) = [0]
p(c_100) = [8] x1 + [2]
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) = [2] 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) = [1] x1 + [4] 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) = [1] x1 + [0]
p(c_131) = [1] 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) = [4] x1 + [0]
p(c_145) = [0]
p(c_146) = [0]
p(c_147) = [0]
p(c_148) = [1]
Following rules are strictly oriented:
compare#2#(::(@y,@ys),@x,@xs) = [4] @ys + [16]
> [4] @ys + [14]
= c_25(compare#(@xs,@ys))
Following rules are (at-least) weakly oriented:
compare#(@b1,@b2) = [4] @b2 + [0]
>= [4] @b2 + [0]
= c_22(compare#1#(@b1,@b2))
compare#1#(::(@x,@xs),@b2) = [4] @b2 + [0]
>= [4] @b2 + [0]
= c_23(compare#2#(@b2,@x,@xs))
***** Step 14.b:5.b:2.a:3.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2))
compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs))
- Weak DPs:
compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
- 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:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
***** Step 14.b:5.b:2.a:3.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
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))
- 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:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2))
-->_1 compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)):2
2:W:compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs))
-->_1 compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys)):3
3:W:compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
-->_1 compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)):1
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
1: compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2))
3: compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
2: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs))
***** Step 14.b:5.b:2.a:3.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- 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 14.b:5.b:2.b:1: RemoveWeakSuffixes 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))
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:
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))
- 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:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
-->_1 mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)):2
2:S:mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
-->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):1
3: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)):1
-->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):1
4:S:sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
-->_1 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):5
5: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)):6
6: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)):7
7: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')):8
8: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)):5
9:W:compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2))
-->_1 compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs)):10
10:W: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:W:compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
-->_1 compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2)):9
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
9: compare#(@b1,@b2) -> c_22(compare#1#(@b1,@b2))
11: compare#2#(::(@y,@ys),@x,@xs) -> c_25(compare#(@xs,@ys))
10: compare#1#(::(@x,@xs),@b2) -> c_23(compare#2#(@b2,@x,@xs))
**** Step 14.b:5.b:2.b:2: Decompose 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))
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:
Decompose {onSelection = all cycle independent sub-graph, withBound = RelativeAdd}
+ Details:
We analyse the complexity of following sub-problems (R) and (S).
Problem (S) is obtained from the input problem by shifting strict rules from (R) into the weak component.
Problem (R)
- Strict DPs:
mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
- Weak DPs:
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}
Problem (S)
- Strict DPs:
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:
mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@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}
***** Step 14.b:5.b:2.b:2.a:1: RemoveWeakSuffixes 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:
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:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
-->_1 mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)):2
2:S:mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
-->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):1
3:W:mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
-->_2 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):1
-->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):1
4:W:sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
-->_1 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):5
5:W: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)):6
6:W: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)):7
7:W: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')):8
8:W: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)):5
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
4: sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
5: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r))
8: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r'))
7: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys))
6: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs))
***** Step 14.b:5.b:2.b:2.a:2: UsableRules 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:
mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@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:
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()))))
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))
***** Step 14.b:5.b:2.b:2.a:3: PredecessorEstimationCP 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:
mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@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()
#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/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:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
2: mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
Consider the set of all dependency pairs
1: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
2: mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
3: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
SPACE(?,?)on application of the dependency pairs
{2}
These cover all (indirect) predecessors of dependency pairs
{1,2,3}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
****** Step 14.b:5.b:2.b:2.a:3.a:1: 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:
mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@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()
#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/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 first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
+ Details:
We apply a matrix interpretation of kind constructor based matrix interpretation:
The following argument positions are considered usable:
uargs(c_40) = {1},
uargs(c_41) = {1},
uargs(c_46) = {1,2}
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) = [0]
p(#add) = [0]
p(#and) = [2] x1 + [4]
p(#ckgt) = [0]
p(#cklt) = [0]
p(#compare) = [0]
p(#div) = [0]
p(#divByZero) = [0]
p(#eq) = [0]
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) = [3]
p(#pos) = [0]
p(#pred) = [7]
p(#s) = [1]
p(#sub) = [0]
p(#succ) = [5]
p(#true) = [4]
p(*) = [0]
p(+) = [5] x2 + [0]
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) = [0]
p(mult) = [1] x1 + [4]
p(mult#1) = [1] x1 + [4]
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) = [2] x1 + [0]
p(sum#2) = [2] x1 + [0]
p(sum#3) = [2]
p(sum#4) = [4]
p(tuple#2) = [0]
p(#abs#) = [0]
p(#add#) = [0]
p(#and#) = [1] x1 + [0]
p(#ckgt#) = [2]
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#) = [4] x3 + [1] x4 + [0]
p(add'#3#) = [1] x1 + [1] x3 + [0]
p(bitToInt#) = [1]
p(bitToInt'#) = [2] x1 + [2]
p(bitToInt'#1#) = [1]
p(compare#) = [1] x1 + [0]
p(compare#1#) = [4] x1 + [4]
p(compare#2#) = [1] x2 + [4]
p(compare#3#) = [2] x1 + [0]
p(compare#4#) = [2] x2 + [0]
p(compare#5#) = [1] x1 + [0]
p(compare#6#) = [1] x1 + [0]
p(diff#) = [2] x2 + [1] x3 + [4]
p(diff#1#) = [0]
p(div#) = [1] x1 + [4] x2 + [0]
p(leq#) = [1] x1 + [1] x2 + [0]
p(mod#) = [4] x2 + [0]
p(mult#) = [1] x1 + [0]
p(mult#1#) = [1] x1 + [0]
p(mult#2#) = [2] x1 + [1] x3 + [4]
p(mult#3#) = [2] x1 + [2] x2 + [0]
p(mult3#) = [3] x1 + [6]
p(sub#) = [1] x2 + [0]
p(sub#1#) = [2]
p(sub'#) = [1] x1 + [4] x3 + [1]
p(sub'#1#) = [2] x2 + [1]
p(sub'#2#) = [2] x4 + [4]
p(sub'#3#) = [1] x2 + [0]
p(sub'#4#) = [1] x1 + [0]
p(sub'#5#) = [2] x3 + [1]
p(sum#) = [2] x2 + [0]
p(sum#1#) = [1] x1 + [0]
p(sum#2#) = [1]
p(sum#3#) = [1]
p(sum#4#) = [1] x1 + [0]
p(c_1) = [4]
p(c_2) = [0]
p(c_3) = [0]
p(c_4) = [1]
p(c_5) = [0]
p(c_6) = [1] x1 + [2] x2 + [1]
p(c_7) = [4] x2 + [0]
p(c_8) = [4] x1 + [1]
p(c_9) = [0]
p(c_10) = [2]
p(c_11) = [0]
p(c_12) = [2]
p(c_13) = [1] x1 + [0]
p(c_14) = [4]
p(c_15) = [1] x1 + [0]
p(c_16) = [0]
p(c_17) = [1]
p(c_18) = [1] x1 + [1]
p(c_19) = [2] x1 + [1]
p(c_20) = [4] x1 + [0]
p(c_21) = [2] x1 + [1]
p(c_22) = [0]
p(c_23) = [2] x1 + [2]
p(c_24) = [1]
p(c_25) = [4] x1 + [1]
p(c_26) = [1]
p(c_27) = [1]
p(c_28) = [0]
p(c_29) = [2] x1 + [1] x2 + [0]
p(c_30) = [1] x2 + [1]
p(c_31) = [1]
p(c_32) = [0]
p(c_33) = [4] x1 + [0]
p(c_34) = [1] x1 + [4] x4 + [4] x6 + [1] x7 + [0]
p(c_35) = [1]
p(c_36) = [1]
p(c_37) = [1]
p(c_38) = [1]
p(c_39) = [0]
p(c_40) = [1] x1 + [0]
p(c_41) = [1] x1 + [0]
p(c_42) = [4]
p(c_43) = [1] x1 + [1]
p(c_44) = [0]
p(c_45) = [2]
p(c_46) = [1] x1 + [2] x2 + [2]
p(c_47) = [0]
p(c_48) = [1]
p(c_49) = [4] x1 + [1]
p(c_50) = [0]
p(c_51) = [0]
p(c_52) = [0]
p(c_53) = [1]
p(c_54) = [0]
p(c_55) = [0]
p(c_56) = [2]
p(c_57) = [0]
p(c_58) = [1] x1 + [4] x2 + [1]
p(c_59) = [4] x2 + [0]
p(c_60) = [2] x2 + [1]
p(c_61) = [1] x1 + [4] x2 + [0]
p(c_62) = [1] x2 + [0]
p(c_63) = [4] x1 + [1] x2 + [1]
p(c_64) = [1] x1 + [4] x2 + [0]
p(c_65) = [4] x1 + [0]
p(c_66) = [0]
p(c_67) = [1]
p(c_68) = [1] x2 + [0]
p(c_69) = [1] x1 + [4]
p(c_70) = [0]
p(c_71) = [0]
p(c_72) = [2]
p(c_73) = [0]
p(c_74) = [1]
p(c_75) = [0]
p(c_76) = [2]
p(c_77) = [1]
p(c_78) = [0]
p(c_79) = [0]
p(c_80) = [0]
p(c_81) = [4]
p(c_82) = [2]
p(c_83) = [0]
p(c_84) = [1]
p(c_85) = [0]
p(c_86) = [1] x1 + [0]
p(c_87) = [1]
p(c_88) = [1]
p(c_89) = [2]
p(c_90) = [0]
p(c_91) = [1]
p(c_92) = [0]
p(c_93) = [0]
p(c_94) = [4]
p(c_95) = [1]
p(c_96) = [4]
p(c_97) = [4] x1 + [0]
p(c_98) = [1] x1 + [0]
p(c_99) = [0]
p(c_100) = [1]
p(c_101) = [1] x1 + [0]
p(c_102) = [0]
p(c_103) = [0]
p(c_104) = [4]
p(c_105) = [1]
p(c_106) = [0]
p(c_107) = [2] x1 + [0]
p(c_108) = [0]
p(c_109) = [1]
p(c_110) = [1]
p(c_111) = [1] x1 + [4]
p(c_112) = [1]
p(c_113) = [1] x1 + [4]
p(c_114) = [1] x1 + [0]
p(c_115) = [0]
p(c_116) = [0]
p(c_117) = [1]
p(c_118) = [2]
p(c_119) = [1]
p(c_120) = [0]
p(c_121) = [1]
p(c_122) = [1]
p(c_123) = [0]
p(c_124) = [0]
p(c_125) = [1]
p(c_126) = [0]
p(c_127) = [1] x1 + [2]
p(c_128) = [1]
p(c_129) = [1]
p(c_130) = [2]
p(c_131) = [4]
p(c_132) = [0]
p(c_133) = [1]
p(c_134) = [1]
p(c_135) = [1] x1 + [2]
p(c_136) = [1]
p(c_137) = [1] x1 + [1]
p(c_138) = [0]
p(c_139) = [4]
p(c_140) = [4]
p(c_141) = [0]
p(c_142) = [0]
p(c_143) = [1]
p(c_144) = [2]
p(c_145) = [0]
p(c_146) = [0]
p(c_147) = [0]
p(c_148) = [1]
Following rules are strictly oriented:
mult#1#(::(@x,@xs),@b2) = [1] @xs + [1]
> [1] @xs + [0]
= c_41(mult#(@xs,@b2))
Following rules are (at-least) weakly oriented:
mult#(@b1,@b2) = [1] @b1 + [0]
>= [1] @b1 + [0]
= c_40(mult#1#(@b1,@b2))
mult3#(@b1,@b2,@b3) = [3] @b1 + [6]
>= [3] @b1 + [6]
= c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@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 + [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) = [1] @b1 + [4]
>= [1] @b1 + [4]
= mult#1(@b1,@b2)
mult#1(::(@x,@xs),@b2) = [1] @xs + [5]
>= [1] @xs + [5]
= mult#2(::(#abs(#0()),mult(@xs,@b2)),@b2,@x)
mult#1(nil(),@b2) = [4]
>= [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 14.b:5.b:2.b:2.a:3.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
- Weak DPs:
mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@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()
#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/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:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
****** Step 14.b:5.b:2.b:2.a:3.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
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))
- 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/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:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
-->_1 mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)):2
2:W:mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
-->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):1
3:W:mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
-->_2 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):1
-->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):1
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
3: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
1: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
2: mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
****** Step 14.b:5.b:2.b:2.a:3.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- 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/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 14.b:5.b:2.b:2.b:1: PredecessorEstimation WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
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:
mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@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:
PredecessorEstimation {onSelection = all simple predecessor estimation selector}
+ Details:
We estimate the number of application of
{1}
by application of
Pre({1}) = {}.
Here rules are labelled as follows:
1: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
2: sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
3: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r))
4: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs))
5: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys))
6: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r'))
7: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
8: mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
***** Step 14.b:5.b:2.b:2.b:2: RemoveWeakSuffixes WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
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:
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))
- 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:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:S:sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
-->_1 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):2
2: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)):3
3: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)):4
4: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')):5
5: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)):2
6:W:mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
-->_1 mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2)):7
7:W:mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
-->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):6
8:W:mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
-->_2 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):6
-->_1 mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2)):6
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
8: mult3#(@b1,@b2,@b3) -> c_46(mult#(mult(@b1,@b2),@b2),mult#(@b1,@b2))
6: mult#(@b1,@b2) -> c_40(mult#1#(@b1,@b2))
7: mult#1#(::(@x,@xs),@b2) -> c_41(mult#(@xs,@b2))
***** Step 14.b:5.b:2.b:2.b:3: UsableRules WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
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:
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))
#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))
#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)
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)))
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 14.b:5.b:2.b:2.b:4: PredecessorEstimationCP WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
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))
#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))
#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)
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)))
- 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:
PredecessorEstimationCP {onSelectionCP = any intersect of rules of CDG leaf and strict-rules, withComplexityPair = NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}}
+ Details:
We first use the processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing} to orient following rules strictly:
1: sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
3: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs))
Consider the set of all dependency pairs
1: sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
2: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r))
3: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs))
4: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys))
5: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r'))
Processor NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Nothing}induces the complexity certificateTIME (?,O(n^1))
SPACE(?,?)on application of the dependency pairs
{1,3}
These cover all (indirect) predecessors of dependency pairs
{1,2,3,4,5}
their number of applications is equally bounded.
The dependency pairs are shifted into the weak component.
****** Step 14.b:5.b:2.b:2.b:4.a:1: NaturalMI WORST_CASE(?,O(n^1))
+ Considered Problem:
- Strict DPs:
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))
#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))
#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)
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)))
- 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 first alternative for predecessorEstimation on any intersect of rules of CDG leaf and strict-rules}
+ Details:
We apply a matrix interpretation of kind constructor based matrix interpretation:
The following argument positions are considered usable:
uargs(c_47) = {1},
uargs(c_49) = {1},
uargs(c_50) = {1},
uargs(c_52) = {1},
uargs(c_54) = {1}
Following symbols are considered usable:
{diff,#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) = [0]
p(#add) = [4] x1 + [0]
p(#and) = [0]
p(#ckgt) = [0]
p(#cklt) = [3]
p(#compare) = [0]
p(#div) = [3]
p(#divByZero) = [0]
p(#eq) = [0]
p(#equal) = [0]
p(#false) = [0]
p(#greater) = [0]
p(#less) = [1]
p(#mult) = [1] x1 + [6]
p(#natdiv) = [6] x1 + [3]
p(#natmult) = [7]
p(#natsub) = [1] x2 + [0]
p(#neg) = [0]
p(#pos) = [2]
p(#pred) = [1] x1 + [0]
p(#s) = [0]
p(#sub) = [7]
p(#succ) = [0]
p(#true) = [0]
p(*) = [1] x1 + [0]
p(+) = [0]
p(-) = [1] x2 + [0]
p(::) = [1] x2 + [1]
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) = [2]
p(diff#1) = [4] x1 + [1]
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(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) = [0]
p(tuple#2) = [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#) = [0]
p(sub#) = [4] x1 + [7]
p(sub#1#) = [0]
p(sub'#) = [4] x1 + [0]
p(sub'#1#) = [4] x1 + [0]
p(sub'#2#) = [4] x4 + [2]
p(sub'#3#) = [1] x1 + [4] x2 + [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) = [0]
p(c_19) = [0]
p(c_20) = [0]
p(c_21) = [0]
p(c_22) = [0]
p(c_23) = [0]
p(c_24) = [0]
p(c_25) = [0]
p(c_26) = [0]
p(c_27) = [0]
p(c_28) = [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) = [0]
p(c_41) = [0]
p(c_42) = [0]
p(c_43) = [0]
p(c_44) = [0]
p(c_45) = [0]
p(c_46) = [0]
p(c_47) = [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 + [0]
p(c_55) = [1] x1 + [0]
p(c_56) = [0]
p(c_57) = [0]
p(c_58) = [2] x1 + [2] x2 + [2] x3 + [0]
p(c_59) = [1] x1 + [0]
p(c_60) = [1] x2 + [0]
p(c_61) = [1] x1 + [0]
p(c_62) = [1] x1 + [2] x2 + [0]
p(c_63) = [0]
p(c_64) = [0]
p(c_65) = [4] x1 + [1] x2 + [0]
p(c_66) = [0]
p(c_67) = [1] x1 + [0]
p(c_68) = [1] x2 + [0]
p(c_69) = [0]
p(c_70) = [1] x1 + [0]
p(c_71) = [0]
p(c_72) = [0]
p(c_73) = [0]
p(c_74) = [0]
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) = [0]
p(c_98) = [0]
p(c_99) = [0]
p(c_100) = [4] x1 + [0]
p(c_101) = [2] 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) = [0]
p(c_114) = [2] x1 + [2] x2 + [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) = [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) = [2] x1 + [0]
p(c_132) = [0]
p(c_133) = [1] x1 + [0]
p(c_134) = [0]
p(c_135) = [2] 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) = [2] x1 + [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:
sub#(@b1,@b2) = [4] @b1 + [7]
> [4] @b1 + [0]
= c_47(sub'#(@b1,@b2,#abs(#0())))
sub'#1#(::(@x,@xs),@b2,@r) = [4] @xs + [4]
> [4] @xs + [2]
= c_50(sub'#2#(@b2,@r,@x,@xs))
Following rules are (at-least) weakly oriented:
sub'#(@b1,@b2,@r) = [4] @b1 + [0]
>= [4] @b1 + [0]
= c_49(sub'#1#(@b1,@b2,@r))
sub'#2#(::(@y,@ys),@r,@x,@xs) = [4] @xs + [2]
>= [4] @xs + [2]
= c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys))
sub'#3#(tuple#2(@z,@r'),@xs,@ys) = [4] @xs + [0]
>= [4] @xs + [0]
= c_54(sub'#(@xs,@ys,@r'))
diff(@x,@y,@r) = [2]
>= [0]
= tuple#2(mod(+(+(@x,@y),@r),#pos(#s(#s(#0())))),diff#1(#less(-(-(@x,@y),@r),#0())))
****** Step 14.b:5.b:2.b:2.b:4.a:2: Assumption WORST_CASE(?,O(1))
+ Considered Problem:
- Strict DPs:
sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r))
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:
sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs))
- 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))
#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))
#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)
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)))
- 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:
Assumption {assumed = Certificate {spaceUB = Unknown, spaceLB = Unknown, timeUB = Poly (Just 0), timeLB = Unknown}}
+ Details:
()
****** Step 14.b:5.b:2.b:2.b:4.b:1: RemoveWeakSuffixes WORST_CASE(?,O(1))
+ Considered Problem:
- Weak DPs:
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))
#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))
#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)
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)))
- 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:
RemoveWeakSuffixes
+ Details:
Consider the dependency graph
1:W:sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
-->_1 sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r)):2
2:W: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)):3
3:W: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)):4
4:W: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')):5
5:W: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)):2
The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed.
1: sub#(@b1,@b2) -> c_47(sub'#(@b1,@b2,#abs(#0())))
2: sub'#(@b1,@b2,@r) -> c_49(sub'#1#(@b1,@b2,@r))
5: sub'#3#(tuple#2(@z,@r'),@xs,@ys) -> c_54(sub'#(@xs,@ys,@r'))
4: sub'#2#(::(@y,@ys),@r,@x,@xs) -> c_52(sub'#3#(diff(@x,@y,@r),@xs,@ys))
3: sub'#1#(::(@x,@xs),@b2,@r) -> c_50(sub'#2#(@b2,@r,@x,@xs))
****** Step 14.b:5.b:2.b:2.b:4.b:2: EmptyProcessor WORST_CASE(?,O(1))
+ Considered Problem:
- 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))
#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))
#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)
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)))
- 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).
WORST_CASE(?,O(n^2))