MAYBE * Step 1: Failure MAYBE + Considered Problem: - Strict TRS: #abs(#0()) -> #0() #abs(#neg(@x)) -> #pos(@x) #abs(#pos(@x)) -> #pos(@x) #abs(#s(@x)) -> #pos(#s(@x)) *(@x,@y) -> #mult(@x,@y) +(@x,@y) -> #add(@x,@y) attach(@line,@m) -> attach#1(@line,@m) attach#1(::(@x,@xs),@m) -> attach#2(@m,@x,@xs) attach#1(nil(),@m) -> nil() attach#2(::(@l,@ls),@x,@xs) -> ::(::(@x,@l),attach(@xs,@ls)) attach#2(nil(),@x,@xs) -> nil() lineMult(@l,@m2) -> lineMult#1(@m2,@l) lineMult#1(::(@x,@xs),@l) -> ::(mult(@l,@x),lineMult(@l,@xs)) lineMult#1(nil(),@l) -> nil() m1(@x) -> ::(::(#abs(#pos(#s(#0()))),::(#abs(#pos(#s(#s(#0())))),::(#abs(#pos(#s(#s(#s(#0()))))),nil()))) ,::(::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#0()))))),::(#abs(#pos(#s(#s(#s(#s(#0())))))),nil()))) ,nil())) m2(@x) -> ::(::(#abs(#pos(#s(#0()))),::(#abs(#pos(#s(#s(#0())))),nil())) ,::(::(#abs(#pos(#s(#s(#0())))),::(#abs(#pos(#s(#s(#s(#0()))))),nil())) ,::(::(#abs(#pos(#s(#s(#s(#s(#0())))))),::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))),nil())) ,nil()))) m3(@x) -> ::(::(#abs(#pos(#s(#0()))) ,::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#0()))))),::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))),nil())))) ,::(::(#abs(#pos(#s(#s(#0())))) ,::(#abs(#pos(#s(#s(#s(#0()))))) ,::(#abs(#pos(#s(#s(#s(#s(#0())))))),::(#abs(#pos(#s(#s(#s(#s(#s(#0()))))))),nil())))) ,nil())) m4(@x) -> ::(::(#abs(#pos(#s(#0()))),nil()) ,::(::(#abs(#pos(#s(#s(#0())))),nil()) ,::(::(#abs(#pos(#s(#s(#s(#0()))))),nil()) ,::(::(#abs(#pos(#s(#s(#s(#s(#0())))))),nil()),nil())))) makeBase(@m) -> makeBase#1(@m) makeBase#1(::(@l,@m')) -> mkBase(@l) makeBase#1(nil()) -> nil() matrixMult(@m1,@m2) -> matrixMult'(@m1,transAcc(@m2,makeBase(@m2))) matrixMult'(@m1,@m2) -> matrixMult'#1(@m1,@m2) matrixMult'#1(::(@l,@ls),@m2) -> ::(lineMult(@l,@m2),matrixMult'(@ls,@m2)) matrixMult'#1(nil(),@m2) -> nil() matrixMult3(@m1,@m2,@m3) -> matrixMult(matrixMult(@m1,@m2),@m3) matrixMultList(@acc,@mm) -> matrixMultList#1(@mm,@acc) matrixMultList#1(::(@m,@ms),@acc) -> matrixMultList(matrixMult(@acc,@m),@ms) matrixMultList#1(nil(),@acc) -> @acc matrixMultOld(@m1,@m2) -> matrixMult'(@m1,transpose(@m2)) mkBase(@m) -> mkBase#1(@m) mkBase#1(::(@l,@m')) -> ::(nil(),mkBase(@m')) mkBase#1(nil()) -> nil() mult(@l1,@l2) -> mult#1(@l1,@l2) mult#1(::(@x,@xs),@l2) -> mult#2(@l2,@x,@xs) mult#1(nil(),@l2) -> #abs(#0()) mult#2(::(@y,@ys),@x,@xs) -> +(*(@x,@y),mult(@xs,@ys)) mult#2(nil(),@x,@xs) -> #abs(#0()) split(@m) -> split#1(@m) split#1(::(@l,@ls)) -> split#2(@l,@ls) split#1(nil()) -> tuple#2(nil(),nil()) split#2(::(@x,@xs),@ls) -> split#3(split(@ls),@x,@xs) split#2(nil(),@ls) -> tuple#2(nil(),nil()) split#3(tuple#2(@ys,@m'),@x,@xs) -> tuple#2(::(@x,@ys),::(@xs,@m')) transAcc(@m,@base) -> transAcc#1(@m,@base) transAcc#1(::(@l,@m'),@base) -> attach(@l,transAcc(@m',@base)) transAcc#1(nil(),@base) -> @base transpose(@m) -> transpose#1(@m,@m) transpose#1(::(@xs,@xss),@m) -> transpose#2(split(@m)) transpose#1(nil(),@m) -> nil() transpose#2(tuple#2(@l,@m')) -> transpose#3(@m',@l) transpose#3(::(@y,@ys),@l) -> ::(@l,transpose(::(@y,@ys))) transpose#3(nil(),@l) -> nil() transpose'(@m) -> transAcc(@m,makeBase(@m)) - 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)) #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)) #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))) - Signature: {#abs/1,#add/2,#mult/2,#natmult/2,#pred/1,#succ/1,*/2,+/2,attach/2,attach#1/2,attach#2/3,lineMult/2 ,lineMult#1/2,m1/1,m2/1,m3/1,m4/1,makeBase/1,makeBase#1/1,matrixMult/2,matrixMult'/2,matrixMult'#1/2 ,matrixMult3/3,matrixMultList/2,matrixMultList#1/2,matrixMultOld/2,mkBase/1,mkBase#1/1,mult/2,mult#1/2 ,mult#2/3,split/1,split#1/1,split#2/2,split#3/3,transAcc/2,transAcc#1/2,transpose/1,transpose#1/2 ,transpose#2/1,transpose#3/2,transpose'/1} / {#0/0,#neg/1,#pos/1,#s/1,::/2,nil/0,tuple#2/2} - Obligation: innermost runtime complexity wrt. defined symbols {#abs,#add,#mult,#natmult,#pred,#succ,*,+,attach,attach#1 ,attach#2,lineMult,lineMult#1,m1,m2,m3,m4,makeBase,makeBase#1,matrixMult,matrixMult',matrixMult'#1 ,matrixMult3,matrixMultList,matrixMultList#1,matrixMultOld,mkBase,mkBase#1,mult,mult#1,mult#2,split,split#1 ,split#2,split#3,transAcc,transAcc#1,transpose,transpose#1,transpose#2,transpose#3 ,transpose'} and constructors {#0,#neg,#pos,#s,::,nil,tuple#2} + Applied Processor: NaturalPI {shape = Mixed 3, restrict = NoRestrict, uargs = UArgs, urules = URules, selector = Nothing} + Details: Incompatible MAYBE