* Step 1: Sum WORST_CASE(Omega(n^1),?)
+ Considered Problem:
- Strict TRS:
facIter(x,y) -> if(isZero(x),minus(x,s(0())),y,times(y,x))
factorial(x) -> facIter(x,s(0()))
if(false(),x,y,z) -> facIter(x,z)
if(true(),x,y,z) -> y
isZero(0()) -> true()
isZero(s(x)) -> false()
minus(x,0()) -> x
minus(x,s(y)) -> p(minus(x,y))
minus(0(),x) -> 0()
p(0()) -> 0()
p(s(x)) -> x
plus(0(),x) -> x
plus(s(x),y) -> s(plus(x,y))
times(0(),y) -> 0()
times(s(x),y) -> plus(y,times(x,y))
- Signature:
{facIter/2,factorial/1,if/4,isZero/1,minus/2,p/1,plus/2,times/2} / {0/0,false/0,s/1,true/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {facIter,factorial,if,isZero,minus,p,plus
,times} and constructors {0,false,s,true}
+ Applied Processor:
Sum {left = someStrategy, right = someStrategy}
+ Details:
()
* Step 2: DecreasingLoops WORST_CASE(Omega(n^1),?)
+ Considered Problem:
- Strict TRS:
facIter(x,y) -> if(isZero(x),minus(x,s(0())),y,times(y,x))
factorial(x) -> facIter(x,s(0()))
if(false(),x,y,z) -> facIter(x,z)
if(true(),x,y,z) -> y
isZero(0()) -> true()
isZero(s(x)) -> false()
minus(x,0()) -> x
minus(x,s(y)) -> p(minus(x,y))
minus(0(),x) -> 0()
p(0()) -> 0()
p(s(x)) -> x
plus(0(),x) -> x
plus(s(x),y) -> s(plus(x,y))
times(0(),y) -> 0()
times(s(x),y) -> plus(y,times(x,y))
- Signature:
{facIter/2,factorial/1,if/4,isZero/1,minus/2,p/1,plus/2,times/2} / {0/0,false/0,s/1,true/0}
- Obligation:
innermost runtime complexity wrt. defined symbols {facIter,factorial,if,isZero,minus,p,plus
,times} and constructors {0,false,s,true}
+ Applied Processor:
DecreasingLoops {bound = AnyLoop, narrow = 10}
+ Details:
The system has following decreasing Loops:
minus(x,y){y -> s(y)} =
minus(x,s(y)) ->^+ p(minus(x,y))
= C[minus(x,y) = minus(x,y){}]
WORST_CASE(Omega(n^1),?)