* Step 1: Sum WORST_CASE(Omega(n^1),?)
+ Considered Problem:
- Strict TRS:
apply(op,v1,v2) -> apply[Ite](eqExp(v1,v2),op,v1,v2)
checkConstrExp(Bsf(op1,b11,b12),Bsf(op2,b21,b22)) -> True()
checkConstrExp(Bsf(op1,b11,b12),Eq(eq21,eq22)) -> False()
checkConstrExp(Bsf(op1,b11,b12),Error(e21,e22)) -> False()
checkConstrExp(Bsf(op1,b11,b12),F()) -> False()
checkConstrExp(Bsf(op1,b11,b12),Fun(fn2,fe2)) -> False()
checkConstrExp(Bsf(op1,b11,b12),ITE(i2,t2,e2)) -> False()
checkConstrExp(Bsf(op1,b11,b12),T()) -> False()
checkConstrExp(Bsf(op1,b11,b12),Var(v2)) -> False()
checkConstrExp(Eq(eq11,eq12),Bsf(op2,b21,b22)) -> False()
checkConstrExp(Eq(eq11,eq12),Eq(eq21,eq22)) -> True()
checkConstrExp(Eq(eq11,eq12),Error(e21,e22)) -> False()
checkConstrExp(Eq(eq11,eq12),F()) -> False()
checkConstrExp(Eq(eq11,eq12),Fun(fn2,fe2)) -> False()
checkConstrExp(Eq(eq11,eq12),ITE(i2,t2,e2)) -> False()
checkConstrExp(Eq(eq11,eq12),T()) -> False()
checkConstrExp(Eq(eq11,eq12),Var(v2)) -> False()
checkConstrExp(Error(e11,e12),Bsf(op2,b21,b22)) -> False()
checkConstrExp(Error(e11,e12),Eq(eq21,eq22)) -> False()
checkConstrExp(Error(e11,e12),Error(e21,e22)) -> True()
checkConstrExp(Error(e11,e12),F()) -> False()
checkConstrExp(Error(e11,e12),Fun(fn2,fe2)) -> False()
checkConstrExp(Error(e11,e12),ITE(i2,t2,e2)) -> False()
checkConstrExp(Error(e11,e12),T()) -> False()
checkConstrExp(Error(e11,e12),Var(v2)) -> False()
checkConstrExp(F(),Bsf(op2,b21,b22)) -> False()
checkConstrExp(F(),Eq(eq21,eq22)) -> False()
checkConstrExp(F(),Error(e21,e22)) -> False()
checkConstrExp(F(),F()) -> True()
checkConstrExp(F(),Fun(fn2,fe2)) -> False()
checkConstrExp(F(),ITE(i2,t2,e2)) -> False()
checkConstrExp(F(),T()) -> False()
checkConstrExp(F(),Var(v2)) -> False()
checkConstrExp(Fun(fn1,fe1),Bsf(op2,b21,b22)) -> False()
checkConstrExp(Fun(fn1,fe1),Eq(eq21,eq22)) -> False()
checkConstrExp(Fun(fn1,fe1),Error(e21,e22)) -> False()
checkConstrExp(Fun(fn1,fe1),F()) -> False()
checkConstrExp(Fun(fn1,fe1),Fun(fn2,fe2)) -> True()
checkConstrExp(Fun(fn1,fe1),ITE(i2,t2,e2)) -> False()
checkConstrExp(Fun(fn1,fe1),T()) -> False()
checkConstrExp(Fun(fn1,fe1),Var(v2)) -> False()
checkConstrExp(ITE(i1,t1,e1),Bsf(op2,b21,b22)) -> False()
checkConstrExp(ITE(i1,t1,e1),Eq(eq21,eq22)) -> False()
checkConstrExp(ITE(i1,t1,e1),Error(e21,e22)) -> False()
checkConstrExp(ITE(i1,t1,e1),F()) -> False()
checkConstrExp(ITE(i1,t1,e1),Fun(fn2,fe2)) -> False()
checkConstrExp(ITE(i1,t1,e1),ITE(i2,t2,e2)) -> True()
checkConstrExp(ITE(i1,t1,e1),T()) -> False()
checkConstrExp(ITE(i1,t1,e1),Var(v2)) -> False()
checkConstrExp(T(),Bsf(op2,b21,b22)) -> False()
checkConstrExp(T(),Eq(eq21,eq22)) -> False()
checkConstrExp(T(),Error(e21,e22)) -> False()
checkConstrExp(T(),F()) -> False()
checkConstrExp(T(),Fun(fn2,fe2)) -> False()
checkConstrExp(T(),ITE(i2,t2,e2)) -> False()
checkConstrExp(T(),T()) -> True()
checkConstrExp(T(),Var(v2)) -> False()
checkConstrExp(Var(v1),Bsf(op2,b21,b22)) -> False()
checkConstrExp(Var(v1),Eq(eq21,eq22)) -> False()
checkConstrExp(Var(v1),Error(e21,e22)) -> False()
checkConstrExp(Var(v1),F()) -> False()
checkConstrExp(Var(v1),Fun(fn2,fe2)) -> False()
checkConstrExp(Var(v1),ITE(i2,t2,e2)) -> False()
checkConstrExp(Var(v1),T()) -> False()
checkConstrExp(Var(v1),Var(v2)) -> True()
eeval(Bsf(op,t1,t2),ns,vs,p) -> eeval[Let](Bsf(op,t1,t2),ns,vs,p,eeval(t1,ns,vs,p))
eeval(Eq(f,s),ns,vs,p) -> eeval[True][Ite](eqExp(eeval(f,ns,vs,p),eeval(s,ns,vs,p)),Eq(f,s),ns,vs,p)
eeval(Error(e11,e12),ns,vs,p) -> eeval[False][Ite](False(),Error(e11,e12),ns,vs,p)
eeval(F(),ns,vs,p) -> F()
eeval(Fun(n,e),ns,vs,p) -> eeval[False][Let](Fun(n,e),ns,vs,p,lookbody(n,p))
eeval(ITE(i,t,e),ns,vs,p) -> eeval[Ite](checkConstrExp(eeval(i,ns,vs,p),T()),ITE(i,t,e),ns,vs,p)
eeval(T(),ns,vs,p) -> T()
eeval(Var(int),ns,vs,p) -> lookvar(int,ns,vs)
eqExp(Bsf(o1,b11,b12),Bsf(o2,b21,b22)) -> and(True(),and(eqExp(b11,b21),eqExp(b12,b22)))
eqExp(Bsf(op1,b11,b12),Eq(eq21,eq22)) -> False()
eqExp(Bsf(op1,b11,b12),Error(e21,e22)) -> False()
eqExp(Bsf(op1,b11,b12),F()) -> False()
eqExp(Bsf(op1,b11,b12),Fun(fn2,fe2)) -> False()
eqExp(Bsf(op1,b11,b12),ITE(i2,t2,e2)) -> False()
eqExp(Bsf(op1,b11,b12),T()) -> False()
eqExp(Bsf(op1,b11,b12),Var(v2)) -> False()
eqExp(Eq(eq11,eq12),Bsf(op2,b21,b22)) -> False()
eqExp(Eq(eq11,eq12),Eq(eq21,eq22)) -> and(eqExp(eq11,eq21),eqExp(eq12,eq22))
eqExp(Eq(eq11,eq12),Error(e21,e22)) -> False()
eqExp(Eq(eq11,eq12),F()) -> False()
eqExp(Eq(eq11,eq12),Fun(fn2,fe2)) -> False()
eqExp(Eq(eq11,eq12),ITE(i2,t2,e2)) -> False()
eqExp(Eq(eq11,eq12),T()) -> False()
eqExp(Eq(eq11,eq12),Var(v2)) -> False()
eqExp(Error(e11,e12),Bsf(op2,b21,b22)) -> False()
eqExp(Error(e11,e12),Eq(eq21,eq22)) -> False()
eqExp(Error(e11,e12),Error(e21,e22)) -> and(eqExp(e11,e21),eqExp(e12,e22))
eqExp(Error(e11,e12),F()) -> False()
eqExp(Error(e11,e12),Fun(fn2,fe2)) -> False()
eqExp(Error(e11,e12),ITE(i2,t2,e2)) -> False()
eqExp(Error(e11,e12),T()) -> False()
eqExp(Error(e11,e12),Var(v2)) -> False()
eqExp(F(),Bsf(op2,b21,b22)) -> False()
eqExp(F(),Eq(eq21,eq22)) -> False()
eqExp(F(),Error(e21,e22)) -> False()
eqExp(F(),F()) -> True()
eqExp(F(),Fun(fn2,fe2)) -> False()
eqExp(F(),ITE(i2,t2,e2)) -> False()
eqExp(F(),T()) -> False()
eqExp(F(),Var(v2)) -> False()
eqExp(Fun(fn1,fe1),Bsf(op2,b21,b22)) -> False()
eqExp(Fun(fn1,fe1),Eq(eq21,eq22)) -> False()
eqExp(Fun(fn1,fe1),Error(e21,e22)) -> False()
eqExp(Fun(fn1,fe1),F()) -> False()
eqExp(Fun(fn1,fe1),Fun(fn2,fe2)) -> and(!EQ(fn1,fn2),eqExp(fe1,fe2))
eqExp(Fun(fn1,fe1),ITE(i2,t2,e2)) -> False()
eqExp(Fun(fn1,fe1),T()) -> False()
eqExp(Fun(fn1,fe1),Var(v2)) -> False()
eqExp(ITE(i1,t1,e1),Bsf(op2,b21,b22)) -> False()
eqExp(ITE(i1,t1,e1),Eq(eq21,eq22)) -> False()
eqExp(ITE(i1,t1,e1),Error(e21,e22)) -> False()
eqExp(ITE(i1,t1,e1),F()) -> False()
eqExp(ITE(i1,t1,e1),Fun(fn2,fe2)) -> False()
eqExp(ITE(i1,t1,e1),ITE(i2,t2,e2)) -> and(eqExp(i1,i2),and(eqExp(t1,t2),eqExp(e1,e2)))
eqExp(ITE(i1,t1,e1),T()) -> False()
eqExp(ITE(i1,t1,e1),Var(v2)) -> False()
eqExp(T(),Bsf(op2,b21,b22)) -> False()
eqExp(T(),Eq(eq21,eq22)) -> False()
eqExp(T(),Error(e21,e22)) -> False()
eqExp(T(),F()) -> False()
eqExp(T(),Fun(fn2,fe2)) -> False()
eqExp(T(),ITE(i2,t2,e2)) -> False()
eqExp(T(),T()) -> True()
eqExp(T(),Var(v2)) -> False()
eqExp(Var(v1),Bsf(op2,b21,b22)) -> False()
eqExp(Var(v1),Eq(eq21,eq22)) -> False()
eqExp(Var(v1),Error(e21,e22)) -> False()
eqExp(Var(v1),F()) -> False()
eqExp(Var(v1),Fun(fn2,fe2)) -> False()
eqExp(Var(v1),ITE(i2,t2,e2)) -> False()
eqExp(Var(v1),T()) -> False()
eqExp(Var(v1),Var(v2)) -> !EQ(v1,v2)
eqOps(o1,o2) -> True()
getBsfFirstTerm(Bsf(op,t1,t2)) -> t1
getBsfOp(Bsf(op,t1,t2)) -> op
getBsfSecondTerm(Bsf(op,t1,t2)) -> t2
getConst(Cst(int)) -> int
getEqFirst(Eq(f,s)) -> f
getEqSecond(Eq(f,s)) -> s
getFuncExp(Fun(n,e)) -> e
getFuncName(Fun(n,e)) -> n
getIfFalse(ITE(i,t,e)) -> e
getIfGuard(ITE(i,t,e)) -> i
getIfTrue(ITE(i,t,e)) -> t
getVar(Var(int)) -> int
lookbody(f,Cons(Fun(n,e),xs)) -> lookbody[Ite](!EQ(f,n),f,Cons(Fun(n,e),xs))
lookname(f,Cons(Fun(n,e),xs)) -> lookname[Ite](!EQ(f,n),f,Cons(Fun(n,e),xs))
lookvar(x',Cons(x,xs),vs) -> lookvar[Ite](!EQ(x',x),x',Cons(x,xs),vs)
run(Cons(Fun(f0,e),xs),input) -> run[Let][Let](Cons(Fun(f0,e),xs),input,f0,lookbody(f0,Cons(Fun(f0,e),xs)))
- Weak TRS:
!EQ(0(),0()) -> True()
!EQ(0(),S(y)) -> False()
!EQ(S(x),0()) -> False()
!EQ(S(x),S(y)) -> !EQ(x,y)
and(False(),False()) -> False()
and(False(),True()) -> False()
and(True(),False()) -> False()
and(True(),True()) -> True()
apply[Ite](False(),op,v1,v2) -> F()
apply[Ite](True(),op,v1,v2) -> T()
eeval[False][Ite](False(),Fun(n,e),ns,vs,p) -> eeval[False][Let](Fun(n,e),ns,vs,p,lookbody(n,p))
eeval[False][Ite](True(),Eq(f,s),ns,vs,p) -> eeval[True][Ite](eqExp(eeval(f,ns,vs,p),eeval(s,ns,vs,p))
,Eq(f,s)
,ns
,vs
,p)
eeval[False][Let](Fun(n,e),ns,vs,p,ef) -> eeval[False][Let][Let](Fun(n,e),ns,vs,p,ef,lookname(n,p))
eeval[False][Let][Let](Fun(n,e),ns,vs,p,ef,nf) -> eeval[Let][Let][Let](Fun(n,e)
,ns
,vs
,p
,ef
,nf
,eeval(e,ns,vs,p))
eeval[Ite](False(),ITE(i,t,e),ns,vs,p) -> eeval(e,ns,vs,p)
eeval[Ite](True(),ITE(i,t,e),ns,vs,p) -> eeval(t,ns,vs,p)
eeval[Let](Bsf(op,t1,t2),ns,vs,p,v1) -> eeval[Let][Let](Bsf(op,t1,t2),ns,vs,p,v1,eeval(t2,ns,vs,p))
eeval[Let][Let](Bsf(op,t1,t2),ns,vs,p,v1,v2) -> apply(op,v1,v2)
eeval[Let][Let][Let](e,ns,vs,p,ef,nf,v) -> eeval(ef,Cons(nf,Nil()),Cons(v,Nil()),p)
eeval[True][Ite](False(),e,ns,vs,p) -> F()
eeval[True][Ite](True(),e,ns,vs,p) -> T()
lookbody[Ite](False(),f,Cons(x,xs)) -> lookbody(f,xs)
lookbody[Ite](True(),f,Cons(Fun(n,e),xs)) -> e
lookname[Ite](False(),f,Cons(x,xs)) -> lookname(f,xs)
lookname[Ite](True(),f,Cons(Fun(n,e),xs)) -> n
lookvar[Ite](False(),x',Cons(x'',xs'),Cons(x,xs)) -> lookvar(x',xs',xs)
lookvar[Ite](True(),x',ns,Cons(x,xs)) -> x
run[Let](p,input,f0,ef,nf) -> eeval(ef,Cons(nf,Nil()),Cons(input,Nil()),p)
run[Let][Let](p,input,f0,ef) -> run[Let](p,input,f0,ef,lookname(f0,p))
- Signature:
{!EQ/2,and/2,apply/3,apply[Ite]/4,checkConstrExp/2,eeval/4,eeval[False][Ite]/5,eeval[False][Let]/5
,eeval[False][Let][Let]/6,eeval[Ite]/5,eeval[Let]/5,eeval[Let][Let]/6,eeval[Let][Let][Let]/7
,eeval[True][Ite]/5,eqExp/2,eqOps/2,getBsfFirstTerm/1,getBsfOp/1,getBsfSecondTerm/1,getConst/1,getEqFirst/1
,getEqSecond/1,getFuncExp/1,getFuncName/1,getIfFalse/1,getIfGuard/1,getIfTrue/1,getVar/1,lookbody/2
,lookbody[Ite]/3,lookname/2,lookname[Ite]/3,lookvar/3,lookvar[Ite]/4,run/2,run[Let]/5
,run[Let][Let]/4} / {0/0,Bsf/3,Cons/2,Cst/1,Eq/2,Error/2,F/0,False/0,Fun/2,ITE/3,Nil/0,S/1,T/0,True/0,Var/1}
- Obligation:
innermost runtime complexity wrt. defined symbols {!EQ,and,apply,apply[Ite],checkConstrExp,eeval
,eeval[False][Ite],eeval[False][Let],eeval[False][Let][Let],eeval[Ite],eeval[Let],eeval[Let][Let]
,eeval[Let][Let][Let],eeval[True][Ite],eqExp,eqOps,getBsfFirstTerm,getBsfOp,getBsfSecondTerm,getConst
,getEqFirst,getEqSecond,getFuncExp,getFuncName,getIfFalse,getIfGuard,getIfTrue,getVar,lookbody,lookbody[Ite]
,lookname,lookname[Ite],lookvar,lookvar[Ite],run,run[Let],run[Let][Let]} and constructors {0,Bsf,Cons,Cst,Eq
,Error,F,False,Fun,ITE,Nil,S,T,True,Var}
+ Applied Processor:
Sum {left = someStrategy, right = someStrategy}
+ Details:
()
* Step 2: DecreasingLoops WORST_CASE(Omega(n^1),?)
+ Considered Problem:
- Strict TRS:
apply(op,v1,v2) -> apply[Ite](eqExp(v1,v2),op,v1,v2)
checkConstrExp(Bsf(op1,b11,b12),Bsf(op2,b21,b22)) -> True()
checkConstrExp(Bsf(op1,b11,b12),Eq(eq21,eq22)) -> False()
checkConstrExp(Bsf(op1,b11,b12),Error(e21,e22)) -> False()
checkConstrExp(Bsf(op1,b11,b12),F()) -> False()
checkConstrExp(Bsf(op1,b11,b12),Fun(fn2,fe2)) -> False()
checkConstrExp(Bsf(op1,b11,b12),ITE(i2,t2,e2)) -> False()
checkConstrExp(Bsf(op1,b11,b12),T()) -> False()
checkConstrExp(Bsf(op1,b11,b12),Var(v2)) -> False()
checkConstrExp(Eq(eq11,eq12),Bsf(op2,b21,b22)) -> False()
checkConstrExp(Eq(eq11,eq12),Eq(eq21,eq22)) -> True()
checkConstrExp(Eq(eq11,eq12),Error(e21,e22)) -> False()
checkConstrExp(Eq(eq11,eq12),F()) -> False()
checkConstrExp(Eq(eq11,eq12),Fun(fn2,fe2)) -> False()
checkConstrExp(Eq(eq11,eq12),ITE(i2,t2,e2)) -> False()
checkConstrExp(Eq(eq11,eq12),T()) -> False()
checkConstrExp(Eq(eq11,eq12),Var(v2)) -> False()
checkConstrExp(Error(e11,e12),Bsf(op2,b21,b22)) -> False()
checkConstrExp(Error(e11,e12),Eq(eq21,eq22)) -> False()
checkConstrExp(Error(e11,e12),Error(e21,e22)) -> True()
checkConstrExp(Error(e11,e12),F()) -> False()
checkConstrExp(Error(e11,e12),Fun(fn2,fe2)) -> False()
checkConstrExp(Error(e11,e12),ITE(i2,t2,e2)) -> False()
checkConstrExp(Error(e11,e12),T()) -> False()
checkConstrExp(Error(e11,e12),Var(v2)) -> False()
checkConstrExp(F(),Bsf(op2,b21,b22)) -> False()
checkConstrExp(F(),Eq(eq21,eq22)) -> False()
checkConstrExp(F(),Error(e21,e22)) -> False()
checkConstrExp(F(),F()) -> True()
checkConstrExp(F(),Fun(fn2,fe2)) -> False()
checkConstrExp(F(),ITE(i2,t2,e2)) -> False()
checkConstrExp(F(),T()) -> False()
checkConstrExp(F(),Var(v2)) -> False()
checkConstrExp(Fun(fn1,fe1),Bsf(op2,b21,b22)) -> False()
checkConstrExp(Fun(fn1,fe1),Eq(eq21,eq22)) -> False()
checkConstrExp(Fun(fn1,fe1),Error(e21,e22)) -> False()
checkConstrExp(Fun(fn1,fe1),F()) -> False()
checkConstrExp(Fun(fn1,fe1),Fun(fn2,fe2)) -> True()
checkConstrExp(Fun(fn1,fe1),ITE(i2,t2,e2)) -> False()
checkConstrExp(Fun(fn1,fe1),T()) -> False()
checkConstrExp(Fun(fn1,fe1),Var(v2)) -> False()
checkConstrExp(ITE(i1,t1,e1),Bsf(op2,b21,b22)) -> False()
checkConstrExp(ITE(i1,t1,e1),Eq(eq21,eq22)) -> False()
checkConstrExp(ITE(i1,t1,e1),Error(e21,e22)) -> False()
checkConstrExp(ITE(i1,t1,e1),F()) -> False()
checkConstrExp(ITE(i1,t1,e1),Fun(fn2,fe2)) -> False()
checkConstrExp(ITE(i1,t1,e1),ITE(i2,t2,e2)) -> True()
checkConstrExp(ITE(i1,t1,e1),T()) -> False()
checkConstrExp(ITE(i1,t1,e1),Var(v2)) -> False()
checkConstrExp(T(),Bsf(op2,b21,b22)) -> False()
checkConstrExp(T(),Eq(eq21,eq22)) -> False()
checkConstrExp(T(),Error(e21,e22)) -> False()
checkConstrExp(T(),F()) -> False()
checkConstrExp(T(),Fun(fn2,fe2)) -> False()
checkConstrExp(T(),ITE(i2,t2,e2)) -> False()
checkConstrExp(T(),T()) -> True()
checkConstrExp(T(),Var(v2)) -> False()
checkConstrExp(Var(v1),Bsf(op2,b21,b22)) -> False()
checkConstrExp(Var(v1),Eq(eq21,eq22)) -> False()
checkConstrExp(Var(v1),Error(e21,e22)) -> False()
checkConstrExp(Var(v1),F()) -> False()
checkConstrExp(Var(v1),Fun(fn2,fe2)) -> False()
checkConstrExp(Var(v1),ITE(i2,t2,e2)) -> False()
checkConstrExp(Var(v1),T()) -> False()
checkConstrExp(Var(v1),Var(v2)) -> True()
eeval(Bsf(op,t1,t2),ns,vs,p) -> eeval[Let](Bsf(op,t1,t2),ns,vs,p,eeval(t1,ns,vs,p))
eeval(Eq(f,s),ns,vs,p) -> eeval[True][Ite](eqExp(eeval(f,ns,vs,p),eeval(s,ns,vs,p)),Eq(f,s),ns,vs,p)
eeval(Error(e11,e12),ns,vs,p) -> eeval[False][Ite](False(),Error(e11,e12),ns,vs,p)
eeval(F(),ns,vs,p) -> F()
eeval(Fun(n,e),ns,vs,p) -> eeval[False][Let](Fun(n,e),ns,vs,p,lookbody(n,p))
eeval(ITE(i,t,e),ns,vs,p) -> eeval[Ite](checkConstrExp(eeval(i,ns,vs,p),T()),ITE(i,t,e),ns,vs,p)
eeval(T(),ns,vs,p) -> T()
eeval(Var(int),ns,vs,p) -> lookvar(int,ns,vs)
eqExp(Bsf(o1,b11,b12),Bsf(o2,b21,b22)) -> and(True(),and(eqExp(b11,b21),eqExp(b12,b22)))
eqExp(Bsf(op1,b11,b12),Eq(eq21,eq22)) -> False()
eqExp(Bsf(op1,b11,b12),Error(e21,e22)) -> False()
eqExp(Bsf(op1,b11,b12),F()) -> False()
eqExp(Bsf(op1,b11,b12),Fun(fn2,fe2)) -> False()
eqExp(Bsf(op1,b11,b12),ITE(i2,t2,e2)) -> False()
eqExp(Bsf(op1,b11,b12),T()) -> False()
eqExp(Bsf(op1,b11,b12),Var(v2)) -> False()
eqExp(Eq(eq11,eq12),Bsf(op2,b21,b22)) -> False()
eqExp(Eq(eq11,eq12),Eq(eq21,eq22)) -> and(eqExp(eq11,eq21),eqExp(eq12,eq22))
eqExp(Eq(eq11,eq12),Error(e21,e22)) -> False()
eqExp(Eq(eq11,eq12),F()) -> False()
eqExp(Eq(eq11,eq12),Fun(fn2,fe2)) -> False()
eqExp(Eq(eq11,eq12),ITE(i2,t2,e2)) -> False()
eqExp(Eq(eq11,eq12),T()) -> False()
eqExp(Eq(eq11,eq12),Var(v2)) -> False()
eqExp(Error(e11,e12),Bsf(op2,b21,b22)) -> False()
eqExp(Error(e11,e12),Eq(eq21,eq22)) -> False()
eqExp(Error(e11,e12),Error(e21,e22)) -> and(eqExp(e11,e21),eqExp(e12,e22))
eqExp(Error(e11,e12),F()) -> False()
eqExp(Error(e11,e12),Fun(fn2,fe2)) -> False()
eqExp(Error(e11,e12),ITE(i2,t2,e2)) -> False()
eqExp(Error(e11,e12),T()) -> False()
eqExp(Error(e11,e12),Var(v2)) -> False()
eqExp(F(),Bsf(op2,b21,b22)) -> False()
eqExp(F(),Eq(eq21,eq22)) -> False()
eqExp(F(),Error(e21,e22)) -> False()
eqExp(F(),F()) -> True()
eqExp(F(),Fun(fn2,fe2)) -> False()
eqExp(F(),ITE(i2,t2,e2)) -> False()
eqExp(F(),T()) -> False()
eqExp(F(),Var(v2)) -> False()
eqExp(Fun(fn1,fe1),Bsf(op2,b21,b22)) -> False()
eqExp(Fun(fn1,fe1),Eq(eq21,eq22)) -> False()
eqExp(Fun(fn1,fe1),Error(e21,e22)) -> False()
eqExp(Fun(fn1,fe1),F()) -> False()
eqExp(Fun(fn1,fe1),Fun(fn2,fe2)) -> and(!EQ(fn1,fn2),eqExp(fe1,fe2))
eqExp(Fun(fn1,fe1),ITE(i2,t2,e2)) -> False()
eqExp(Fun(fn1,fe1),T()) -> False()
eqExp(Fun(fn1,fe1),Var(v2)) -> False()
eqExp(ITE(i1,t1,e1),Bsf(op2,b21,b22)) -> False()
eqExp(ITE(i1,t1,e1),Eq(eq21,eq22)) -> False()
eqExp(ITE(i1,t1,e1),Error(e21,e22)) -> False()
eqExp(ITE(i1,t1,e1),F()) -> False()
eqExp(ITE(i1,t1,e1),Fun(fn2,fe2)) -> False()
eqExp(ITE(i1,t1,e1),ITE(i2,t2,e2)) -> and(eqExp(i1,i2),and(eqExp(t1,t2),eqExp(e1,e2)))
eqExp(ITE(i1,t1,e1),T()) -> False()
eqExp(ITE(i1,t1,e1),Var(v2)) -> False()
eqExp(T(),Bsf(op2,b21,b22)) -> False()
eqExp(T(),Eq(eq21,eq22)) -> False()
eqExp(T(),Error(e21,e22)) -> False()
eqExp(T(),F()) -> False()
eqExp(T(),Fun(fn2,fe2)) -> False()
eqExp(T(),ITE(i2,t2,e2)) -> False()
eqExp(T(),T()) -> True()
eqExp(T(),Var(v2)) -> False()
eqExp(Var(v1),Bsf(op2,b21,b22)) -> False()
eqExp(Var(v1),Eq(eq21,eq22)) -> False()
eqExp(Var(v1),Error(e21,e22)) -> False()
eqExp(Var(v1),F()) -> False()
eqExp(Var(v1),Fun(fn2,fe2)) -> False()
eqExp(Var(v1),ITE(i2,t2,e2)) -> False()
eqExp(Var(v1),T()) -> False()
eqExp(Var(v1),Var(v2)) -> !EQ(v1,v2)
eqOps(o1,o2) -> True()
getBsfFirstTerm(Bsf(op,t1,t2)) -> t1
getBsfOp(Bsf(op,t1,t2)) -> op
getBsfSecondTerm(Bsf(op,t1,t2)) -> t2
getConst(Cst(int)) -> int
getEqFirst(Eq(f,s)) -> f
getEqSecond(Eq(f,s)) -> s
getFuncExp(Fun(n,e)) -> e
getFuncName(Fun(n,e)) -> n
getIfFalse(ITE(i,t,e)) -> e
getIfGuard(ITE(i,t,e)) -> i
getIfTrue(ITE(i,t,e)) -> t
getVar(Var(int)) -> int
lookbody(f,Cons(Fun(n,e),xs)) -> lookbody[Ite](!EQ(f,n),f,Cons(Fun(n,e),xs))
lookname(f,Cons(Fun(n,e),xs)) -> lookname[Ite](!EQ(f,n),f,Cons(Fun(n,e),xs))
lookvar(x',Cons(x,xs),vs) -> lookvar[Ite](!EQ(x',x),x',Cons(x,xs),vs)
run(Cons(Fun(f0,e),xs),input) -> run[Let][Let](Cons(Fun(f0,e),xs),input,f0,lookbody(f0,Cons(Fun(f0,e),xs)))
- Weak TRS:
!EQ(0(),0()) -> True()
!EQ(0(),S(y)) -> False()
!EQ(S(x),0()) -> False()
!EQ(S(x),S(y)) -> !EQ(x,y)
and(False(),False()) -> False()
and(False(),True()) -> False()
and(True(),False()) -> False()
and(True(),True()) -> True()
apply[Ite](False(),op,v1,v2) -> F()
apply[Ite](True(),op,v1,v2) -> T()
eeval[False][Ite](False(),Fun(n,e),ns,vs,p) -> eeval[False][Let](Fun(n,e),ns,vs,p,lookbody(n,p))
eeval[False][Ite](True(),Eq(f,s),ns,vs,p) -> eeval[True][Ite](eqExp(eeval(f,ns,vs,p),eeval(s,ns,vs,p))
,Eq(f,s)
,ns
,vs
,p)
eeval[False][Let](Fun(n,e),ns,vs,p,ef) -> eeval[False][Let][Let](Fun(n,e),ns,vs,p,ef,lookname(n,p))
eeval[False][Let][Let](Fun(n,e),ns,vs,p,ef,nf) -> eeval[Let][Let][Let](Fun(n,e)
,ns
,vs
,p
,ef
,nf
,eeval(e,ns,vs,p))
eeval[Ite](False(),ITE(i,t,e),ns,vs,p) -> eeval(e,ns,vs,p)
eeval[Ite](True(),ITE(i,t,e),ns,vs,p) -> eeval(t,ns,vs,p)
eeval[Let](Bsf(op,t1,t2),ns,vs,p,v1) -> eeval[Let][Let](Bsf(op,t1,t2),ns,vs,p,v1,eeval(t2,ns,vs,p))
eeval[Let][Let](Bsf(op,t1,t2),ns,vs,p,v1,v2) -> apply(op,v1,v2)
eeval[Let][Let][Let](e,ns,vs,p,ef,nf,v) -> eeval(ef,Cons(nf,Nil()),Cons(v,Nil()),p)
eeval[True][Ite](False(),e,ns,vs,p) -> F()
eeval[True][Ite](True(),e,ns,vs,p) -> T()
lookbody[Ite](False(),f,Cons(x,xs)) -> lookbody(f,xs)
lookbody[Ite](True(),f,Cons(Fun(n,e),xs)) -> e
lookname[Ite](False(),f,Cons(x,xs)) -> lookname(f,xs)
lookname[Ite](True(),f,Cons(Fun(n,e),xs)) -> n
lookvar[Ite](False(),x',Cons(x'',xs'),Cons(x,xs)) -> lookvar(x',xs',xs)
lookvar[Ite](True(),x',ns,Cons(x,xs)) -> x
run[Let](p,input,f0,ef,nf) -> eeval(ef,Cons(nf,Nil()),Cons(input,Nil()),p)
run[Let][Let](p,input,f0,ef) -> run[Let](p,input,f0,ef,lookname(f0,p))
- Signature:
{!EQ/2,and/2,apply/3,apply[Ite]/4,checkConstrExp/2,eeval/4,eeval[False][Ite]/5,eeval[False][Let]/5
,eeval[False][Let][Let]/6,eeval[Ite]/5,eeval[Let]/5,eeval[Let][Let]/6,eeval[Let][Let][Let]/7
,eeval[True][Ite]/5,eqExp/2,eqOps/2,getBsfFirstTerm/1,getBsfOp/1,getBsfSecondTerm/1,getConst/1,getEqFirst/1
,getEqSecond/1,getFuncExp/1,getFuncName/1,getIfFalse/1,getIfGuard/1,getIfTrue/1,getVar/1,lookbody/2
,lookbody[Ite]/3,lookname/2,lookname[Ite]/3,lookvar/3,lookvar[Ite]/4,run/2,run[Let]/5
,run[Let][Let]/4} / {0/0,Bsf/3,Cons/2,Cst/1,Eq/2,Error/2,F/0,False/0,Fun/2,ITE/3,Nil/0,S/1,T/0,True/0,Var/1}
- Obligation:
innermost runtime complexity wrt. defined symbols {!EQ,and,apply,apply[Ite],checkConstrExp,eeval
,eeval[False][Ite],eeval[False][Let],eeval[False][Let][Let],eeval[Ite],eeval[Let],eeval[Let][Let]
,eeval[Let][Let][Let],eeval[True][Ite],eqExp,eqOps,getBsfFirstTerm,getBsfOp,getBsfSecondTerm,getConst
,getEqFirst,getEqSecond,getFuncExp,getFuncName,getIfFalse,getIfGuard,getIfTrue,getVar,lookbody,lookbody[Ite]
,lookname,lookname[Ite],lookvar,lookvar[Ite],run,run[Let],run[Let][Let]} and constructors {0,Bsf,Cons,Cst,Eq
,Error,F,False,Fun,ITE,Nil,S,T,True,Var}
+ Applied Processor:
DecreasingLoops {bound = AnyLoop, narrow = 10}
+ Details:
The system has following decreasing Loops:
eeval(y,u,v,w){y -> Bsf(x,y,z)} =
eeval(Bsf(x,y,z),u,v,w) ->^+ eeval[Let](Bsf(x,y,z),u,v,w,eeval(y,u,v,w))
= C[eeval(y,u,v,w) = eeval(y,u,v,w){}]
WORST_CASE(Omega(n^1),?)