Tool CaT
stdout:
MAYBE
Problem:
prod(xs) -> prodIter(xs,s(0()))
prodIter(xs,x) -> ifProd(isempty(xs),xs,x)
ifProd(true(),xs,x) -> x
ifProd(false(),xs,x) -> prodIter(tail(xs),times(x,head(xs)))
plus(0(),y) -> y
plus(s(x),y) -> s(plus(x,y))
times(x,y) -> timesIter(x,y,0(),0())
timesIter(x,y,z,u) -> ifTimes(ge(u,x),x,y,z,u)
ifTimes(true(),x,y,z,u) -> z
ifTimes(false(),x,y,z,u) -> timesIter(x,y,plus(y,z),s(u))
isempty(nil()) -> true()
isempty(cons(x,xs)) -> false()
head(nil()) -> error()
head(cons(x,xs)) -> x
tail(nil()) -> nil()
tail(cons(x,xs)) -> xs
ge(x,0()) -> true()
ge(0(),s(y)) -> false()
ge(s(x),s(y)) -> ge(x,y)
a() -> b()
a() -> c()
Proof:
OpenTool IRC1
stdout:
MAYBE
Tool IRC2
stdout:
TIMEOUT
'Fastest (timeout of 60.0 seconds)'
-----------------------------------
Answer: TIMEOUT
Input Problem: innermost runtime-complexity with respect to
Rules:
{ prod(xs) -> prodIter(xs, s(0()))
, prodIter(xs, x) -> ifProd(isempty(xs), xs, x)
, ifProd(true(), xs, x) -> x
, ifProd(false(), xs, x) -> prodIter(tail(xs), times(x, head(xs)))
, plus(0(), y) -> y
, plus(s(x), y) -> s(plus(x, y))
, times(x, y) -> timesIter(x, y, 0(), 0())
, timesIter(x, y, z, u) -> ifTimes(ge(u, x), x, y, z, u)
, ifTimes(true(), x, y, z, u) -> z
, ifTimes(false(), x, y, z, u) -> timesIter(x, y, plus(y, z), s(u))
, isempty(nil()) -> true()
, isempty(cons(x, xs)) -> false()
, head(nil()) -> error()
, head(cons(x, xs)) -> x
, tail(nil()) -> nil()
, tail(cons(x, xs)) -> xs
, ge(x, 0()) -> true()
, ge(0(), s(y)) -> false()
, ge(s(x), s(y)) -> ge(x, y)
, a() -> b()
, a() -> c()}
Proof Output:
Computation stopped due to timeout after 60.0 secondsTool RC1
stdout:
MAYBE
Tool RC2
stdout:
TIMEOUT
'Fastest (timeout of 60.0 seconds)'
-----------------------------------
Answer: TIMEOUT
Input Problem: runtime-complexity with respect to
Rules:
{ prod(xs) -> prodIter(xs, s(0()))
, prodIter(xs, x) -> ifProd(isempty(xs), xs, x)
, ifProd(true(), xs, x) -> x
, ifProd(false(), xs, x) -> prodIter(tail(xs), times(x, head(xs)))
, plus(0(), y) -> y
, plus(s(x), y) -> s(plus(x, y))
, times(x, y) -> timesIter(x, y, 0(), 0())
, timesIter(x, y, z, u) -> ifTimes(ge(u, x), x, y, z, u)
, ifTimes(true(), x, y, z, u) -> z
, ifTimes(false(), x, y, z, u) -> timesIter(x, y, plus(y, z), s(u))
, isempty(nil()) -> true()
, isempty(cons(x, xs)) -> false()
, head(nil()) -> error()
, head(cons(x, xs)) -> x
, tail(nil()) -> nil()
, tail(cons(x, xs)) -> xs
, ge(x, 0()) -> true()
, ge(0(), s(y)) -> false()
, ge(s(x), s(y)) -> ge(x, y)
, a() -> b()
, a() -> c()}
Proof Output:
Computation stopped due to timeout after 60.0 seconds