YES(O(1),O(n^1)) 54.04/15.46 YES(O(1),O(n^1)) 54.04/15.46 54.04/15.46 We are left with following problem, upon which TcT provides the 54.04/15.46 certificate YES(O(1),O(n^1)). 54.04/15.46 54.04/15.46 Strict Trs: 54.04/15.46 { getFuncName(Fun(n, e)) -> n 54.04/15.46 , run(Cons(Fun(f0, e), xs), input) -> 54.04/15.46 run[Let][Let](Cons(Fun(f0, e), xs), 54.04/15.46 input, 54.04/15.46 f0, 54.04/15.46 lookbody(f0, Cons(Fun(f0, e), xs))) 54.04/15.46 , getIfFalse(ITE(i, t, e)) -> e 54.04/15.46 , lookbody(f, Cons(Fun(n, e), xs)) -> 54.04/15.46 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.04/15.46 , lookvar(x', Cons(x, xs), vs) -> 54.04/15.46 lookvar[Ite](!EQ(x', x), x', Cons(x, xs), vs) 54.04/15.46 , lookname(f, Cons(Fun(n, e), xs)) -> 54.04/15.46 lookname[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.04/15.46 , getConst(Cst(int)) -> int 54.04/15.46 , getFuncExp(Fun(n, e)) -> e 54.04/15.46 , eqExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.04/15.46 and(!EQ(fn1, fn2), eqExp(fe1, fe2)) 54.04/15.46 , eqExp(Fun(fn1, fe1), Var(v2)) -> False() 54.04/15.46 , eqExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False() 54.04/15.46 , eqExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False() 54.04/15.46 , eqExp(Fun(fn1, fe1), Error(e21, e22)) -> False() 54.04/15.46 , eqExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False() 54.04/15.47 , eqExp(Fun(fn1, fe1), T()) -> False() 54.04/15.47 , eqExp(Fun(fn1, fe1), F()) -> False() 54.04/15.47 , eqExp(Var(v1), Fun(fn2, fe2)) -> False() 54.04/15.47 , eqExp(Var(v1), Var(v2)) -> !EQ(v1, v2) 54.04/15.47 , eqExp(Var(v1), ITE(i2, t2, e2)) -> False() 54.04/15.47 , eqExp(Var(v1), Eq(eq21, eq22)) -> False() 54.04/15.47 , eqExp(Var(v1), Error(e21, e22)) -> False() 54.04/15.47 , eqExp(Var(v1), Bsf(op2, b21, b22)) -> False() 54.04/15.47 , eqExp(Var(v1), T()) -> False() 54.04/15.47 , eqExp(Var(v1), F()) -> False() 54.04/15.47 , eqExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False() 54.04/15.47 , eqExp(ITE(i1, t1, e1), Var(v2)) -> False() 54.04/15.47 , eqExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.04/15.47 and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) 54.04/15.47 , eqExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False() 54.04/15.47 , eqExp(ITE(i1, t1, e1), Error(e21, e22)) -> False() 54.04/15.47 , eqExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False() 54.04/15.47 , eqExp(ITE(i1, t1, e1), T()) -> False() 54.04/15.47 , eqExp(ITE(i1, t1, e1), F()) -> False() 54.04/15.47 , eqExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False() 54.04/15.47 , eqExp(Eq(eq11, eq12), Var(v2)) -> False() 54.04/15.47 , eqExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False() 54.04/15.47 , eqExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.04/15.47 and(eqExp(eq11, eq21), eqExp(eq12, eq22)) 54.04/15.47 , eqExp(Eq(eq11, eq12), Error(e21, e22)) -> False() 54.04/15.47 , eqExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False() 54.04/15.47 , eqExp(Eq(eq11, eq12), T()) -> False() 54.04/15.47 , eqExp(Eq(eq11, eq12), F()) -> False() 54.04/15.47 , eqExp(Error(e11, e12), Fun(fn2, fe2)) -> False() 54.04/15.47 , eqExp(Error(e11, e12), Var(v2)) -> False() 54.04/15.47 , eqExp(Error(e11, e12), ITE(i2, t2, e2)) -> False() 54.04/15.47 , eqExp(Error(e11, e12), Eq(eq21, eq22)) -> False() 54.04/15.47 , eqExp(Error(e11, e12), Error(e21, e22)) -> 54.04/15.47 and(eqExp(e11, e21), eqExp(e12, e22)) 54.04/15.47 , eqExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False() 54.04/15.47 , eqExp(Error(e11, e12), T()) -> False() 54.04/15.47 , eqExp(Error(e11, e12), F()) -> False() 54.04/15.47 , eqExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False() 54.04/15.47 , eqExp(Bsf(op1, b11, b12), Var(v2)) -> False() 54.04/15.47 , eqExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False() 54.04/15.47 , eqExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False() 54.04/15.47 , eqExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False() 54.04/15.47 , eqExp(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.04/15.47 and(True(), and(eqExp(b11, b21), eqExp(b12, b22))) 54.04/15.47 , eqExp(Bsf(op1, b11, b12), T()) -> False() 54.04/15.47 , eqExp(Bsf(op1, b11, b12), F()) -> False() 54.04/15.47 , eqExp(T(), Fun(fn2, fe2)) -> False() 54.04/15.47 , eqExp(T(), Var(v2)) -> False() 54.04/15.47 , eqExp(T(), ITE(i2, t2, e2)) -> False() 54.04/15.47 , eqExp(T(), Eq(eq21, eq22)) -> False() 54.04/15.47 , eqExp(T(), Error(e21, e22)) -> False() 54.04/15.47 , eqExp(T(), Bsf(op2, b21, b22)) -> False() 54.04/15.47 , eqExp(T(), T()) -> True() 54.04/15.47 , eqExp(T(), F()) -> False() 54.04/15.47 , eqExp(F(), Fun(fn2, fe2)) -> False() 54.04/15.47 , eqExp(F(), Var(v2)) -> False() 54.04/15.47 , eqExp(F(), ITE(i2, t2, e2)) -> False() 54.04/15.47 , eqExp(F(), Eq(eq21, eq22)) -> False() 54.04/15.47 , eqExp(F(), Error(e21, e22)) -> False() 54.04/15.47 , eqExp(F(), Bsf(op2, b21, b22)) -> False() 54.04/15.47 , eqExp(F(), T()) -> False() 54.04/15.47 , eqExp(F(), F()) -> True() 54.04/15.47 , apply(op, v1, v2) -> 54.04/15.47 apply[Ite][True][Ite](eqExp(v1, v2), op, v1, v2) 54.04/15.47 , getVar(Var(int)) -> int 54.04/15.47 , getBsfSecondTerm(Bsf(op, t1, t2)) -> t2 54.04/15.47 , eeval(Fun(fn1, fe1), ns, vs, p) -> 54.04/15.47 eeval[Ite][False][Ite][False][Ite](False(), 54.04/15.47 Fun(fn1, fe1), 54.04/15.47 ns, 54.04/15.47 vs, 54.04/15.47 p) 54.04/15.47 , eeval(Var(int), ns, vs, p) -> lookvar(int, ns, vs) 54.04/15.47 , eeval(ITE(i1, t1, e1), ns, vs, p) -> 54.04/15.47 eeval[Ite][False][Ite][False][Ite](False(), 54.04/15.47 ITE(i1, t1, e1), 54.04/15.47 ns, 54.04/15.47 vs, 54.04/15.47 p) 54.04/15.47 , eeval(Eq(eq11, eq12), ns, vs, p) -> 54.04/15.47 eeval[Ite][False][Ite][False][Ite](False(), 54.04/15.47 Eq(eq11, eq12), 54.04/15.47 ns, 54.04/15.47 vs, 54.04/15.47 p) 54.04/15.47 , eeval(Error(e11, e12), ns, vs, p) -> 54.04/15.47 eeval[Ite][False][Ite][False][Ite](False(), 54.04/15.47 Error(e11, e12), 54.04/15.47 ns, 54.04/15.47 vs, 54.04/15.47 p) 54.04/15.47 , eeval(Bsf(op1, b11, b12), ns, vs, p) -> 54.04/15.47 eeval[Ite][False][Ite][False][Ite](True(), 54.04/15.47 Bsf(op1, b11, b12), 54.04/15.47 ns, 54.04/15.47 vs, 54.04/15.47 p) 54.04/15.47 , eeval(T(), ns, vs, p) -> T() 54.04/15.47 , eeval(F(), ns, vs, p) -> F() 54.04/15.47 , checkConstrExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> True() 54.04/15.47 , checkConstrExp(Fun(fn1, fe1), Var(v2)) -> False() 54.04/15.47 , checkConstrExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False() 54.04/15.47 , checkConstrExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False() 54.04/15.47 , checkConstrExp(Fun(fn1, fe1), Error(e21, e22)) -> False() 54.04/15.47 , checkConstrExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False() 54.04/15.47 , checkConstrExp(Fun(fn1, fe1), T()) -> False() 54.04/15.47 , checkConstrExp(Fun(fn1, fe1), F()) -> False() 54.04/15.47 , checkConstrExp(Var(v1), Fun(fn2, fe2)) -> False() 54.04/15.47 , checkConstrExp(Var(v1), Var(v2)) -> True() 54.04/15.47 , checkConstrExp(Var(v1), ITE(i2, t2, e2)) -> False() 54.04/15.47 , checkConstrExp(Var(v1), Eq(eq21, eq22)) -> False() 54.04/15.47 , checkConstrExp(Var(v1), Error(e21, e22)) -> False() 54.04/15.47 , checkConstrExp(Var(v1), Bsf(op2, b21, b22)) -> False() 54.04/15.47 , checkConstrExp(Var(v1), T()) -> False() 54.04/15.47 , checkConstrExp(Var(v1), F()) -> False() 54.04/15.47 , checkConstrExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False() 54.04/15.47 , checkConstrExp(ITE(i1, t1, e1), Var(v2)) -> False() 54.04/15.47 , checkConstrExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> True() 54.04/15.47 , checkConstrExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False() 54.04/15.47 , checkConstrExp(ITE(i1, t1, e1), Error(e21, e22)) -> False() 54.04/15.47 , checkConstrExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False() 54.04/15.47 , checkConstrExp(ITE(i1, t1, e1), T()) -> False() 54.04/15.47 , checkConstrExp(ITE(i1, t1, e1), F()) -> False() 54.04/15.47 , checkConstrExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False() 54.04/15.47 , checkConstrExp(Eq(eq11, eq12), Var(v2)) -> False() 54.04/15.47 , checkConstrExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False() 54.04/15.47 , checkConstrExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> True() 54.04/15.47 , checkConstrExp(Eq(eq11, eq12), Error(e21, e22)) -> False() 54.04/15.47 , checkConstrExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False() 54.04/15.47 , checkConstrExp(Eq(eq11, eq12), T()) -> False() 54.04/15.47 , checkConstrExp(Eq(eq11, eq12), F()) -> False() 54.04/15.47 , checkConstrExp(Error(e11, e12), Fun(fn2, fe2)) -> False() 54.04/15.47 , checkConstrExp(Error(e11, e12), Var(v2)) -> False() 54.04/15.47 , checkConstrExp(Error(e11, e12), ITE(i2, t2, e2)) -> False() 54.04/15.47 , checkConstrExp(Error(e11, e12), Eq(eq21, eq22)) -> False() 54.04/15.47 , checkConstrExp(Error(e11, e12), Error(e21, e22)) -> True() 54.04/15.47 , checkConstrExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False() 54.04/15.47 , checkConstrExp(Error(e11, e12), T()) -> False() 54.04/15.47 , checkConstrExp(Error(e11, e12), F()) -> False() 54.04/15.47 , checkConstrExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False() 54.04/15.47 , checkConstrExp(Bsf(op1, b11, b12), Var(v2)) -> False() 54.04/15.47 , checkConstrExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False() 54.04/15.47 , checkConstrExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False() 54.04/15.47 , checkConstrExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False() 54.04/15.47 , checkConstrExp(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> True() 54.04/15.47 , checkConstrExp(Bsf(op1, b11, b12), T()) -> False() 54.04/15.47 , checkConstrExp(Bsf(op1, b11, b12), F()) -> False() 54.04/15.47 , checkConstrExp(T(), Fun(fn2, fe2)) -> False() 54.04/15.47 , checkConstrExp(T(), Var(v2)) -> False() 54.04/15.47 , checkConstrExp(T(), ITE(i2, t2, e2)) -> False() 54.04/15.47 , checkConstrExp(T(), Eq(eq21, eq22)) -> False() 54.04/15.47 , checkConstrExp(T(), Error(e21, e22)) -> False() 54.04/15.47 , checkConstrExp(T(), Bsf(op2, b21, b22)) -> False() 54.04/15.47 , checkConstrExp(T(), T()) -> True() 54.04/15.47 , checkConstrExp(T(), F()) -> False() 54.04/15.47 , checkConstrExp(F(), Fun(fn2, fe2)) -> False() 54.04/15.47 , checkConstrExp(F(), Var(v2)) -> False() 54.04/15.47 , checkConstrExp(F(), ITE(i2, t2, e2)) -> False() 54.04/15.47 , checkConstrExp(F(), Eq(eq21, eq22)) -> False() 54.04/15.47 , checkConstrExp(F(), Error(e21, e22)) -> False() 54.04/15.47 , checkConstrExp(F(), Bsf(op2, b21, b22)) -> False() 54.04/15.47 , checkConstrExp(F(), T()) -> False() 54.04/15.47 , checkConstrExp(F(), F()) -> True() 54.04/15.47 , getIfTrue(ITE(i, t, e)) -> t 54.04/15.47 , getEqSecond(Eq(f, s)) -> s 54.04/15.47 , getEqFirst(Eq(f, s)) -> f 54.04/15.47 , getBsfOp(Bsf(op, t1, t2)) -> op 54.04/15.47 , getBsfFirstTerm(Bsf(op, t1, t2)) -> t1 54.04/15.47 , getIfGuard(ITE(i, t, e)) -> i 54.04/15.47 , eqOps(o1, o2) -> True() } 54.04/15.47 Weak Trs: 54.04/15.47 { lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.04/15.47 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.04/15.47 , lookvar[Ite](True(), x', ns, Cons(x, xs)) -> x 54.04/15.47 , lookvar[Ite](False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.04/15.47 lookvar(x', xs', xs) 54.04/15.47 , apply[Ite][True][Ite](True(), op, v1, v2) -> T() 54.04/15.47 , apply[Ite][True][Ite](False(), op, v1, v2) -> F() 54.04/15.47 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.04/15.47 , !EQ(S(x), 0()) -> False() 54.04/15.47 , !EQ(0(), S(y)) -> False() 54.04/15.47 , !EQ(0(), 0()) -> True() 54.04/15.47 , and(True(), True()) -> True() 54.04/15.47 , and(True(), False()) -> False() 54.04/15.47 , and(False(), True()) -> False() 54.04/15.47 , and(False(), False()) -> False() 54.04/15.47 , run[Let][Let](p, input, f0, ef) -> 54.04/15.47 run[Let][Let][Let](p, input, f0, ef, lookname(f0, p)) 54.04/15.47 , lookname[Ite](True(), f, Cons(Fun(n, e), xs)) -> n 54.04/15.47 , lookname[Ite](False(), f, Cons(x, xs)) -> lookname(f, xs) } 54.04/15.47 Obligation: 54.04/15.47 innermost runtime complexity 54.04/15.47 Answer: 54.04/15.47 YES(O(1),O(n^1)) 54.04/15.47 54.04/15.47 We add the following dependency tuples: 54.04/15.47 54.04/15.47 Strict DPs: 54.04/15.47 { getFuncName^#(Fun(n, e)) -> c_1() 54.04/15.47 , run^#(Cons(Fun(f0, e), xs), input) -> 54.04/15.47 c_2(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.04/15.47 input, 54.04/15.47 f0, 54.04/15.47 lookbody(f0, Cons(Fun(f0, e), xs))), 54.04/15.47 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.04/15.47 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.04/15.47 c_4(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs)), 54.04/15.47 !EQ^#(f, n)) 54.04/15.47 , getIfFalse^#(ITE(i, t, e)) -> c_3() 54.04/15.47 , lookvar^#(x', Cons(x, xs), vs) -> 54.04/15.47 c_5(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs), !EQ^#(x', x)) 54.04/15.47 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.04/15.47 c_6(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs)), 54.04/15.47 !EQ^#(f, n)) 54.04/15.47 , getConst^#(Cst(int)) -> c_7() 54.04/15.47 , getFuncExp^#(Fun(n, e)) -> c_8() 54.04/15.47 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.04/15.47 c_9(and^#(!EQ(fn1, fn2), eqExp(fe1, fe2)), 54.04/15.47 !EQ^#(fn1, fn2), 54.04/15.47 eqExp^#(fe1, fe2)) 54.04/15.47 , eqExp^#(Fun(fn1, fe1), Var(v2)) -> c_10() 54.04/15.47 , eqExp^#(Fun(fn1, fe1), ITE(i2, t2, e2)) -> c_11() 54.04/15.47 , eqExp^#(Fun(fn1, fe1), Eq(eq21, eq22)) -> c_12() 54.04/15.47 , eqExp^#(Fun(fn1, fe1), Error(e21, e22)) -> c_13() 54.04/15.47 , eqExp^#(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> c_14() 54.04/15.47 , eqExp^#(Fun(fn1, fe1), T()) -> c_15() 54.04/15.47 , eqExp^#(Fun(fn1, fe1), F()) -> c_16() 54.04/15.47 , eqExp^#(Var(v1), Fun(fn2, fe2)) -> c_17() 54.04/15.47 , eqExp^#(Var(v1), Var(v2)) -> c_18(!EQ^#(v1, v2)) 54.04/15.47 , eqExp^#(Var(v1), ITE(i2, t2, e2)) -> c_19() 54.04/15.47 , eqExp^#(Var(v1), Eq(eq21, eq22)) -> c_20() 54.04/15.47 , eqExp^#(Var(v1), Error(e21, e22)) -> c_21() 54.04/15.47 , eqExp^#(Var(v1), Bsf(op2, b21, b22)) -> c_22() 54.04/15.47 , eqExp^#(Var(v1), T()) -> c_23() 54.04/15.47 , eqExp^#(Var(v1), F()) -> c_24() 54.04/15.47 , eqExp^#(ITE(i1, t1, e1), Fun(fn2, fe2)) -> c_25() 54.04/15.47 , eqExp^#(ITE(i1, t1, e1), Var(v2)) -> c_26() 54.04/15.47 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.04/15.47 c_27(and^#(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))), 54.04/15.47 eqExp^#(i1, i2), 54.04/15.47 and^#(eqExp(t1, t2), eqExp(e1, e2)), 54.04/15.47 eqExp^#(t1, t2), 54.04/15.47 eqExp^#(e1, e2)) 54.04/15.47 , eqExp^#(ITE(i1, t1, e1), Eq(eq21, eq22)) -> c_28() 54.04/15.47 , eqExp^#(ITE(i1, t1, e1), Error(e21, e22)) -> c_29() 54.04/15.47 , eqExp^#(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> c_30() 54.04/15.47 , eqExp^#(ITE(i1, t1, e1), T()) -> c_31() 54.04/15.47 , eqExp^#(ITE(i1, t1, e1), F()) -> c_32() 54.04/15.47 , eqExp^#(Eq(eq11, eq12), Fun(fn2, fe2)) -> c_33() 54.04/15.47 , eqExp^#(Eq(eq11, eq12), Var(v2)) -> c_34() 54.04/15.47 , eqExp^#(Eq(eq11, eq12), ITE(i2, t2, e2)) -> c_35() 54.04/15.47 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.04/15.47 c_36(and^#(eqExp(eq11, eq21), eqExp(eq12, eq22)), 54.04/15.47 eqExp^#(eq11, eq21), 54.04/15.47 eqExp^#(eq12, eq22)) 54.04/15.47 , eqExp^#(Eq(eq11, eq12), Error(e21, e22)) -> c_37() 54.04/15.47 , eqExp^#(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> c_38() 54.04/15.47 , eqExp^#(Eq(eq11, eq12), T()) -> c_39() 54.04/15.47 , eqExp^#(Eq(eq11, eq12), F()) -> c_40() 54.04/15.47 , eqExp^#(Error(e11, e12), Fun(fn2, fe2)) -> c_41() 54.04/15.47 , eqExp^#(Error(e11, e12), Var(v2)) -> c_42() 54.04/15.47 , eqExp^#(Error(e11, e12), ITE(i2, t2, e2)) -> c_43() 54.04/15.47 , eqExp^#(Error(e11, e12), Eq(eq21, eq22)) -> c_44() 54.04/15.47 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.04/15.47 c_45(and^#(eqExp(e11, e21), eqExp(e12, e22)), 54.04/15.47 eqExp^#(e11, e21), 54.04/15.47 eqExp^#(e12, e22)) 54.04/15.47 , eqExp^#(Error(e11, e12), Bsf(op2, b21, b22)) -> c_46() 54.04/15.47 , eqExp^#(Error(e11, e12), T()) -> c_47() 54.04/15.47 , eqExp^#(Error(e11, e12), F()) -> c_48() 54.04/15.47 , eqExp^#(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> c_49() 54.04/15.47 , eqExp^#(Bsf(op1, b11, b12), Var(v2)) -> c_50() 54.04/15.47 , eqExp^#(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> c_51() 54.04/15.47 , eqExp^#(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> c_52() 54.04/15.47 , eqExp^#(Bsf(op1, b11, b12), Error(e21, e22)) -> c_53() 54.04/15.47 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.04/15.47 c_54(and^#(True(), and(eqExp(b11, b21), eqExp(b12, b22))), 54.04/15.47 and^#(eqExp(b11, b21), eqExp(b12, b22)), 54.04/15.47 eqExp^#(b11, b21), 54.04/15.47 eqExp^#(b12, b22)) 54.04/15.47 , eqExp^#(Bsf(op1, b11, b12), T()) -> c_55() 54.04/15.47 , eqExp^#(Bsf(op1, b11, b12), F()) -> c_56() 54.04/15.47 , eqExp^#(T(), Fun(fn2, fe2)) -> c_57() 54.04/15.47 , eqExp^#(T(), Var(v2)) -> c_58() 54.04/15.47 , eqExp^#(T(), ITE(i2, t2, e2)) -> c_59() 54.04/15.47 , eqExp^#(T(), Eq(eq21, eq22)) -> c_60() 54.04/15.47 , eqExp^#(T(), Error(e21, e22)) -> c_61() 54.04/15.47 , eqExp^#(T(), Bsf(op2, b21, b22)) -> c_62() 54.04/15.47 , eqExp^#(T(), T()) -> c_63() 54.04/15.47 , eqExp^#(T(), F()) -> c_64() 54.04/15.47 , eqExp^#(F(), Fun(fn2, fe2)) -> c_65() 54.04/15.47 , eqExp^#(F(), Var(v2)) -> c_66() 54.04/15.47 , eqExp^#(F(), ITE(i2, t2, e2)) -> c_67() 54.04/15.47 , eqExp^#(F(), Eq(eq21, eq22)) -> c_68() 54.04/15.47 , eqExp^#(F(), Error(e21, e22)) -> c_69() 54.04/15.47 , eqExp^#(F(), Bsf(op2, b21, b22)) -> c_70() 54.04/15.47 , eqExp^#(F(), T()) -> c_71() 54.04/15.47 , eqExp^#(F(), F()) -> c_72() 54.04/15.47 , apply^#(op, v1, v2) -> 54.04/15.47 c_73(apply[Ite][True][Ite]^#(eqExp(v1, v2), op, v1, v2), 54.04/15.47 eqExp^#(v1, v2)) 54.04/15.47 , getVar^#(Var(int)) -> c_74() 54.04/15.47 , getBsfSecondTerm^#(Bsf(op, t1, t2)) -> c_75() 54.04/15.47 , eeval^#(Fun(fn1, fe1), ns, vs, p) -> c_76() 54.04/15.47 , eeval^#(Var(int), ns, vs, p) -> c_77(lookvar^#(int, ns, vs)) 54.04/15.47 , eeval^#(ITE(i1, t1, e1), ns, vs, p) -> c_78() 54.04/15.47 , eeval^#(Eq(eq11, eq12), ns, vs, p) -> c_79() 54.04/15.47 , eeval^#(Error(e11, e12), ns, vs, p) -> c_80() 54.04/15.47 , eeval^#(Bsf(op1, b11, b12), ns, vs, p) -> c_81() 54.04/15.47 , eeval^#(T(), ns, vs, p) -> c_82() 54.04/15.47 , eeval^#(F(), ns, vs, p) -> c_83() 54.04/15.47 , checkConstrExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_84() 54.04/15.47 , checkConstrExp^#(Fun(fn1, fe1), Var(v2)) -> c_85() 54.04/15.47 , checkConstrExp^#(Fun(fn1, fe1), ITE(i2, t2, e2)) -> c_86() 54.04/15.47 , checkConstrExp^#(Fun(fn1, fe1), Eq(eq21, eq22)) -> c_87() 54.04/15.47 , checkConstrExp^#(Fun(fn1, fe1), Error(e21, e22)) -> c_88() 54.04/15.47 , checkConstrExp^#(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> c_89() 54.04/15.47 , checkConstrExp^#(Fun(fn1, fe1), T()) -> c_90() 54.04/15.47 , checkConstrExp^#(Fun(fn1, fe1), F()) -> c_91() 54.04/15.47 , checkConstrExp^#(Var(v1), Fun(fn2, fe2)) -> c_92() 54.04/15.47 , checkConstrExp^#(Var(v1), Var(v2)) -> c_93() 54.04/15.47 , checkConstrExp^#(Var(v1), ITE(i2, t2, e2)) -> c_94() 54.04/15.47 , checkConstrExp^#(Var(v1), Eq(eq21, eq22)) -> c_95() 54.04/15.47 , checkConstrExp^#(Var(v1), Error(e21, e22)) -> c_96() 54.04/15.47 , checkConstrExp^#(Var(v1), Bsf(op2, b21, b22)) -> c_97() 54.04/15.47 , checkConstrExp^#(Var(v1), T()) -> c_98() 54.04/15.47 , checkConstrExp^#(Var(v1), F()) -> c_99() 54.04/15.47 , checkConstrExp^#(ITE(i1, t1, e1), Fun(fn2, fe2)) -> c_100() 54.04/15.47 , checkConstrExp^#(ITE(i1, t1, e1), Var(v2)) -> c_101() 54.04/15.47 , checkConstrExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> c_102() 54.04/15.47 , checkConstrExp^#(ITE(i1, t1, e1), Eq(eq21, eq22)) -> c_103() 54.04/15.47 , checkConstrExp^#(ITE(i1, t1, e1), Error(e21, e22)) -> c_104() 54.04/15.47 , checkConstrExp^#(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> c_105() 54.04/15.47 , checkConstrExp^#(ITE(i1, t1, e1), T()) -> c_106() 54.04/15.47 , checkConstrExp^#(ITE(i1, t1, e1), F()) -> c_107() 54.04/15.47 , checkConstrExp^#(Eq(eq11, eq12), Fun(fn2, fe2)) -> c_108() 54.04/15.47 , checkConstrExp^#(Eq(eq11, eq12), Var(v2)) -> c_109() 54.04/15.47 , checkConstrExp^#(Eq(eq11, eq12), ITE(i2, t2, e2)) -> c_110() 54.04/15.47 , checkConstrExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> c_111() 54.04/15.47 , checkConstrExp^#(Eq(eq11, eq12), Error(e21, e22)) -> c_112() 54.04/15.47 , checkConstrExp^#(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> c_113() 54.04/15.47 , checkConstrExp^#(Eq(eq11, eq12), T()) -> c_114() 54.04/15.47 , checkConstrExp^#(Eq(eq11, eq12), F()) -> c_115() 54.04/15.47 , checkConstrExp^#(Error(e11, e12), Fun(fn2, fe2)) -> c_116() 54.04/15.47 , checkConstrExp^#(Error(e11, e12), Var(v2)) -> c_117() 54.04/15.47 , checkConstrExp^#(Error(e11, e12), ITE(i2, t2, e2)) -> c_118() 54.04/15.47 , checkConstrExp^#(Error(e11, e12), Eq(eq21, eq22)) -> c_119() 54.04/15.47 , checkConstrExp^#(Error(e11, e12), Error(e21, e22)) -> c_120() 54.04/15.47 , checkConstrExp^#(Error(e11, e12), Bsf(op2, b21, b22)) -> c_121() 54.04/15.47 , checkConstrExp^#(Error(e11, e12), T()) -> c_122() 54.04/15.47 , checkConstrExp^#(Error(e11, e12), F()) -> c_123() 54.04/15.47 , checkConstrExp^#(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> c_124() 54.04/15.47 , checkConstrExp^#(Bsf(op1, b11, b12), Var(v2)) -> c_125() 54.04/15.47 , checkConstrExp^#(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> c_126() 54.04/15.47 , checkConstrExp^#(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> c_127() 54.04/15.47 , checkConstrExp^#(Bsf(op1, b11, b12), Error(e21, e22)) -> c_128() 54.04/15.47 , checkConstrExp^#(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> 54.04/15.47 c_129() 54.04/15.47 , checkConstrExp^#(Bsf(op1, b11, b12), T()) -> c_130() 54.04/15.48 , checkConstrExp^#(Bsf(op1, b11, b12), F()) -> c_131() 54.04/15.48 , checkConstrExp^#(T(), Fun(fn2, fe2)) -> c_132() 54.04/15.48 , checkConstrExp^#(T(), Var(v2)) -> c_133() 54.04/15.48 , checkConstrExp^#(T(), ITE(i2, t2, e2)) -> c_134() 54.04/15.48 , checkConstrExp^#(T(), Eq(eq21, eq22)) -> c_135() 54.04/15.48 , checkConstrExp^#(T(), Error(e21, e22)) -> c_136() 54.04/15.48 , checkConstrExp^#(T(), Bsf(op2, b21, b22)) -> c_137() 54.04/15.48 , checkConstrExp^#(T(), T()) -> c_138() 54.04/15.48 , checkConstrExp^#(T(), F()) -> c_139() 54.04/15.48 , checkConstrExp^#(F(), Fun(fn2, fe2)) -> c_140() 54.04/15.48 , checkConstrExp^#(F(), Var(v2)) -> c_141() 54.04/15.48 , checkConstrExp^#(F(), ITE(i2, t2, e2)) -> c_142() 54.04/15.48 , checkConstrExp^#(F(), Eq(eq21, eq22)) -> c_143() 54.04/15.48 , checkConstrExp^#(F(), Error(e21, e22)) -> c_144() 54.04/15.48 , checkConstrExp^#(F(), Bsf(op2, b21, b22)) -> c_145() 54.04/15.48 , checkConstrExp^#(F(), T()) -> c_146() 54.04/15.48 , checkConstrExp^#(F(), F()) -> c_147() 54.04/15.48 , getIfTrue^#(ITE(i, t, e)) -> c_148() 54.04/15.48 , getEqSecond^#(Eq(f, s)) -> c_149() 54.04/15.48 , getEqFirst^#(Eq(f, s)) -> c_150() 54.04/15.48 , getBsfOp^#(Bsf(op, t1, t2)) -> c_151() 54.04/15.48 , getBsfFirstTerm^#(Bsf(op, t1, t2)) -> c_152() 54.04/15.48 , getIfGuard^#(ITE(i, t, e)) -> c_153() 54.04/15.48 , eqOps^#(o1, o2) -> c_154() } 54.04/15.48 Weak DPs: 54.04/15.48 { run[Let][Let]^#(p, input, f0, ef) -> c_169(lookname^#(f0, p)) 54.04/15.48 , lookbody[Ite]^#(True(), f, Cons(Fun(n, e), xs)) -> c_155() 54.04/15.48 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.04/15.48 c_156(lookbody^#(f, xs)) 54.04/15.48 , !EQ^#(S(x), S(y)) -> c_161(!EQ^#(x, y)) 54.04/15.48 , !EQ^#(S(x), 0()) -> c_162() 54.04/15.48 , !EQ^#(0(), S(y)) -> c_163() 54.04/15.48 , !EQ^#(0(), 0()) -> c_164() 54.04/15.48 , lookvar[Ite]^#(True(), x', ns, Cons(x, xs)) -> c_157() 54.04/15.48 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.04/15.48 c_158(lookvar^#(x', xs', xs)) 54.04/15.48 , lookname[Ite]^#(True(), f, Cons(Fun(n, e), xs)) -> c_170() 54.04/15.48 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.04/15.48 c_171(lookname^#(f, xs)) 54.04/15.48 , and^#(True(), True()) -> c_165() 54.04/15.48 , and^#(True(), False()) -> c_166() 54.04/15.48 , and^#(False(), True()) -> c_167() 54.04/15.48 , and^#(False(), False()) -> c_168() 54.04/15.48 , apply[Ite][True][Ite]^#(True(), op, v1, v2) -> c_159() 54.04/15.48 , apply[Ite][True][Ite]^#(False(), op, v1, v2) -> c_160() } 54.04/15.48 54.04/15.48 and mark the set of starting terms. 54.04/15.48 54.04/15.48 We are left with following problem, upon which TcT provides the 54.04/15.48 certificate YES(O(1),O(n^1)). 54.04/15.48 54.04/15.48 Strict DPs: 54.04/15.48 { getFuncName^#(Fun(n, e)) -> c_1() 54.04/15.48 , run^#(Cons(Fun(f0, e), xs), input) -> 54.04/15.48 c_2(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.04/15.48 input, 54.04/15.48 f0, 54.04/15.48 lookbody(f0, Cons(Fun(f0, e), xs))), 54.04/15.48 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.04/15.48 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.04/15.48 c_4(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs)), 54.04/15.48 !EQ^#(f, n)) 54.04/15.48 , getIfFalse^#(ITE(i, t, e)) -> c_3() 54.04/15.48 , lookvar^#(x', Cons(x, xs), vs) -> 54.04/15.48 c_5(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs), !EQ^#(x', x)) 54.04/15.48 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.04/15.48 c_6(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs)), 54.04/15.48 !EQ^#(f, n)) 54.04/15.48 , getConst^#(Cst(int)) -> c_7() 54.04/15.48 , getFuncExp^#(Fun(n, e)) -> c_8() 54.04/15.48 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.04/15.48 c_9(and^#(!EQ(fn1, fn2), eqExp(fe1, fe2)), 54.04/15.48 !EQ^#(fn1, fn2), 54.04/15.48 eqExp^#(fe1, fe2)) 54.04/15.48 , eqExp^#(Fun(fn1, fe1), Var(v2)) -> c_10() 54.04/15.48 , eqExp^#(Fun(fn1, fe1), ITE(i2, t2, e2)) -> c_11() 54.04/15.48 , eqExp^#(Fun(fn1, fe1), Eq(eq21, eq22)) -> c_12() 54.04/15.48 , eqExp^#(Fun(fn1, fe1), Error(e21, e22)) -> c_13() 54.04/15.48 , eqExp^#(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> c_14() 54.04/15.48 , eqExp^#(Fun(fn1, fe1), T()) -> c_15() 54.04/15.48 , eqExp^#(Fun(fn1, fe1), F()) -> c_16() 54.04/15.48 , eqExp^#(Var(v1), Fun(fn2, fe2)) -> c_17() 54.04/15.48 , eqExp^#(Var(v1), Var(v2)) -> c_18(!EQ^#(v1, v2)) 54.04/15.48 , eqExp^#(Var(v1), ITE(i2, t2, e2)) -> c_19() 54.04/15.48 , eqExp^#(Var(v1), Eq(eq21, eq22)) -> c_20() 54.04/15.48 , eqExp^#(Var(v1), Error(e21, e22)) -> c_21() 54.04/15.48 , eqExp^#(Var(v1), Bsf(op2, b21, b22)) -> c_22() 54.04/15.48 , eqExp^#(Var(v1), T()) -> c_23() 54.04/15.48 , eqExp^#(Var(v1), F()) -> c_24() 54.04/15.48 , eqExp^#(ITE(i1, t1, e1), Fun(fn2, fe2)) -> c_25() 54.04/15.48 , eqExp^#(ITE(i1, t1, e1), Var(v2)) -> c_26() 54.04/15.48 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.04/15.48 c_27(and^#(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))), 54.04/15.48 eqExp^#(i1, i2), 54.04/15.48 and^#(eqExp(t1, t2), eqExp(e1, e2)), 54.04/15.48 eqExp^#(t1, t2), 54.04/15.48 eqExp^#(e1, e2)) 54.04/15.48 , eqExp^#(ITE(i1, t1, e1), Eq(eq21, eq22)) -> c_28() 54.04/15.48 , eqExp^#(ITE(i1, t1, e1), Error(e21, e22)) -> c_29() 54.04/15.48 , eqExp^#(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> c_30() 54.04/15.48 , eqExp^#(ITE(i1, t1, e1), T()) -> c_31() 54.04/15.48 , eqExp^#(ITE(i1, t1, e1), F()) -> c_32() 54.04/15.48 , eqExp^#(Eq(eq11, eq12), Fun(fn2, fe2)) -> c_33() 54.04/15.48 , eqExp^#(Eq(eq11, eq12), Var(v2)) -> c_34() 54.04/15.48 , eqExp^#(Eq(eq11, eq12), ITE(i2, t2, e2)) -> c_35() 54.04/15.48 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.04/15.48 c_36(and^#(eqExp(eq11, eq21), eqExp(eq12, eq22)), 54.04/15.48 eqExp^#(eq11, eq21), 54.04/15.48 eqExp^#(eq12, eq22)) 54.04/15.48 , eqExp^#(Eq(eq11, eq12), Error(e21, e22)) -> c_37() 54.04/15.48 , eqExp^#(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> c_38() 54.04/15.48 , eqExp^#(Eq(eq11, eq12), T()) -> c_39() 54.04/15.48 , eqExp^#(Eq(eq11, eq12), F()) -> c_40() 54.04/15.48 , eqExp^#(Error(e11, e12), Fun(fn2, fe2)) -> c_41() 54.04/15.48 , eqExp^#(Error(e11, e12), Var(v2)) -> c_42() 54.04/15.48 , eqExp^#(Error(e11, e12), ITE(i2, t2, e2)) -> c_43() 54.04/15.48 , eqExp^#(Error(e11, e12), Eq(eq21, eq22)) -> c_44() 54.04/15.48 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.04/15.48 c_45(and^#(eqExp(e11, e21), eqExp(e12, e22)), 54.04/15.48 eqExp^#(e11, e21), 54.04/15.48 eqExp^#(e12, e22)) 54.04/15.48 , eqExp^#(Error(e11, e12), Bsf(op2, b21, b22)) -> c_46() 54.04/15.48 , eqExp^#(Error(e11, e12), T()) -> c_47() 54.04/15.48 , eqExp^#(Error(e11, e12), F()) -> c_48() 54.04/15.48 , eqExp^#(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> c_49() 54.04/15.48 , eqExp^#(Bsf(op1, b11, b12), Var(v2)) -> c_50() 54.04/15.48 , eqExp^#(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> c_51() 54.04/15.48 , eqExp^#(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> c_52() 54.04/15.48 , eqExp^#(Bsf(op1, b11, b12), Error(e21, e22)) -> c_53() 54.04/15.48 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.04/15.48 c_54(and^#(True(), and(eqExp(b11, b21), eqExp(b12, b22))), 54.04/15.48 and^#(eqExp(b11, b21), eqExp(b12, b22)), 54.04/15.48 eqExp^#(b11, b21), 54.04/15.48 eqExp^#(b12, b22)) 54.04/15.48 , eqExp^#(Bsf(op1, b11, b12), T()) -> c_55() 54.04/15.48 , eqExp^#(Bsf(op1, b11, b12), F()) -> c_56() 54.04/15.48 , eqExp^#(T(), Fun(fn2, fe2)) -> c_57() 54.04/15.48 , eqExp^#(T(), Var(v2)) -> c_58() 54.04/15.48 , eqExp^#(T(), ITE(i2, t2, e2)) -> c_59() 54.04/15.48 , eqExp^#(T(), Eq(eq21, eq22)) -> c_60() 54.04/15.48 , eqExp^#(T(), Error(e21, e22)) -> c_61() 54.04/15.48 , eqExp^#(T(), Bsf(op2, b21, b22)) -> c_62() 54.04/15.48 , eqExp^#(T(), T()) -> c_63() 54.04/15.48 , eqExp^#(T(), F()) -> c_64() 54.04/15.48 , eqExp^#(F(), Fun(fn2, fe2)) -> c_65() 54.04/15.48 , eqExp^#(F(), Var(v2)) -> c_66() 54.04/15.48 , eqExp^#(F(), ITE(i2, t2, e2)) -> c_67() 54.04/15.48 , eqExp^#(F(), Eq(eq21, eq22)) -> c_68() 54.04/15.48 , eqExp^#(F(), Error(e21, e22)) -> c_69() 54.04/15.48 , eqExp^#(F(), Bsf(op2, b21, b22)) -> c_70() 54.04/15.48 , eqExp^#(F(), T()) -> c_71() 54.04/15.48 , eqExp^#(F(), F()) -> c_72() 54.04/15.48 , apply^#(op, v1, v2) -> 54.04/15.48 c_73(apply[Ite][True][Ite]^#(eqExp(v1, v2), op, v1, v2), 54.04/15.48 eqExp^#(v1, v2)) 54.04/15.48 , getVar^#(Var(int)) -> c_74() 54.04/15.48 , getBsfSecondTerm^#(Bsf(op, t1, t2)) -> c_75() 54.04/15.48 , eeval^#(Fun(fn1, fe1), ns, vs, p) -> c_76() 54.04/15.48 , eeval^#(Var(int), ns, vs, p) -> c_77(lookvar^#(int, ns, vs)) 54.04/15.48 , eeval^#(ITE(i1, t1, e1), ns, vs, p) -> c_78() 54.04/15.48 , eeval^#(Eq(eq11, eq12), ns, vs, p) -> c_79() 54.04/15.48 , eeval^#(Error(e11, e12), ns, vs, p) -> c_80() 54.04/15.48 , eeval^#(Bsf(op1, b11, b12), ns, vs, p) -> c_81() 54.04/15.48 , eeval^#(T(), ns, vs, p) -> c_82() 54.04/15.48 , eeval^#(F(), ns, vs, p) -> c_83() 54.04/15.48 , checkConstrExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_84() 54.04/15.48 , checkConstrExp^#(Fun(fn1, fe1), Var(v2)) -> c_85() 54.04/15.48 , checkConstrExp^#(Fun(fn1, fe1), ITE(i2, t2, e2)) -> c_86() 54.04/15.48 , checkConstrExp^#(Fun(fn1, fe1), Eq(eq21, eq22)) -> c_87() 54.04/15.48 , checkConstrExp^#(Fun(fn1, fe1), Error(e21, e22)) -> c_88() 54.04/15.48 , checkConstrExp^#(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> c_89() 54.04/15.48 , checkConstrExp^#(Fun(fn1, fe1), T()) -> c_90() 54.04/15.48 , checkConstrExp^#(Fun(fn1, fe1), F()) -> c_91() 54.04/15.48 , checkConstrExp^#(Var(v1), Fun(fn2, fe2)) -> c_92() 54.04/15.48 , checkConstrExp^#(Var(v1), Var(v2)) -> c_93() 54.04/15.48 , checkConstrExp^#(Var(v1), ITE(i2, t2, e2)) -> c_94() 54.04/15.48 , checkConstrExp^#(Var(v1), Eq(eq21, eq22)) -> c_95() 54.04/15.48 , checkConstrExp^#(Var(v1), Error(e21, e22)) -> c_96() 54.04/15.48 , checkConstrExp^#(Var(v1), Bsf(op2, b21, b22)) -> c_97() 54.04/15.48 , checkConstrExp^#(Var(v1), T()) -> c_98() 54.04/15.48 , checkConstrExp^#(Var(v1), F()) -> c_99() 54.04/15.48 , checkConstrExp^#(ITE(i1, t1, e1), Fun(fn2, fe2)) -> c_100() 54.04/15.48 , checkConstrExp^#(ITE(i1, t1, e1), Var(v2)) -> c_101() 54.04/15.48 , checkConstrExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> c_102() 54.04/15.48 , checkConstrExp^#(ITE(i1, t1, e1), Eq(eq21, eq22)) -> c_103() 54.04/15.48 , checkConstrExp^#(ITE(i1, t1, e1), Error(e21, e22)) -> c_104() 54.04/15.48 , checkConstrExp^#(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> c_105() 54.04/15.48 , checkConstrExp^#(ITE(i1, t1, e1), T()) -> c_106() 54.04/15.48 , checkConstrExp^#(ITE(i1, t1, e1), F()) -> c_107() 54.04/15.48 , checkConstrExp^#(Eq(eq11, eq12), Fun(fn2, fe2)) -> c_108() 54.04/15.48 , checkConstrExp^#(Eq(eq11, eq12), Var(v2)) -> c_109() 54.04/15.48 , checkConstrExp^#(Eq(eq11, eq12), ITE(i2, t2, e2)) -> c_110() 54.04/15.48 , checkConstrExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> c_111() 54.04/15.48 , checkConstrExp^#(Eq(eq11, eq12), Error(e21, e22)) -> c_112() 54.04/15.48 , checkConstrExp^#(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> c_113() 54.04/15.48 , checkConstrExp^#(Eq(eq11, eq12), T()) -> c_114() 54.04/15.48 , checkConstrExp^#(Eq(eq11, eq12), F()) -> c_115() 54.04/15.48 , checkConstrExp^#(Error(e11, e12), Fun(fn2, fe2)) -> c_116() 54.04/15.48 , checkConstrExp^#(Error(e11, e12), Var(v2)) -> c_117() 54.04/15.48 , checkConstrExp^#(Error(e11, e12), ITE(i2, t2, e2)) -> c_118() 54.04/15.48 , checkConstrExp^#(Error(e11, e12), Eq(eq21, eq22)) -> c_119() 54.04/15.48 , checkConstrExp^#(Error(e11, e12), Error(e21, e22)) -> c_120() 54.04/15.48 , checkConstrExp^#(Error(e11, e12), Bsf(op2, b21, b22)) -> c_121() 54.04/15.48 , checkConstrExp^#(Error(e11, e12), T()) -> c_122() 54.04/15.48 , checkConstrExp^#(Error(e11, e12), F()) -> c_123() 54.04/15.48 , checkConstrExp^#(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> c_124() 54.04/15.48 , checkConstrExp^#(Bsf(op1, b11, b12), Var(v2)) -> c_125() 54.04/15.48 , checkConstrExp^#(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> c_126() 54.04/15.48 , checkConstrExp^#(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> c_127() 54.04/15.48 , checkConstrExp^#(Bsf(op1, b11, b12), Error(e21, e22)) -> c_128() 54.04/15.48 , checkConstrExp^#(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> 54.04/15.48 c_129() 54.04/15.48 , checkConstrExp^#(Bsf(op1, b11, b12), T()) -> c_130() 54.04/15.48 , checkConstrExp^#(Bsf(op1, b11, b12), F()) -> c_131() 54.04/15.48 , checkConstrExp^#(T(), Fun(fn2, fe2)) -> c_132() 54.04/15.48 , checkConstrExp^#(T(), Var(v2)) -> c_133() 54.04/15.48 , checkConstrExp^#(T(), ITE(i2, t2, e2)) -> c_134() 54.04/15.48 , checkConstrExp^#(T(), Eq(eq21, eq22)) -> c_135() 54.04/15.48 , checkConstrExp^#(T(), Error(e21, e22)) -> c_136() 54.04/15.48 , checkConstrExp^#(T(), Bsf(op2, b21, b22)) -> c_137() 54.04/15.48 , checkConstrExp^#(T(), T()) -> c_138() 54.04/15.48 , checkConstrExp^#(T(), F()) -> c_139() 54.04/15.48 , checkConstrExp^#(F(), Fun(fn2, fe2)) -> c_140() 54.04/15.48 , checkConstrExp^#(F(), Var(v2)) -> c_141() 54.04/15.48 , checkConstrExp^#(F(), ITE(i2, t2, e2)) -> c_142() 54.04/15.48 , checkConstrExp^#(F(), Eq(eq21, eq22)) -> c_143() 54.04/15.48 , checkConstrExp^#(F(), Error(e21, e22)) -> c_144() 54.04/15.48 , checkConstrExp^#(F(), Bsf(op2, b21, b22)) -> c_145() 54.04/15.48 , checkConstrExp^#(F(), T()) -> c_146() 54.04/15.48 , checkConstrExp^#(F(), F()) -> c_147() 54.04/15.48 , getIfTrue^#(ITE(i, t, e)) -> c_148() 54.04/15.48 , getEqSecond^#(Eq(f, s)) -> c_149() 54.04/15.48 , getEqFirst^#(Eq(f, s)) -> c_150() 54.04/15.48 , getBsfOp^#(Bsf(op, t1, t2)) -> c_151() 54.04/15.48 , getBsfFirstTerm^#(Bsf(op, t1, t2)) -> c_152() 54.04/15.48 , getIfGuard^#(ITE(i, t, e)) -> c_153() 54.04/15.48 , eqOps^#(o1, o2) -> c_154() } 54.04/15.48 Weak DPs: 54.04/15.48 { run[Let][Let]^#(p, input, f0, ef) -> c_169(lookname^#(f0, p)) 54.04/15.48 , lookbody[Ite]^#(True(), f, Cons(Fun(n, e), xs)) -> c_155() 54.04/15.48 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.04/15.48 c_156(lookbody^#(f, xs)) 54.04/15.48 , !EQ^#(S(x), S(y)) -> c_161(!EQ^#(x, y)) 54.04/15.48 , !EQ^#(S(x), 0()) -> c_162() 54.04/15.48 , !EQ^#(0(), S(y)) -> c_163() 54.04/15.48 , !EQ^#(0(), 0()) -> c_164() 54.04/15.48 , lookvar[Ite]^#(True(), x', ns, Cons(x, xs)) -> c_157() 54.04/15.48 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.04/15.48 c_158(lookvar^#(x', xs', xs)) 54.04/15.48 , lookname[Ite]^#(True(), f, Cons(Fun(n, e), xs)) -> c_170() 54.04/15.48 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.04/15.48 c_171(lookname^#(f, xs)) 54.04/15.48 , and^#(True(), True()) -> c_165() 54.04/15.48 , and^#(True(), False()) -> c_166() 54.04/15.48 , and^#(False(), True()) -> c_167() 54.04/15.48 , and^#(False(), False()) -> c_168() 54.04/15.48 , apply[Ite][True][Ite]^#(True(), op, v1, v2) -> c_159() 54.04/15.48 , apply[Ite][True][Ite]^#(False(), op, v1, v2) -> c_160() } 54.04/15.48 Weak Trs: 54.04/15.48 { getFuncName(Fun(n, e)) -> n 54.04/15.48 , run(Cons(Fun(f0, e), xs), input) -> 54.04/15.48 run[Let][Let](Cons(Fun(f0, e), xs), 54.04/15.48 input, 54.04/15.48 f0, 54.04/15.48 lookbody(f0, Cons(Fun(f0, e), xs))) 54.04/15.48 , getIfFalse(ITE(i, t, e)) -> e 54.04/15.48 , lookbody(f, Cons(Fun(n, e), xs)) -> 54.04/15.48 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.04/15.48 , lookvar(x', Cons(x, xs), vs) -> 54.04/15.48 lookvar[Ite](!EQ(x', x), x', Cons(x, xs), vs) 54.04/15.48 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.04/15.48 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.04/15.48 , lookvar[Ite](True(), x', ns, Cons(x, xs)) -> x 54.04/15.48 , lookvar[Ite](False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.04/15.48 lookvar(x', xs', xs) 54.04/15.48 , lookname(f, Cons(Fun(n, e), xs)) -> 54.04/15.48 lookname[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.04/15.48 , apply[Ite][True][Ite](True(), op, v1, v2) -> T() 54.04/15.48 , apply[Ite][True][Ite](False(), op, v1, v2) -> F() 54.04/15.48 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.04/15.48 , !EQ(S(x), 0()) -> False() 54.04/15.48 , !EQ(0(), S(y)) -> False() 54.04/15.48 , !EQ(0(), 0()) -> True() 54.04/15.48 , getConst(Cst(int)) -> int 54.04/15.48 , getFuncExp(Fun(n, e)) -> e 54.04/15.48 , eqExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.04/15.48 and(!EQ(fn1, fn2), eqExp(fe1, fe2)) 54.04/15.48 , eqExp(Fun(fn1, fe1), Var(v2)) -> False() 54.04/15.48 , eqExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False() 54.04/15.48 , eqExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False() 54.04/15.48 , eqExp(Fun(fn1, fe1), Error(e21, e22)) -> False() 54.04/15.48 , eqExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False() 54.04/15.48 , eqExp(Fun(fn1, fe1), T()) -> False() 54.04/15.48 , eqExp(Fun(fn1, fe1), F()) -> False() 54.04/15.48 , eqExp(Var(v1), Fun(fn2, fe2)) -> False() 54.04/15.48 , eqExp(Var(v1), Var(v2)) -> !EQ(v1, v2) 54.04/15.48 , eqExp(Var(v1), ITE(i2, t2, e2)) -> False() 54.04/15.48 , eqExp(Var(v1), Eq(eq21, eq22)) -> False() 54.04/15.48 , eqExp(Var(v1), Error(e21, e22)) -> False() 54.04/15.48 , eqExp(Var(v1), Bsf(op2, b21, b22)) -> False() 54.04/15.48 , eqExp(Var(v1), T()) -> False() 54.04/15.48 , eqExp(Var(v1), F()) -> False() 54.04/15.48 , eqExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False() 54.04/15.48 , eqExp(ITE(i1, t1, e1), Var(v2)) -> False() 54.04/15.48 , eqExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.04/15.48 and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) 54.04/15.48 , eqExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False() 54.04/15.48 , eqExp(ITE(i1, t1, e1), Error(e21, e22)) -> False() 54.04/15.48 , eqExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False() 54.04/15.48 , eqExp(ITE(i1, t1, e1), T()) -> False() 54.04/15.48 , eqExp(ITE(i1, t1, e1), F()) -> False() 54.04/15.48 , eqExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False() 54.04/15.48 , eqExp(Eq(eq11, eq12), Var(v2)) -> False() 54.04/15.48 , eqExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False() 54.04/15.48 , eqExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.04/15.48 and(eqExp(eq11, eq21), eqExp(eq12, eq22)) 54.04/15.48 , eqExp(Eq(eq11, eq12), Error(e21, e22)) -> False() 54.04/15.48 , eqExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False() 54.04/15.48 , eqExp(Eq(eq11, eq12), T()) -> False() 54.04/15.48 , eqExp(Eq(eq11, eq12), F()) -> False() 54.04/15.48 , eqExp(Error(e11, e12), Fun(fn2, fe2)) -> False() 54.04/15.48 , eqExp(Error(e11, e12), Var(v2)) -> False() 54.04/15.48 , eqExp(Error(e11, e12), ITE(i2, t2, e2)) -> False() 54.04/15.48 , eqExp(Error(e11, e12), Eq(eq21, eq22)) -> False() 54.04/15.48 , eqExp(Error(e11, e12), Error(e21, e22)) -> 54.04/15.48 and(eqExp(e11, e21), eqExp(e12, e22)) 54.04/15.48 , eqExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False() 54.04/15.48 , eqExp(Error(e11, e12), T()) -> False() 54.04/15.48 , eqExp(Error(e11, e12), F()) -> False() 54.04/15.48 , eqExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False() 54.04/15.48 , eqExp(Bsf(op1, b11, b12), Var(v2)) -> False() 54.04/15.48 , eqExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False() 54.04/15.48 , eqExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False() 54.04/15.48 , eqExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False() 54.04/15.48 , eqExp(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.04/15.48 and(True(), and(eqExp(b11, b21), eqExp(b12, b22))) 54.04/15.48 , eqExp(Bsf(op1, b11, b12), T()) -> False() 54.04/15.48 , eqExp(Bsf(op1, b11, b12), F()) -> False() 54.04/15.48 , eqExp(T(), Fun(fn2, fe2)) -> False() 54.04/15.48 , eqExp(T(), Var(v2)) -> False() 54.04/15.48 , eqExp(T(), ITE(i2, t2, e2)) -> False() 54.04/15.48 , eqExp(T(), Eq(eq21, eq22)) -> False() 54.04/15.48 , eqExp(T(), Error(e21, e22)) -> False() 54.04/15.48 , eqExp(T(), Bsf(op2, b21, b22)) -> False() 54.04/15.48 , eqExp(T(), T()) -> True() 54.04/15.48 , eqExp(T(), F()) -> False() 54.04/15.48 , eqExp(F(), Fun(fn2, fe2)) -> False() 54.04/15.48 , eqExp(F(), Var(v2)) -> False() 54.04/15.48 , eqExp(F(), ITE(i2, t2, e2)) -> False() 54.04/15.48 , eqExp(F(), Eq(eq21, eq22)) -> False() 54.04/15.48 , eqExp(F(), Error(e21, e22)) -> False() 54.04/15.48 , eqExp(F(), Bsf(op2, b21, b22)) -> False() 54.04/15.48 , eqExp(F(), T()) -> False() 54.04/15.48 , eqExp(F(), F()) -> True() 54.04/15.48 , apply(op, v1, v2) -> 54.04/15.48 apply[Ite][True][Ite](eqExp(v1, v2), op, v1, v2) 54.04/15.48 , getVar(Var(int)) -> int 54.04/15.48 , getBsfSecondTerm(Bsf(op, t1, t2)) -> t2 54.04/15.48 , eeval(Fun(fn1, fe1), ns, vs, p) -> 54.04/15.48 eeval[Ite][False][Ite][False][Ite](False(), 54.04/15.48 Fun(fn1, fe1), 54.04/15.48 ns, 54.04/15.48 vs, 54.04/15.48 p) 54.04/15.48 , eeval(Var(int), ns, vs, p) -> lookvar(int, ns, vs) 54.04/15.48 , eeval(ITE(i1, t1, e1), ns, vs, p) -> 54.04/15.48 eeval[Ite][False][Ite][False][Ite](False(), 54.04/15.48 ITE(i1, t1, e1), 54.04/15.48 ns, 54.04/15.48 vs, 54.04/15.48 p) 54.04/15.48 , eeval(Eq(eq11, eq12), ns, vs, p) -> 54.04/15.48 eeval[Ite][False][Ite][False][Ite](False(), 54.04/15.48 Eq(eq11, eq12), 54.04/15.48 ns, 54.04/15.48 vs, 54.04/15.48 p) 54.04/15.48 , eeval(Error(e11, e12), ns, vs, p) -> 54.04/15.48 eeval[Ite][False][Ite][False][Ite](False(), 54.04/15.48 Error(e11, e12), 54.04/15.48 ns, 54.04/15.48 vs, 54.04/15.48 p) 54.04/15.48 , eeval(Bsf(op1, b11, b12), ns, vs, p) -> 54.04/15.48 eeval[Ite][False][Ite][False][Ite](True(), 54.04/15.48 Bsf(op1, b11, b12), 54.04/15.48 ns, 54.04/15.48 vs, 54.04/15.48 p) 54.04/15.48 , eeval(T(), ns, vs, p) -> T() 54.04/15.48 , eeval(F(), ns, vs, p) -> F() 54.04/15.48 , and(True(), True()) -> True() 54.04/15.48 , and(True(), False()) -> False() 54.04/15.48 , and(False(), True()) -> False() 54.04/15.48 , and(False(), False()) -> False() 54.04/15.48 , checkConstrExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> True() 54.04/15.48 , checkConstrExp(Fun(fn1, fe1), Var(v2)) -> False() 54.04/15.48 , checkConstrExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False() 54.04/15.48 , checkConstrExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False() 54.04/15.48 , checkConstrExp(Fun(fn1, fe1), Error(e21, e22)) -> False() 54.04/15.48 , checkConstrExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False() 54.04/15.48 , checkConstrExp(Fun(fn1, fe1), T()) -> False() 54.04/15.48 , checkConstrExp(Fun(fn1, fe1), F()) -> False() 54.04/15.48 , checkConstrExp(Var(v1), Fun(fn2, fe2)) -> False() 54.04/15.48 , checkConstrExp(Var(v1), Var(v2)) -> True() 54.04/15.48 , checkConstrExp(Var(v1), ITE(i2, t2, e2)) -> False() 54.04/15.48 , checkConstrExp(Var(v1), Eq(eq21, eq22)) -> False() 54.04/15.48 , checkConstrExp(Var(v1), Error(e21, e22)) -> False() 54.04/15.48 , checkConstrExp(Var(v1), Bsf(op2, b21, b22)) -> False() 54.04/15.48 , checkConstrExp(Var(v1), T()) -> False() 54.04/15.48 , checkConstrExp(Var(v1), F()) -> False() 54.04/15.48 , checkConstrExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False() 54.04/15.48 , checkConstrExp(ITE(i1, t1, e1), Var(v2)) -> False() 54.04/15.48 , checkConstrExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> True() 54.04/15.48 , checkConstrExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False() 54.04/15.48 , checkConstrExp(ITE(i1, t1, e1), Error(e21, e22)) -> False() 54.04/15.48 , checkConstrExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False() 54.04/15.48 , checkConstrExp(ITE(i1, t1, e1), T()) -> False() 54.04/15.48 , checkConstrExp(ITE(i1, t1, e1), F()) -> False() 54.04/15.48 , checkConstrExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False() 54.04/15.48 , checkConstrExp(Eq(eq11, eq12), Var(v2)) -> False() 54.04/15.48 , checkConstrExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False() 54.04/15.48 , checkConstrExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> True() 54.04/15.48 , checkConstrExp(Eq(eq11, eq12), Error(e21, e22)) -> False() 54.04/15.48 , checkConstrExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False() 54.04/15.48 , checkConstrExp(Eq(eq11, eq12), T()) -> False() 54.04/15.48 , checkConstrExp(Eq(eq11, eq12), F()) -> False() 54.04/15.48 , checkConstrExp(Error(e11, e12), Fun(fn2, fe2)) -> False() 54.04/15.48 , checkConstrExp(Error(e11, e12), Var(v2)) -> False() 54.04/15.48 , checkConstrExp(Error(e11, e12), ITE(i2, t2, e2)) -> False() 54.04/15.48 , checkConstrExp(Error(e11, e12), Eq(eq21, eq22)) -> False() 54.04/15.48 , checkConstrExp(Error(e11, e12), Error(e21, e22)) -> True() 54.04/15.48 , checkConstrExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False() 54.04/15.48 , checkConstrExp(Error(e11, e12), T()) -> False() 54.04/15.48 , checkConstrExp(Error(e11, e12), F()) -> False() 54.04/15.48 , checkConstrExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False() 54.04/15.48 , checkConstrExp(Bsf(op1, b11, b12), Var(v2)) -> False() 54.04/15.48 , checkConstrExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False() 54.04/15.48 , checkConstrExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False() 54.04/15.48 , checkConstrExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False() 54.04/15.48 , checkConstrExp(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> True() 54.04/15.48 , checkConstrExp(Bsf(op1, b11, b12), T()) -> False() 54.04/15.48 , checkConstrExp(Bsf(op1, b11, b12), F()) -> False() 54.04/15.48 , checkConstrExp(T(), Fun(fn2, fe2)) -> False() 54.04/15.48 , checkConstrExp(T(), Var(v2)) -> False() 54.04/15.48 , checkConstrExp(T(), ITE(i2, t2, e2)) -> False() 54.04/15.48 , checkConstrExp(T(), Eq(eq21, eq22)) -> False() 54.04/15.48 , checkConstrExp(T(), Error(e21, e22)) -> False() 54.04/15.48 , checkConstrExp(T(), Bsf(op2, b21, b22)) -> False() 54.04/15.48 , checkConstrExp(T(), T()) -> True() 54.04/15.48 , checkConstrExp(T(), F()) -> False() 54.04/15.48 , checkConstrExp(F(), Fun(fn2, fe2)) -> False() 54.04/15.48 , checkConstrExp(F(), Var(v2)) -> False() 54.04/15.48 , checkConstrExp(F(), ITE(i2, t2, e2)) -> False() 54.04/15.48 , checkConstrExp(F(), Eq(eq21, eq22)) -> False() 54.04/15.48 , checkConstrExp(F(), Error(e21, e22)) -> False() 54.04/15.48 , checkConstrExp(F(), Bsf(op2, b21, b22)) -> False() 54.04/15.48 , checkConstrExp(F(), T()) -> False() 54.04/15.48 , checkConstrExp(F(), F()) -> True() 54.04/15.48 , getIfTrue(ITE(i, t, e)) -> t 54.04/15.48 , getEqSecond(Eq(f, s)) -> s 54.04/15.48 , getEqFirst(Eq(f, s)) -> f 54.04/15.48 , getBsfOp(Bsf(op, t1, t2)) -> op 54.04/15.48 , getBsfFirstTerm(Bsf(op, t1, t2)) -> t1 54.04/15.48 , run[Let][Let](p, input, f0, ef) -> 54.04/15.48 run[Let][Let][Let](p, input, f0, ef, lookname(f0, p)) 54.04/15.48 , lookname[Ite](True(), f, Cons(Fun(n, e), xs)) -> n 54.04/15.48 , lookname[Ite](False(), f, Cons(x, xs)) -> lookname(f, xs) 54.04/15.48 , getIfGuard(ITE(i, t, e)) -> i 54.04/15.48 , eqOps(o1, o2) -> True() } 54.04/15.48 Obligation: 54.04/15.48 innermost runtime complexity 54.04/15.48 Answer: 54.04/15.48 YES(O(1),O(n^1)) 54.04/15.48 54.04/15.48 We estimate the number of application of 54.04/15.48 {1,4,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,34,35,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,74,75,76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154} 54.04/15.48 by applications of 54.04/15.48 Pre({1,4,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,34,35,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,74,75,76,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154}) 54.04/15.48 = {9,27,36,45,54,73}. Here rules are labeled as follows: 54.04/15.48 54.04/15.48 DPs: 54.04/15.48 { 1: getFuncName^#(Fun(n, e)) -> c_1() 54.04/15.48 , 2: run^#(Cons(Fun(f0, e), xs), input) -> 54.04/15.48 c_2(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.04/15.48 input, 54.04/15.48 f0, 54.04/15.48 lookbody(f0, Cons(Fun(f0, e), xs))), 54.04/15.48 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.04/15.48 , 3: lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.04/15.48 c_4(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs)), 54.04/15.48 !EQ^#(f, n)) 54.04/15.48 , 4: getIfFalse^#(ITE(i, t, e)) -> c_3() 54.04/15.48 , 5: lookvar^#(x', Cons(x, xs), vs) -> 54.04/15.48 c_5(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs), !EQ^#(x', x)) 54.04/15.48 , 6: lookname^#(f, Cons(Fun(n, e), xs)) -> 54.04/15.48 c_6(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs)), 54.04/15.48 !EQ^#(f, n)) 54.04/15.48 , 7: getConst^#(Cst(int)) -> c_7() 54.04/15.48 , 8: getFuncExp^#(Fun(n, e)) -> c_8() 54.04/15.49 , 9: eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.04/15.49 c_9(and^#(!EQ(fn1, fn2), eqExp(fe1, fe2)), 54.04/15.49 !EQ^#(fn1, fn2), 54.04/15.49 eqExp^#(fe1, fe2)) 54.04/15.49 , 10: eqExp^#(Fun(fn1, fe1), Var(v2)) -> c_10() 54.04/15.49 , 11: eqExp^#(Fun(fn1, fe1), ITE(i2, t2, e2)) -> c_11() 54.04/15.49 , 12: eqExp^#(Fun(fn1, fe1), Eq(eq21, eq22)) -> c_12() 54.04/15.49 , 13: eqExp^#(Fun(fn1, fe1), Error(e21, e22)) -> c_13() 54.04/15.49 , 14: eqExp^#(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> c_14() 54.04/15.49 , 15: eqExp^#(Fun(fn1, fe1), T()) -> c_15() 54.04/15.49 , 16: eqExp^#(Fun(fn1, fe1), F()) -> c_16() 54.04/15.49 , 17: eqExp^#(Var(v1), Fun(fn2, fe2)) -> c_17() 54.04/15.49 , 18: eqExp^#(Var(v1), Var(v2)) -> c_18(!EQ^#(v1, v2)) 54.04/15.49 , 19: eqExp^#(Var(v1), ITE(i2, t2, e2)) -> c_19() 54.04/15.49 , 20: eqExp^#(Var(v1), Eq(eq21, eq22)) -> c_20() 54.04/15.49 , 21: eqExp^#(Var(v1), Error(e21, e22)) -> c_21() 54.04/15.49 , 22: eqExp^#(Var(v1), Bsf(op2, b21, b22)) -> c_22() 54.04/15.49 , 23: eqExp^#(Var(v1), T()) -> c_23() 54.04/15.49 , 24: eqExp^#(Var(v1), F()) -> c_24() 54.04/15.49 , 25: eqExp^#(ITE(i1, t1, e1), Fun(fn2, fe2)) -> c_25() 54.04/15.49 , 26: eqExp^#(ITE(i1, t1, e1), Var(v2)) -> c_26() 54.04/15.49 , 27: eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.04/15.49 c_27(and^#(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))), 54.04/15.49 eqExp^#(i1, i2), 54.04/15.49 and^#(eqExp(t1, t2), eqExp(e1, e2)), 54.04/15.49 eqExp^#(t1, t2), 54.04/15.49 eqExp^#(e1, e2)) 54.04/15.49 , 28: eqExp^#(ITE(i1, t1, e1), Eq(eq21, eq22)) -> c_28() 54.04/15.49 , 29: eqExp^#(ITE(i1, t1, e1), Error(e21, e22)) -> c_29() 54.04/15.49 , 30: eqExp^#(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> c_30() 54.04/15.49 , 31: eqExp^#(ITE(i1, t1, e1), T()) -> c_31() 54.04/15.49 , 32: eqExp^#(ITE(i1, t1, e1), F()) -> c_32() 54.04/15.49 , 33: eqExp^#(Eq(eq11, eq12), Fun(fn2, fe2)) -> c_33() 54.04/15.49 , 34: eqExp^#(Eq(eq11, eq12), Var(v2)) -> c_34() 54.04/15.49 , 35: eqExp^#(Eq(eq11, eq12), ITE(i2, t2, e2)) -> c_35() 54.04/15.49 , 36: eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.04/15.49 c_36(and^#(eqExp(eq11, eq21), eqExp(eq12, eq22)), 54.04/15.49 eqExp^#(eq11, eq21), 54.04/15.49 eqExp^#(eq12, eq22)) 54.04/15.49 , 37: eqExp^#(Eq(eq11, eq12), Error(e21, e22)) -> c_37() 54.04/15.49 , 38: eqExp^#(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> c_38() 54.04/15.49 , 39: eqExp^#(Eq(eq11, eq12), T()) -> c_39() 54.04/15.49 , 40: eqExp^#(Eq(eq11, eq12), F()) -> c_40() 54.04/15.49 , 41: eqExp^#(Error(e11, e12), Fun(fn2, fe2)) -> c_41() 54.04/15.49 , 42: eqExp^#(Error(e11, e12), Var(v2)) -> c_42() 54.04/15.49 , 43: eqExp^#(Error(e11, e12), ITE(i2, t2, e2)) -> c_43() 54.04/15.49 , 44: eqExp^#(Error(e11, e12), Eq(eq21, eq22)) -> c_44() 54.04/15.49 , 45: eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.04/15.49 c_45(and^#(eqExp(e11, e21), eqExp(e12, e22)), 54.04/15.49 eqExp^#(e11, e21), 54.04/15.49 eqExp^#(e12, e22)) 54.04/15.49 , 46: eqExp^#(Error(e11, e12), Bsf(op2, b21, b22)) -> c_46() 54.04/15.49 , 47: eqExp^#(Error(e11, e12), T()) -> c_47() 54.04/15.49 , 48: eqExp^#(Error(e11, e12), F()) -> c_48() 54.04/15.49 , 49: eqExp^#(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> c_49() 54.04/15.49 , 50: eqExp^#(Bsf(op1, b11, b12), Var(v2)) -> c_50() 54.04/15.49 , 51: eqExp^#(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> c_51() 54.04/15.49 , 52: eqExp^#(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> c_52() 54.04/15.49 , 53: eqExp^#(Bsf(op1, b11, b12), Error(e21, e22)) -> c_53() 54.04/15.49 , 54: eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.04/15.49 c_54(and^#(True(), and(eqExp(b11, b21), eqExp(b12, b22))), 54.04/15.49 and^#(eqExp(b11, b21), eqExp(b12, b22)), 54.04/15.49 eqExp^#(b11, b21), 54.04/15.49 eqExp^#(b12, b22)) 54.04/15.49 , 55: eqExp^#(Bsf(op1, b11, b12), T()) -> c_55() 54.04/15.49 , 56: eqExp^#(Bsf(op1, b11, b12), F()) -> c_56() 54.04/15.49 , 57: eqExp^#(T(), Fun(fn2, fe2)) -> c_57() 54.04/15.49 , 58: eqExp^#(T(), Var(v2)) -> c_58() 54.04/15.49 , 59: eqExp^#(T(), ITE(i2, t2, e2)) -> c_59() 54.04/15.49 , 60: eqExp^#(T(), Eq(eq21, eq22)) -> c_60() 54.04/15.49 , 61: eqExp^#(T(), Error(e21, e22)) -> c_61() 54.04/15.49 , 62: eqExp^#(T(), Bsf(op2, b21, b22)) -> c_62() 54.04/15.49 , 63: eqExp^#(T(), T()) -> c_63() 54.04/15.49 , 64: eqExp^#(T(), F()) -> c_64() 54.04/15.49 , 65: eqExp^#(F(), Fun(fn2, fe2)) -> c_65() 54.04/15.49 , 66: eqExp^#(F(), Var(v2)) -> c_66() 54.04/15.49 , 67: eqExp^#(F(), ITE(i2, t2, e2)) -> c_67() 54.04/15.49 , 68: eqExp^#(F(), Eq(eq21, eq22)) -> c_68() 54.04/15.49 , 69: eqExp^#(F(), Error(e21, e22)) -> c_69() 54.04/15.49 , 70: eqExp^#(F(), Bsf(op2, b21, b22)) -> c_70() 54.04/15.49 , 71: eqExp^#(F(), T()) -> c_71() 54.04/15.49 , 72: eqExp^#(F(), F()) -> c_72() 54.04/15.49 , 73: apply^#(op, v1, v2) -> 54.04/15.49 c_73(apply[Ite][True][Ite]^#(eqExp(v1, v2), op, v1, v2), 54.04/15.49 eqExp^#(v1, v2)) 54.04/15.49 , 74: getVar^#(Var(int)) -> c_74() 54.04/15.49 , 75: getBsfSecondTerm^#(Bsf(op, t1, t2)) -> c_75() 54.04/15.49 , 76: eeval^#(Fun(fn1, fe1), ns, vs, p) -> c_76() 54.04/15.49 , 77: eeval^#(Var(int), ns, vs, p) -> c_77(lookvar^#(int, ns, vs)) 54.04/15.49 , 78: eeval^#(ITE(i1, t1, e1), ns, vs, p) -> c_78() 54.04/15.49 , 79: eeval^#(Eq(eq11, eq12), ns, vs, p) -> c_79() 54.04/15.49 , 80: eeval^#(Error(e11, e12), ns, vs, p) -> c_80() 54.04/15.49 , 81: eeval^#(Bsf(op1, b11, b12), ns, vs, p) -> c_81() 54.04/15.49 , 82: eeval^#(T(), ns, vs, p) -> c_82() 54.04/15.49 , 83: eeval^#(F(), ns, vs, p) -> c_83() 54.04/15.49 , 84: checkConstrExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_84() 54.04/15.49 , 85: checkConstrExp^#(Fun(fn1, fe1), Var(v2)) -> c_85() 54.04/15.49 , 86: checkConstrExp^#(Fun(fn1, fe1), ITE(i2, t2, e2)) -> c_86() 54.04/15.49 , 87: checkConstrExp^#(Fun(fn1, fe1), Eq(eq21, eq22)) -> c_87() 54.04/15.49 , 88: checkConstrExp^#(Fun(fn1, fe1), Error(e21, e22)) -> c_88() 54.04/15.49 , 89: checkConstrExp^#(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> c_89() 54.04/15.49 , 90: checkConstrExp^#(Fun(fn1, fe1), T()) -> c_90() 54.04/15.49 , 91: checkConstrExp^#(Fun(fn1, fe1), F()) -> c_91() 54.04/15.49 , 92: checkConstrExp^#(Var(v1), Fun(fn2, fe2)) -> c_92() 54.04/15.49 , 93: checkConstrExp^#(Var(v1), Var(v2)) -> c_93() 54.04/15.49 , 94: checkConstrExp^#(Var(v1), ITE(i2, t2, e2)) -> c_94() 54.04/15.49 , 95: checkConstrExp^#(Var(v1), Eq(eq21, eq22)) -> c_95() 54.04/15.49 , 96: checkConstrExp^#(Var(v1), Error(e21, e22)) -> c_96() 54.04/15.49 , 97: checkConstrExp^#(Var(v1), Bsf(op2, b21, b22)) -> c_97() 54.04/15.49 , 98: checkConstrExp^#(Var(v1), T()) -> c_98() 54.04/15.49 , 99: checkConstrExp^#(Var(v1), F()) -> c_99() 54.04/15.49 , 100: checkConstrExp^#(ITE(i1, t1, e1), Fun(fn2, fe2)) -> c_100() 54.04/15.49 , 101: checkConstrExp^#(ITE(i1, t1, e1), Var(v2)) -> c_101() 54.04/15.49 , 102: checkConstrExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.04/15.49 c_102() 54.04/15.49 , 103: checkConstrExp^#(ITE(i1, t1, e1), Eq(eq21, eq22)) -> c_103() 54.04/15.49 , 104: checkConstrExp^#(ITE(i1, t1, e1), Error(e21, e22)) -> 54.04/15.49 c_104() 54.04/15.49 , 105: checkConstrExp^#(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> 54.04/15.49 c_105() 54.04/15.49 , 106: checkConstrExp^#(ITE(i1, t1, e1), T()) -> c_106() 54.04/15.49 , 107: checkConstrExp^#(ITE(i1, t1, e1), F()) -> c_107() 54.04/15.49 , 108: checkConstrExp^#(Eq(eq11, eq12), Fun(fn2, fe2)) -> c_108() 54.04/15.49 , 109: checkConstrExp^#(Eq(eq11, eq12), Var(v2)) -> c_109() 54.04/15.49 , 110: checkConstrExp^#(Eq(eq11, eq12), ITE(i2, t2, e2)) -> c_110() 54.04/15.49 , 111: checkConstrExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> c_111() 54.04/15.49 , 112: checkConstrExp^#(Eq(eq11, eq12), Error(e21, e22)) -> c_112() 54.04/15.49 , 113: checkConstrExp^#(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> 54.04/15.49 c_113() 54.04/15.49 , 114: checkConstrExp^#(Eq(eq11, eq12), T()) -> c_114() 54.04/15.49 , 115: checkConstrExp^#(Eq(eq11, eq12), F()) -> c_115() 54.04/15.49 , 116: checkConstrExp^#(Error(e11, e12), Fun(fn2, fe2)) -> c_116() 54.04/15.49 , 117: checkConstrExp^#(Error(e11, e12), Var(v2)) -> c_117() 54.04/15.49 , 118: checkConstrExp^#(Error(e11, e12), ITE(i2, t2, e2)) -> 54.04/15.49 c_118() 54.04/15.49 , 119: checkConstrExp^#(Error(e11, e12), Eq(eq21, eq22)) -> c_119() 54.04/15.49 , 120: checkConstrExp^#(Error(e11, e12), Error(e21, e22)) -> 54.04/15.49 c_120() 54.04/15.49 , 121: checkConstrExp^#(Error(e11, e12), Bsf(op2, b21, b22)) -> 54.04/15.49 c_121() 54.04/15.49 , 122: checkConstrExp^#(Error(e11, e12), T()) -> c_122() 54.04/15.49 , 123: checkConstrExp^#(Error(e11, e12), F()) -> c_123() 54.04/15.49 , 124: checkConstrExp^#(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> 54.04/15.49 c_124() 54.04/15.49 , 125: checkConstrExp^#(Bsf(op1, b11, b12), Var(v2)) -> c_125() 54.04/15.49 , 126: checkConstrExp^#(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> 54.04/15.49 c_126() 54.04/15.49 , 127: checkConstrExp^#(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> 54.04/15.49 c_127() 54.04/15.49 , 128: checkConstrExp^#(Bsf(op1, b11, b12), Error(e21, e22)) -> 54.04/15.49 c_128() 54.04/15.49 , 129: checkConstrExp^#(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> 54.04/15.49 c_129() 54.04/15.49 , 130: checkConstrExp^#(Bsf(op1, b11, b12), T()) -> c_130() 54.04/15.49 , 131: checkConstrExp^#(Bsf(op1, b11, b12), F()) -> c_131() 54.04/15.49 , 132: checkConstrExp^#(T(), Fun(fn2, fe2)) -> c_132() 54.04/15.49 , 133: checkConstrExp^#(T(), Var(v2)) -> c_133() 54.04/15.49 , 134: checkConstrExp^#(T(), ITE(i2, t2, e2)) -> c_134() 54.04/15.49 , 135: checkConstrExp^#(T(), Eq(eq21, eq22)) -> c_135() 54.04/15.49 , 136: checkConstrExp^#(T(), Error(e21, e22)) -> c_136() 54.04/15.49 , 137: checkConstrExp^#(T(), Bsf(op2, b21, b22)) -> c_137() 54.04/15.49 , 138: checkConstrExp^#(T(), T()) -> c_138() 54.04/15.49 , 139: checkConstrExp^#(T(), F()) -> c_139() 54.04/15.49 , 140: checkConstrExp^#(F(), Fun(fn2, fe2)) -> c_140() 54.04/15.49 , 141: checkConstrExp^#(F(), Var(v2)) -> c_141() 54.04/15.49 , 142: checkConstrExp^#(F(), ITE(i2, t2, e2)) -> c_142() 54.04/15.49 , 143: checkConstrExp^#(F(), Eq(eq21, eq22)) -> c_143() 54.04/15.49 , 144: checkConstrExp^#(F(), Error(e21, e22)) -> c_144() 54.04/15.49 , 145: checkConstrExp^#(F(), Bsf(op2, b21, b22)) -> c_145() 54.04/15.49 , 146: checkConstrExp^#(F(), T()) -> c_146() 54.04/15.49 , 147: checkConstrExp^#(F(), F()) -> c_147() 54.04/15.49 , 148: getIfTrue^#(ITE(i, t, e)) -> c_148() 54.04/15.49 , 149: getEqSecond^#(Eq(f, s)) -> c_149() 54.04/15.49 , 150: getEqFirst^#(Eq(f, s)) -> c_150() 54.04/15.49 , 151: getBsfOp^#(Bsf(op, t1, t2)) -> c_151() 54.04/15.49 , 152: getBsfFirstTerm^#(Bsf(op, t1, t2)) -> c_152() 54.04/15.49 , 153: getIfGuard^#(ITE(i, t, e)) -> c_153() 54.04/15.49 , 154: eqOps^#(o1, o2) -> c_154() 54.04/15.49 , 155: run[Let][Let]^#(p, input, f0, ef) -> 54.04/15.49 c_169(lookname^#(f0, p)) 54.04/15.49 , 156: lookbody[Ite]^#(True(), f, Cons(Fun(n, e), xs)) -> c_155() 54.04/15.49 , 157: lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.04/15.49 c_156(lookbody^#(f, xs)) 54.04/15.49 , 158: !EQ^#(S(x), S(y)) -> c_161(!EQ^#(x, y)) 54.04/15.49 , 159: !EQ^#(S(x), 0()) -> c_162() 54.04/15.49 , 160: !EQ^#(0(), S(y)) -> c_163() 54.04/15.49 , 161: !EQ^#(0(), 0()) -> c_164() 54.04/15.49 , 162: lookvar[Ite]^#(True(), x', ns, Cons(x, xs)) -> c_157() 54.04/15.49 , 163: lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.04/15.49 c_158(lookvar^#(x', xs', xs)) 54.04/15.49 , 164: lookname[Ite]^#(True(), f, Cons(Fun(n, e), xs)) -> c_170() 54.04/15.49 , 165: lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.04/15.49 c_171(lookname^#(f, xs)) 54.04/15.49 , 166: and^#(True(), True()) -> c_165() 54.04/15.49 , 167: and^#(True(), False()) -> c_166() 54.04/15.49 , 168: and^#(False(), True()) -> c_167() 54.04/15.49 , 169: and^#(False(), False()) -> c_168() 54.04/15.49 , 170: apply[Ite][True][Ite]^#(True(), op, v1, v2) -> c_159() 54.04/15.49 , 171: apply[Ite][True][Ite]^#(False(), op, v1, v2) -> c_160() } 54.04/15.49 54.04/15.49 We are left with following problem, upon which TcT provides the 54.04/15.49 certificate YES(O(1),O(n^1)). 54.04/15.49 54.04/15.49 Strict DPs: 54.04/15.49 { run^#(Cons(Fun(f0, e), xs), input) -> 54.04/15.49 c_2(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.04/15.49 input, 54.04/15.49 f0, 54.04/15.49 lookbody(f0, Cons(Fun(f0, e), xs))), 54.04/15.49 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.04/15.49 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.04/15.49 c_4(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs)), 54.04/15.49 !EQ^#(f, n)) 54.04/15.49 , lookvar^#(x', Cons(x, xs), vs) -> 54.04/15.49 c_5(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs), !EQ^#(x', x)) 54.04/15.49 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.04/15.49 c_6(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs)), 54.04/15.49 !EQ^#(f, n)) 54.04/15.49 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.04/15.49 c_9(and^#(!EQ(fn1, fn2), eqExp(fe1, fe2)), 54.04/15.49 !EQ^#(fn1, fn2), 54.04/15.49 eqExp^#(fe1, fe2)) 54.04/15.49 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.04/15.49 c_27(and^#(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))), 54.04/15.49 eqExp^#(i1, i2), 54.04/15.49 and^#(eqExp(t1, t2), eqExp(e1, e2)), 54.04/15.49 eqExp^#(t1, t2), 54.04/15.49 eqExp^#(e1, e2)) 54.04/15.49 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.04/15.49 c_36(and^#(eqExp(eq11, eq21), eqExp(eq12, eq22)), 54.04/15.49 eqExp^#(eq11, eq21), 54.04/15.49 eqExp^#(eq12, eq22)) 54.04/15.49 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.04/15.49 c_45(and^#(eqExp(e11, e21), eqExp(e12, e22)), 54.04/15.49 eqExp^#(e11, e21), 54.04/15.49 eqExp^#(e12, e22)) 54.04/15.49 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.04/15.49 c_54(and^#(True(), and(eqExp(b11, b21), eqExp(b12, b22))), 54.04/15.49 and^#(eqExp(b11, b21), eqExp(b12, b22)), 54.04/15.49 eqExp^#(b11, b21), 54.04/15.49 eqExp^#(b12, b22)) 54.04/15.49 , apply^#(op, v1, v2) -> 54.04/15.49 c_73(apply[Ite][True][Ite]^#(eqExp(v1, v2), op, v1, v2), 54.04/15.49 eqExp^#(v1, v2)) 54.04/15.49 , eeval^#(Var(int), ns, vs, p) -> c_77(lookvar^#(int, ns, vs)) } 54.04/15.49 Weak DPs: 54.04/15.49 { getFuncName^#(Fun(n, e)) -> c_1() 54.04/15.49 , run[Let][Let]^#(p, input, f0, ef) -> c_169(lookname^#(f0, p)) 54.04/15.49 , getIfFalse^#(ITE(i, t, e)) -> c_3() 54.04/15.49 , lookbody[Ite]^#(True(), f, Cons(Fun(n, e), xs)) -> c_155() 54.04/15.49 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.04/15.49 c_156(lookbody^#(f, xs)) 54.04/15.49 , !EQ^#(S(x), S(y)) -> c_161(!EQ^#(x, y)) 54.04/15.49 , !EQ^#(S(x), 0()) -> c_162() 54.04/15.49 , !EQ^#(0(), S(y)) -> c_163() 54.04/15.49 , !EQ^#(0(), 0()) -> c_164() 54.04/15.49 , lookvar[Ite]^#(True(), x', ns, Cons(x, xs)) -> c_157() 54.04/15.49 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.04/15.49 c_158(lookvar^#(x', xs', xs)) 54.04/15.49 , lookname[Ite]^#(True(), f, Cons(Fun(n, e), xs)) -> c_170() 54.04/15.49 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.04/15.49 c_171(lookname^#(f, xs)) 54.04/15.49 , getConst^#(Cst(int)) -> c_7() 54.04/15.49 , getFuncExp^#(Fun(n, e)) -> c_8() 54.04/15.49 , eqExp^#(Fun(fn1, fe1), Var(v2)) -> c_10() 54.04/15.49 , eqExp^#(Fun(fn1, fe1), ITE(i2, t2, e2)) -> c_11() 54.04/15.49 , eqExp^#(Fun(fn1, fe1), Eq(eq21, eq22)) -> c_12() 54.04/15.49 , eqExp^#(Fun(fn1, fe1), Error(e21, e22)) -> c_13() 54.04/15.49 , eqExp^#(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> c_14() 54.04/15.49 , eqExp^#(Fun(fn1, fe1), T()) -> c_15() 54.04/15.49 , eqExp^#(Fun(fn1, fe1), F()) -> c_16() 54.04/15.49 , eqExp^#(Var(v1), Fun(fn2, fe2)) -> c_17() 54.04/15.49 , eqExp^#(Var(v1), Var(v2)) -> c_18(!EQ^#(v1, v2)) 54.04/15.49 , eqExp^#(Var(v1), ITE(i2, t2, e2)) -> c_19() 54.04/15.49 , eqExp^#(Var(v1), Eq(eq21, eq22)) -> c_20() 54.04/15.49 , eqExp^#(Var(v1), Error(e21, e22)) -> c_21() 54.04/15.49 , eqExp^#(Var(v1), Bsf(op2, b21, b22)) -> c_22() 54.04/15.49 , eqExp^#(Var(v1), T()) -> c_23() 54.04/15.49 , eqExp^#(Var(v1), F()) -> c_24() 54.04/15.49 , eqExp^#(ITE(i1, t1, e1), Fun(fn2, fe2)) -> c_25() 54.04/15.49 , eqExp^#(ITE(i1, t1, e1), Var(v2)) -> c_26() 54.04/15.49 , eqExp^#(ITE(i1, t1, e1), Eq(eq21, eq22)) -> c_28() 54.04/15.49 , eqExp^#(ITE(i1, t1, e1), Error(e21, e22)) -> c_29() 54.04/15.49 , eqExp^#(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> c_30() 54.04/15.49 , eqExp^#(ITE(i1, t1, e1), T()) -> c_31() 54.04/15.49 , eqExp^#(ITE(i1, t1, e1), F()) -> c_32() 54.04/15.49 , eqExp^#(Eq(eq11, eq12), Fun(fn2, fe2)) -> c_33() 54.04/15.49 , eqExp^#(Eq(eq11, eq12), Var(v2)) -> c_34() 54.04/15.49 , eqExp^#(Eq(eq11, eq12), ITE(i2, t2, e2)) -> c_35() 54.04/15.49 , eqExp^#(Eq(eq11, eq12), Error(e21, e22)) -> c_37() 54.04/15.49 , eqExp^#(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> c_38() 54.04/15.49 , eqExp^#(Eq(eq11, eq12), T()) -> c_39() 54.04/15.49 , eqExp^#(Eq(eq11, eq12), F()) -> c_40() 54.04/15.49 , eqExp^#(Error(e11, e12), Fun(fn2, fe2)) -> c_41() 54.04/15.49 , eqExp^#(Error(e11, e12), Var(v2)) -> c_42() 54.04/15.49 , eqExp^#(Error(e11, e12), ITE(i2, t2, e2)) -> c_43() 54.04/15.49 , eqExp^#(Error(e11, e12), Eq(eq21, eq22)) -> c_44() 54.04/15.49 , eqExp^#(Error(e11, e12), Bsf(op2, b21, b22)) -> c_46() 54.04/15.49 , eqExp^#(Error(e11, e12), T()) -> c_47() 54.04/15.49 , eqExp^#(Error(e11, e12), F()) -> c_48() 54.04/15.49 , eqExp^#(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> c_49() 54.04/15.49 , eqExp^#(Bsf(op1, b11, b12), Var(v2)) -> c_50() 54.04/15.49 , eqExp^#(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> c_51() 54.04/15.49 , eqExp^#(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> c_52() 54.04/15.49 , eqExp^#(Bsf(op1, b11, b12), Error(e21, e22)) -> c_53() 54.04/15.49 , eqExp^#(Bsf(op1, b11, b12), T()) -> c_55() 54.04/15.49 , eqExp^#(Bsf(op1, b11, b12), F()) -> c_56() 54.04/15.49 , eqExp^#(T(), Fun(fn2, fe2)) -> c_57() 54.04/15.49 , eqExp^#(T(), Var(v2)) -> c_58() 54.04/15.49 , eqExp^#(T(), ITE(i2, t2, e2)) -> c_59() 54.04/15.49 , eqExp^#(T(), Eq(eq21, eq22)) -> c_60() 54.04/15.49 , eqExp^#(T(), Error(e21, e22)) -> c_61() 54.04/15.49 , eqExp^#(T(), Bsf(op2, b21, b22)) -> c_62() 54.04/15.49 , eqExp^#(T(), T()) -> c_63() 54.04/15.49 , eqExp^#(T(), F()) -> c_64() 54.04/15.49 , eqExp^#(F(), Fun(fn2, fe2)) -> c_65() 54.04/15.49 , eqExp^#(F(), Var(v2)) -> c_66() 54.04/15.49 , eqExp^#(F(), ITE(i2, t2, e2)) -> c_67() 54.04/15.49 , eqExp^#(F(), Eq(eq21, eq22)) -> c_68() 54.04/15.49 , eqExp^#(F(), Error(e21, e22)) -> c_69() 54.04/15.49 , eqExp^#(F(), Bsf(op2, b21, b22)) -> c_70() 54.04/15.49 , eqExp^#(F(), T()) -> c_71() 54.04/15.49 , eqExp^#(F(), F()) -> c_72() 54.04/15.49 , and^#(True(), True()) -> c_165() 54.04/15.49 , and^#(True(), False()) -> c_166() 54.04/15.49 , and^#(False(), True()) -> c_167() 54.04/15.49 , and^#(False(), False()) -> c_168() 54.04/15.49 , apply[Ite][True][Ite]^#(True(), op, v1, v2) -> c_159() 54.04/15.49 , apply[Ite][True][Ite]^#(False(), op, v1, v2) -> c_160() 54.04/15.49 , getVar^#(Var(int)) -> c_74() 54.04/15.49 , getBsfSecondTerm^#(Bsf(op, t1, t2)) -> c_75() 54.04/15.49 , eeval^#(Fun(fn1, fe1), ns, vs, p) -> c_76() 54.04/15.49 , eeval^#(ITE(i1, t1, e1), ns, vs, p) -> c_78() 54.04/15.49 , eeval^#(Eq(eq11, eq12), ns, vs, p) -> c_79() 54.04/15.49 , eeval^#(Error(e11, e12), ns, vs, p) -> c_80() 54.04/15.49 , eeval^#(Bsf(op1, b11, b12), ns, vs, p) -> c_81() 54.04/15.49 , eeval^#(T(), ns, vs, p) -> c_82() 54.04/15.49 , eeval^#(F(), ns, vs, p) -> c_83() 54.04/15.49 , checkConstrExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_84() 54.04/15.49 , checkConstrExp^#(Fun(fn1, fe1), Var(v2)) -> c_85() 54.04/15.49 , checkConstrExp^#(Fun(fn1, fe1), ITE(i2, t2, e2)) -> c_86() 54.04/15.49 , checkConstrExp^#(Fun(fn1, fe1), Eq(eq21, eq22)) -> c_87() 54.04/15.49 , checkConstrExp^#(Fun(fn1, fe1), Error(e21, e22)) -> c_88() 54.04/15.49 , checkConstrExp^#(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> c_89() 54.04/15.49 , checkConstrExp^#(Fun(fn1, fe1), T()) -> c_90() 54.04/15.49 , checkConstrExp^#(Fun(fn1, fe1), F()) -> c_91() 54.04/15.49 , checkConstrExp^#(Var(v1), Fun(fn2, fe2)) -> c_92() 54.04/15.49 , checkConstrExp^#(Var(v1), Var(v2)) -> c_93() 54.04/15.49 , checkConstrExp^#(Var(v1), ITE(i2, t2, e2)) -> c_94() 54.04/15.49 , checkConstrExp^#(Var(v1), Eq(eq21, eq22)) -> c_95() 54.04/15.49 , checkConstrExp^#(Var(v1), Error(e21, e22)) -> c_96() 54.04/15.49 , checkConstrExp^#(Var(v1), Bsf(op2, b21, b22)) -> c_97() 54.04/15.49 , checkConstrExp^#(Var(v1), T()) -> c_98() 54.04/15.49 , checkConstrExp^#(Var(v1), F()) -> c_99() 54.04/15.49 , checkConstrExp^#(ITE(i1, t1, e1), Fun(fn2, fe2)) -> c_100() 54.04/15.49 , checkConstrExp^#(ITE(i1, t1, e1), Var(v2)) -> c_101() 54.04/15.49 , checkConstrExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> c_102() 54.04/15.49 , checkConstrExp^#(ITE(i1, t1, e1), Eq(eq21, eq22)) -> c_103() 54.04/15.49 , checkConstrExp^#(ITE(i1, t1, e1), Error(e21, e22)) -> c_104() 54.04/15.49 , checkConstrExp^#(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> c_105() 54.04/15.49 , checkConstrExp^#(ITE(i1, t1, e1), T()) -> c_106() 54.04/15.49 , checkConstrExp^#(ITE(i1, t1, e1), F()) -> c_107() 54.04/15.49 , checkConstrExp^#(Eq(eq11, eq12), Fun(fn2, fe2)) -> c_108() 54.04/15.49 , checkConstrExp^#(Eq(eq11, eq12), Var(v2)) -> c_109() 54.04/15.49 , checkConstrExp^#(Eq(eq11, eq12), ITE(i2, t2, e2)) -> c_110() 54.04/15.49 , checkConstrExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> c_111() 54.04/15.49 , checkConstrExp^#(Eq(eq11, eq12), Error(e21, e22)) -> c_112() 54.04/15.49 , checkConstrExp^#(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> c_113() 54.04/15.49 , checkConstrExp^#(Eq(eq11, eq12), T()) -> c_114() 54.04/15.49 , checkConstrExp^#(Eq(eq11, eq12), F()) -> c_115() 54.04/15.49 , checkConstrExp^#(Error(e11, e12), Fun(fn2, fe2)) -> c_116() 54.04/15.49 , checkConstrExp^#(Error(e11, e12), Var(v2)) -> c_117() 54.04/15.49 , checkConstrExp^#(Error(e11, e12), ITE(i2, t2, e2)) -> c_118() 54.04/15.49 , checkConstrExp^#(Error(e11, e12), Eq(eq21, eq22)) -> c_119() 54.04/15.49 , checkConstrExp^#(Error(e11, e12), Error(e21, e22)) -> c_120() 54.04/15.49 , checkConstrExp^#(Error(e11, e12), Bsf(op2, b21, b22)) -> c_121() 54.04/15.49 , checkConstrExp^#(Error(e11, e12), T()) -> c_122() 54.04/15.49 , checkConstrExp^#(Error(e11, e12), F()) -> c_123() 54.04/15.49 , checkConstrExp^#(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> c_124() 54.04/15.49 , checkConstrExp^#(Bsf(op1, b11, b12), Var(v2)) -> c_125() 54.04/15.49 , checkConstrExp^#(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> c_126() 54.04/15.49 , checkConstrExp^#(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> c_127() 54.04/15.49 , checkConstrExp^#(Bsf(op1, b11, b12), Error(e21, e22)) -> c_128() 54.04/15.49 , checkConstrExp^#(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> 54.04/15.49 c_129() 54.04/15.49 , checkConstrExp^#(Bsf(op1, b11, b12), T()) -> c_130() 54.04/15.49 , checkConstrExp^#(Bsf(op1, b11, b12), F()) -> c_131() 54.04/15.49 , checkConstrExp^#(T(), Fun(fn2, fe2)) -> c_132() 54.04/15.49 , checkConstrExp^#(T(), Var(v2)) -> c_133() 54.04/15.49 , checkConstrExp^#(T(), ITE(i2, t2, e2)) -> c_134() 54.04/15.49 , checkConstrExp^#(T(), Eq(eq21, eq22)) -> c_135() 54.04/15.49 , checkConstrExp^#(T(), Error(e21, e22)) -> c_136() 54.04/15.49 , checkConstrExp^#(T(), Bsf(op2, b21, b22)) -> c_137() 54.04/15.49 , checkConstrExp^#(T(), T()) -> c_138() 54.04/15.49 , checkConstrExp^#(T(), F()) -> c_139() 54.04/15.49 , checkConstrExp^#(F(), Fun(fn2, fe2)) -> c_140() 54.04/15.49 , checkConstrExp^#(F(), Var(v2)) -> c_141() 54.04/15.49 , checkConstrExp^#(F(), ITE(i2, t2, e2)) -> c_142() 54.04/15.49 , checkConstrExp^#(F(), Eq(eq21, eq22)) -> c_143() 54.04/15.49 , checkConstrExp^#(F(), Error(e21, e22)) -> c_144() 54.04/15.49 , checkConstrExp^#(F(), Bsf(op2, b21, b22)) -> c_145() 54.04/15.49 , checkConstrExp^#(F(), T()) -> c_146() 54.04/15.49 , checkConstrExp^#(F(), F()) -> c_147() 54.04/15.49 , getIfTrue^#(ITE(i, t, e)) -> c_148() 54.04/15.49 , getEqSecond^#(Eq(f, s)) -> c_149() 54.04/15.49 , getEqFirst^#(Eq(f, s)) -> c_150() 54.04/15.49 , getBsfOp^#(Bsf(op, t1, t2)) -> c_151() 54.04/15.49 , getBsfFirstTerm^#(Bsf(op, t1, t2)) -> c_152() 54.04/15.49 , getIfGuard^#(ITE(i, t, e)) -> c_153() 54.04/15.49 , eqOps^#(o1, o2) -> c_154() } 54.04/15.49 Weak Trs: 54.04/15.49 { getFuncName(Fun(n, e)) -> n 54.04/15.49 , run(Cons(Fun(f0, e), xs), input) -> 54.04/15.49 run[Let][Let](Cons(Fun(f0, e), xs), 54.04/15.49 input, 54.04/15.49 f0, 54.04/15.49 lookbody(f0, Cons(Fun(f0, e), xs))) 54.04/15.49 , getIfFalse(ITE(i, t, e)) -> e 54.04/15.49 , lookbody(f, Cons(Fun(n, e), xs)) -> 54.04/15.49 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.04/15.49 , lookvar(x', Cons(x, xs), vs) -> 54.04/15.49 lookvar[Ite](!EQ(x', x), x', Cons(x, xs), vs) 54.04/15.49 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.04/15.49 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.04/15.49 , lookvar[Ite](True(), x', ns, Cons(x, xs)) -> x 54.04/15.49 , lookvar[Ite](False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.04/15.49 lookvar(x', xs', xs) 54.04/15.49 , lookname(f, Cons(Fun(n, e), xs)) -> 54.04/15.49 lookname[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.04/15.49 , apply[Ite][True][Ite](True(), op, v1, v2) -> T() 54.04/15.49 , apply[Ite][True][Ite](False(), op, v1, v2) -> F() 54.04/15.49 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.04/15.49 , !EQ(S(x), 0()) -> False() 54.04/15.49 , !EQ(0(), S(y)) -> False() 54.04/15.49 , !EQ(0(), 0()) -> True() 54.04/15.49 , getConst(Cst(int)) -> int 54.04/15.49 , getFuncExp(Fun(n, e)) -> e 54.04/15.49 , eqExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.04/15.49 and(!EQ(fn1, fn2), eqExp(fe1, fe2)) 54.04/15.49 , eqExp(Fun(fn1, fe1), Var(v2)) -> False() 54.04/15.49 , eqExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False() 54.04/15.49 , eqExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False() 54.04/15.49 , eqExp(Fun(fn1, fe1), Error(e21, e22)) -> False() 54.04/15.49 , eqExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False() 54.04/15.49 , eqExp(Fun(fn1, fe1), T()) -> False() 54.04/15.49 , eqExp(Fun(fn1, fe1), F()) -> False() 54.04/15.49 , eqExp(Var(v1), Fun(fn2, fe2)) -> False() 54.04/15.49 , eqExp(Var(v1), Var(v2)) -> !EQ(v1, v2) 54.04/15.49 , eqExp(Var(v1), ITE(i2, t2, e2)) -> False() 54.04/15.49 , eqExp(Var(v1), Eq(eq21, eq22)) -> False() 54.04/15.49 , eqExp(Var(v1), Error(e21, e22)) -> False() 54.04/15.49 , eqExp(Var(v1), Bsf(op2, b21, b22)) -> False() 54.04/15.49 , eqExp(Var(v1), T()) -> False() 54.04/15.49 , eqExp(Var(v1), F()) -> False() 54.04/15.49 , eqExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False() 54.04/15.49 , eqExp(ITE(i1, t1, e1), Var(v2)) -> False() 54.04/15.49 , eqExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.04/15.49 and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) 54.04/15.49 , eqExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False() 54.04/15.49 , eqExp(ITE(i1, t1, e1), Error(e21, e22)) -> False() 54.04/15.49 , eqExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False() 54.04/15.49 , eqExp(ITE(i1, t1, e1), T()) -> False() 54.04/15.49 , eqExp(ITE(i1, t1, e1), F()) -> False() 54.04/15.49 , eqExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False() 54.04/15.49 , eqExp(Eq(eq11, eq12), Var(v2)) -> False() 54.04/15.49 , eqExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False() 54.04/15.49 , eqExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.04/15.49 and(eqExp(eq11, eq21), eqExp(eq12, eq22)) 54.04/15.49 , eqExp(Eq(eq11, eq12), Error(e21, e22)) -> False() 54.04/15.49 , eqExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False() 54.04/15.49 , eqExp(Eq(eq11, eq12), T()) -> False() 54.04/15.49 , eqExp(Eq(eq11, eq12), F()) -> False() 54.04/15.49 , eqExp(Error(e11, e12), Fun(fn2, fe2)) -> False() 54.04/15.49 , eqExp(Error(e11, e12), Var(v2)) -> False() 54.04/15.49 , eqExp(Error(e11, e12), ITE(i2, t2, e2)) -> False() 54.04/15.49 , eqExp(Error(e11, e12), Eq(eq21, eq22)) -> False() 54.04/15.49 , eqExp(Error(e11, e12), Error(e21, e22)) -> 54.04/15.49 and(eqExp(e11, e21), eqExp(e12, e22)) 54.04/15.49 , eqExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False() 54.04/15.49 , eqExp(Error(e11, e12), T()) -> False() 54.04/15.49 , eqExp(Error(e11, e12), F()) -> False() 54.04/15.49 , eqExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False() 54.04/15.49 , eqExp(Bsf(op1, b11, b12), Var(v2)) -> False() 54.04/15.49 , eqExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False() 54.04/15.49 , eqExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False() 54.04/15.49 , eqExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False() 54.04/15.49 , eqExp(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.04/15.49 and(True(), and(eqExp(b11, b21), eqExp(b12, b22))) 54.04/15.49 , eqExp(Bsf(op1, b11, b12), T()) -> False() 54.04/15.49 , eqExp(Bsf(op1, b11, b12), F()) -> False() 54.04/15.49 , eqExp(T(), Fun(fn2, fe2)) -> False() 54.04/15.49 , eqExp(T(), Var(v2)) -> False() 54.04/15.49 , eqExp(T(), ITE(i2, t2, e2)) -> False() 54.04/15.49 , eqExp(T(), Eq(eq21, eq22)) -> False() 54.04/15.49 , eqExp(T(), Error(e21, e22)) -> False() 54.04/15.49 , eqExp(T(), Bsf(op2, b21, b22)) -> False() 54.04/15.49 , eqExp(T(), T()) -> True() 54.04/15.49 , eqExp(T(), F()) -> False() 54.04/15.49 , eqExp(F(), Fun(fn2, fe2)) -> False() 54.04/15.49 , eqExp(F(), Var(v2)) -> False() 54.04/15.49 , eqExp(F(), ITE(i2, t2, e2)) -> False() 54.04/15.49 , eqExp(F(), Eq(eq21, eq22)) -> False() 54.04/15.49 , eqExp(F(), Error(e21, e22)) -> False() 54.04/15.49 , eqExp(F(), Bsf(op2, b21, b22)) -> False() 54.04/15.49 , eqExp(F(), T()) -> False() 54.04/15.49 , eqExp(F(), F()) -> True() 54.04/15.49 , apply(op, v1, v2) -> 54.04/15.49 apply[Ite][True][Ite](eqExp(v1, v2), op, v1, v2) 54.04/15.49 , getVar(Var(int)) -> int 54.04/15.49 , getBsfSecondTerm(Bsf(op, t1, t2)) -> t2 54.04/15.49 , eeval(Fun(fn1, fe1), ns, vs, p) -> 54.04/15.49 eeval[Ite][False][Ite][False][Ite](False(), 54.04/15.49 Fun(fn1, fe1), 54.04/15.49 ns, 54.04/15.49 vs, 54.04/15.49 p) 54.04/15.49 , eeval(Var(int), ns, vs, p) -> lookvar(int, ns, vs) 54.04/15.49 , eeval(ITE(i1, t1, e1), ns, vs, p) -> 54.04/15.49 eeval[Ite][False][Ite][False][Ite](False(), 54.04/15.49 ITE(i1, t1, e1), 54.04/15.49 ns, 54.04/15.49 vs, 54.04/15.49 p) 54.04/15.49 , eeval(Eq(eq11, eq12), ns, vs, p) -> 54.04/15.49 eeval[Ite][False][Ite][False][Ite](False(), 54.04/15.49 Eq(eq11, eq12), 54.04/15.49 ns, 54.04/15.49 vs, 54.04/15.49 p) 54.04/15.49 , eeval(Error(e11, e12), ns, vs, p) -> 54.04/15.49 eeval[Ite][False][Ite][False][Ite](False(), 54.04/15.49 Error(e11, e12), 54.04/15.49 ns, 54.04/15.49 vs, 54.04/15.49 p) 54.04/15.49 , eeval(Bsf(op1, b11, b12), ns, vs, p) -> 54.04/15.49 eeval[Ite][False][Ite][False][Ite](True(), 54.04/15.49 Bsf(op1, b11, b12), 54.04/15.50 ns, 54.04/15.50 vs, 54.04/15.50 p) 54.04/15.50 , eeval(T(), ns, vs, p) -> T() 54.04/15.50 , eeval(F(), ns, vs, p) -> F() 54.04/15.50 , and(True(), True()) -> True() 54.04/15.50 , and(True(), False()) -> False() 54.04/15.50 , and(False(), True()) -> False() 54.04/15.50 , and(False(), False()) -> False() 54.04/15.50 , checkConstrExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> True() 54.04/15.50 , checkConstrExp(Fun(fn1, fe1), Var(v2)) -> False() 54.04/15.50 , checkConstrExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False() 54.04/15.50 , checkConstrExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False() 54.04/15.50 , checkConstrExp(Fun(fn1, fe1), Error(e21, e22)) -> False() 54.04/15.50 , checkConstrExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False() 54.04/15.50 , checkConstrExp(Fun(fn1, fe1), T()) -> False() 54.04/15.50 , checkConstrExp(Fun(fn1, fe1), F()) -> False() 54.04/15.50 , checkConstrExp(Var(v1), Fun(fn2, fe2)) -> False() 54.04/15.50 , checkConstrExp(Var(v1), Var(v2)) -> True() 54.04/15.50 , checkConstrExp(Var(v1), ITE(i2, t2, e2)) -> False() 54.04/15.50 , checkConstrExp(Var(v1), Eq(eq21, eq22)) -> False() 54.04/15.50 , checkConstrExp(Var(v1), Error(e21, e22)) -> False() 54.04/15.50 , checkConstrExp(Var(v1), Bsf(op2, b21, b22)) -> False() 54.04/15.50 , checkConstrExp(Var(v1), T()) -> False() 54.04/15.50 , checkConstrExp(Var(v1), F()) -> False() 54.04/15.50 , checkConstrExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False() 54.04/15.50 , checkConstrExp(ITE(i1, t1, e1), Var(v2)) -> False() 54.04/15.50 , checkConstrExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> True() 54.04/15.50 , checkConstrExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False() 54.04/15.50 , checkConstrExp(ITE(i1, t1, e1), Error(e21, e22)) -> False() 54.04/15.50 , checkConstrExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False() 54.04/15.50 , checkConstrExp(ITE(i1, t1, e1), T()) -> False() 54.04/15.50 , checkConstrExp(ITE(i1, t1, e1), F()) -> False() 54.04/15.50 , checkConstrExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False() 54.04/15.50 , checkConstrExp(Eq(eq11, eq12), Var(v2)) -> False() 54.04/15.50 , checkConstrExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False() 54.04/15.50 , checkConstrExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> True() 54.04/15.50 , checkConstrExp(Eq(eq11, eq12), Error(e21, e22)) -> False() 54.04/15.50 , checkConstrExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False() 54.04/15.50 , checkConstrExp(Eq(eq11, eq12), T()) -> False() 54.04/15.50 , checkConstrExp(Eq(eq11, eq12), F()) -> False() 54.04/15.50 , checkConstrExp(Error(e11, e12), Fun(fn2, fe2)) -> False() 54.04/15.50 , checkConstrExp(Error(e11, e12), Var(v2)) -> False() 54.04/15.50 , checkConstrExp(Error(e11, e12), ITE(i2, t2, e2)) -> False() 54.04/15.50 , checkConstrExp(Error(e11, e12), Eq(eq21, eq22)) -> False() 54.04/15.50 , checkConstrExp(Error(e11, e12), Error(e21, e22)) -> True() 54.04/15.50 , checkConstrExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False() 54.04/15.50 , checkConstrExp(Error(e11, e12), T()) -> False() 54.04/15.50 , checkConstrExp(Error(e11, e12), F()) -> False() 54.04/15.50 , checkConstrExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False() 54.04/15.50 , checkConstrExp(Bsf(op1, b11, b12), Var(v2)) -> False() 54.04/15.50 , checkConstrExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False() 54.04/15.50 , checkConstrExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False() 54.04/15.50 , checkConstrExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False() 54.04/15.50 , checkConstrExp(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> True() 54.04/15.50 , checkConstrExp(Bsf(op1, b11, b12), T()) -> False() 54.04/15.50 , checkConstrExp(Bsf(op1, b11, b12), F()) -> False() 54.04/15.50 , checkConstrExp(T(), Fun(fn2, fe2)) -> False() 54.04/15.50 , checkConstrExp(T(), Var(v2)) -> False() 54.04/15.50 , checkConstrExp(T(), ITE(i2, t2, e2)) -> False() 54.04/15.50 , checkConstrExp(T(), Eq(eq21, eq22)) -> False() 54.04/15.50 , checkConstrExp(T(), Error(e21, e22)) -> False() 54.04/15.50 , checkConstrExp(T(), Bsf(op2, b21, b22)) -> False() 54.04/15.50 , checkConstrExp(T(), T()) -> True() 54.04/15.50 , checkConstrExp(T(), F()) -> False() 54.04/15.50 , checkConstrExp(F(), Fun(fn2, fe2)) -> False() 54.04/15.50 , checkConstrExp(F(), Var(v2)) -> False() 54.04/15.50 , checkConstrExp(F(), ITE(i2, t2, e2)) -> False() 54.04/15.50 , checkConstrExp(F(), Eq(eq21, eq22)) -> False() 54.04/15.50 , checkConstrExp(F(), Error(e21, e22)) -> False() 54.04/15.50 , checkConstrExp(F(), Bsf(op2, b21, b22)) -> False() 54.04/15.50 , checkConstrExp(F(), T()) -> False() 54.04/15.50 , checkConstrExp(F(), F()) -> True() 54.04/15.50 , getIfTrue(ITE(i, t, e)) -> t 54.04/15.50 , getEqSecond(Eq(f, s)) -> s 54.28/15.50 , getEqFirst(Eq(f, s)) -> f 54.28/15.50 , getBsfOp(Bsf(op, t1, t2)) -> op 54.28/15.50 , getBsfFirstTerm(Bsf(op, t1, t2)) -> t1 54.28/15.50 , run[Let][Let](p, input, f0, ef) -> 54.28/15.50 run[Let][Let][Let](p, input, f0, ef, lookname(f0, p)) 54.28/15.50 , lookname[Ite](True(), f, Cons(Fun(n, e), xs)) -> n 54.28/15.50 , lookname[Ite](False(), f, Cons(x, xs)) -> lookname(f, xs) 54.28/15.50 , getIfGuard(ITE(i, t, e)) -> i 54.28/15.50 , eqOps(o1, o2) -> True() } 54.28/15.50 Obligation: 54.28/15.50 innermost runtime complexity 54.28/15.50 Answer: 54.28/15.50 YES(O(1),O(n^1)) 54.28/15.50 54.28/15.50 The following weak DPs constitute a sub-graph of the DG that is 54.28/15.50 closed under successors. The DPs are removed. 54.28/15.50 54.28/15.50 { getFuncName^#(Fun(n, e)) -> c_1() 54.28/15.50 , getIfFalse^#(ITE(i, t, e)) -> c_3() 54.28/15.50 , lookbody[Ite]^#(True(), f, Cons(Fun(n, e), xs)) -> c_155() 54.28/15.50 , !EQ^#(S(x), S(y)) -> c_161(!EQ^#(x, y)) 54.28/15.50 , !EQ^#(S(x), 0()) -> c_162() 54.28/15.50 , !EQ^#(0(), S(y)) -> c_163() 54.28/15.50 , !EQ^#(0(), 0()) -> c_164() 54.28/15.50 , lookvar[Ite]^#(True(), x', ns, Cons(x, xs)) -> c_157() 54.28/15.50 , lookname[Ite]^#(True(), f, Cons(Fun(n, e), xs)) -> c_170() 54.28/15.50 , getConst^#(Cst(int)) -> c_7() 54.28/15.50 , getFuncExp^#(Fun(n, e)) -> c_8() 54.28/15.50 , eqExp^#(Fun(fn1, fe1), Var(v2)) -> c_10() 54.28/15.50 , eqExp^#(Fun(fn1, fe1), ITE(i2, t2, e2)) -> c_11() 54.28/15.50 , eqExp^#(Fun(fn1, fe1), Eq(eq21, eq22)) -> c_12() 54.28/15.50 , eqExp^#(Fun(fn1, fe1), Error(e21, e22)) -> c_13() 54.28/15.50 , eqExp^#(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> c_14() 54.28/15.50 , eqExp^#(Fun(fn1, fe1), T()) -> c_15() 54.28/15.50 , eqExp^#(Fun(fn1, fe1), F()) -> c_16() 54.28/15.50 , eqExp^#(Var(v1), Fun(fn2, fe2)) -> c_17() 54.28/15.50 , eqExp^#(Var(v1), Var(v2)) -> c_18(!EQ^#(v1, v2)) 54.28/15.50 , eqExp^#(Var(v1), ITE(i2, t2, e2)) -> c_19() 54.28/15.50 , eqExp^#(Var(v1), Eq(eq21, eq22)) -> c_20() 54.28/15.50 , eqExp^#(Var(v1), Error(e21, e22)) -> c_21() 54.28/15.50 , eqExp^#(Var(v1), Bsf(op2, b21, b22)) -> c_22() 54.28/15.50 , eqExp^#(Var(v1), T()) -> c_23() 54.28/15.50 , eqExp^#(Var(v1), F()) -> c_24() 54.28/15.50 , eqExp^#(ITE(i1, t1, e1), Fun(fn2, fe2)) -> c_25() 54.28/15.50 , eqExp^#(ITE(i1, t1, e1), Var(v2)) -> c_26() 54.28/15.50 , eqExp^#(ITE(i1, t1, e1), Eq(eq21, eq22)) -> c_28() 54.28/15.50 , eqExp^#(ITE(i1, t1, e1), Error(e21, e22)) -> c_29() 54.28/15.50 , eqExp^#(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> c_30() 54.28/15.50 , eqExp^#(ITE(i1, t1, e1), T()) -> c_31() 54.28/15.50 , eqExp^#(ITE(i1, t1, e1), F()) -> c_32() 54.28/15.50 , eqExp^#(Eq(eq11, eq12), Fun(fn2, fe2)) -> c_33() 54.28/15.50 , eqExp^#(Eq(eq11, eq12), Var(v2)) -> c_34() 54.28/15.50 , eqExp^#(Eq(eq11, eq12), ITE(i2, t2, e2)) -> c_35() 54.28/15.50 , eqExp^#(Eq(eq11, eq12), Error(e21, e22)) -> c_37() 54.28/15.50 , eqExp^#(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> c_38() 54.28/15.50 , eqExp^#(Eq(eq11, eq12), T()) -> c_39() 54.28/15.50 , eqExp^#(Eq(eq11, eq12), F()) -> c_40() 54.28/15.50 , eqExp^#(Error(e11, e12), Fun(fn2, fe2)) -> c_41() 54.28/15.50 , eqExp^#(Error(e11, e12), Var(v2)) -> c_42() 54.28/15.50 , eqExp^#(Error(e11, e12), ITE(i2, t2, e2)) -> c_43() 54.28/15.50 , eqExp^#(Error(e11, e12), Eq(eq21, eq22)) -> c_44() 54.28/15.50 , eqExp^#(Error(e11, e12), Bsf(op2, b21, b22)) -> c_46() 54.28/15.50 , eqExp^#(Error(e11, e12), T()) -> c_47() 54.28/15.50 , eqExp^#(Error(e11, e12), F()) -> c_48() 54.28/15.50 , eqExp^#(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> c_49() 54.28/15.50 , eqExp^#(Bsf(op1, b11, b12), Var(v2)) -> c_50() 54.28/15.50 , eqExp^#(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> c_51() 54.28/15.50 , eqExp^#(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> c_52() 54.28/15.50 , eqExp^#(Bsf(op1, b11, b12), Error(e21, e22)) -> c_53() 54.28/15.50 , eqExp^#(Bsf(op1, b11, b12), T()) -> c_55() 54.28/15.50 , eqExp^#(Bsf(op1, b11, b12), F()) -> c_56() 54.28/15.50 , eqExp^#(T(), Fun(fn2, fe2)) -> c_57() 54.28/15.50 , eqExp^#(T(), Var(v2)) -> c_58() 54.28/15.50 , eqExp^#(T(), ITE(i2, t2, e2)) -> c_59() 54.28/15.50 , eqExp^#(T(), Eq(eq21, eq22)) -> c_60() 54.28/15.50 , eqExp^#(T(), Error(e21, e22)) -> c_61() 54.28/15.50 , eqExp^#(T(), Bsf(op2, b21, b22)) -> c_62() 54.28/15.50 , eqExp^#(T(), T()) -> c_63() 54.28/15.50 , eqExp^#(T(), F()) -> c_64() 54.28/15.50 , eqExp^#(F(), Fun(fn2, fe2)) -> c_65() 54.28/15.50 , eqExp^#(F(), Var(v2)) -> c_66() 54.28/15.50 , eqExp^#(F(), ITE(i2, t2, e2)) -> c_67() 54.28/15.50 , eqExp^#(F(), Eq(eq21, eq22)) -> c_68() 54.28/15.50 , eqExp^#(F(), Error(e21, e22)) -> c_69() 54.28/15.50 , eqExp^#(F(), Bsf(op2, b21, b22)) -> c_70() 54.28/15.50 , eqExp^#(F(), T()) -> c_71() 54.28/15.50 , eqExp^#(F(), F()) -> c_72() 54.28/15.50 , and^#(True(), True()) -> c_165() 54.28/15.50 , and^#(True(), False()) -> c_166() 54.28/15.50 , and^#(False(), True()) -> c_167() 54.28/15.50 , and^#(False(), False()) -> c_168() 54.28/15.50 , apply[Ite][True][Ite]^#(True(), op, v1, v2) -> c_159() 54.28/15.50 , apply[Ite][True][Ite]^#(False(), op, v1, v2) -> c_160() 54.28/15.50 , getVar^#(Var(int)) -> c_74() 54.28/15.50 , getBsfSecondTerm^#(Bsf(op, t1, t2)) -> c_75() 54.28/15.50 , eeval^#(Fun(fn1, fe1), ns, vs, p) -> c_76() 54.28/15.50 , eeval^#(ITE(i1, t1, e1), ns, vs, p) -> c_78() 54.28/15.50 , eeval^#(Eq(eq11, eq12), ns, vs, p) -> c_79() 54.28/15.50 , eeval^#(Error(e11, e12), ns, vs, p) -> c_80() 54.28/15.50 , eeval^#(Bsf(op1, b11, b12), ns, vs, p) -> c_81() 54.28/15.50 , eeval^#(T(), ns, vs, p) -> c_82() 54.28/15.50 , eeval^#(F(), ns, vs, p) -> c_83() 54.28/15.50 , checkConstrExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_84() 54.28/15.50 , checkConstrExp^#(Fun(fn1, fe1), Var(v2)) -> c_85() 54.28/15.50 , checkConstrExp^#(Fun(fn1, fe1), ITE(i2, t2, e2)) -> c_86() 54.28/15.50 , checkConstrExp^#(Fun(fn1, fe1), Eq(eq21, eq22)) -> c_87() 54.28/15.50 , checkConstrExp^#(Fun(fn1, fe1), Error(e21, e22)) -> c_88() 54.28/15.50 , checkConstrExp^#(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> c_89() 54.28/15.50 , checkConstrExp^#(Fun(fn1, fe1), T()) -> c_90() 54.28/15.50 , checkConstrExp^#(Fun(fn1, fe1), F()) -> c_91() 54.28/15.50 , checkConstrExp^#(Var(v1), Fun(fn2, fe2)) -> c_92() 54.28/15.50 , checkConstrExp^#(Var(v1), Var(v2)) -> c_93() 54.28/15.50 , checkConstrExp^#(Var(v1), ITE(i2, t2, e2)) -> c_94() 54.28/15.50 , checkConstrExp^#(Var(v1), Eq(eq21, eq22)) -> c_95() 54.28/15.50 , checkConstrExp^#(Var(v1), Error(e21, e22)) -> c_96() 54.28/15.50 , checkConstrExp^#(Var(v1), Bsf(op2, b21, b22)) -> c_97() 54.28/15.50 , checkConstrExp^#(Var(v1), T()) -> c_98() 54.28/15.50 , checkConstrExp^#(Var(v1), F()) -> c_99() 54.28/15.50 , checkConstrExp^#(ITE(i1, t1, e1), Fun(fn2, fe2)) -> c_100() 54.28/15.50 , checkConstrExp^#(ITE(i1, t1, e1), Var(v2)) -> c_101() 54.28/15.50 , checkConstrExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> c_102() 54.28/15.50 , checkConstrExp^#(ITE(i1, t1, e1), Eq(eq21, eq22)) -> c_103() 54.28/15.50 , checkConstrExp^#(ITE(i1, t1, e1), Error(e21, e22)) -> c_104() 54.28/15.50 , checkConstrExp^#(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> c_105() 54.28/15.50 , checkConstrExp^#(ITE(i1, t1, e1), T()) -> c_106() 54.28/15.50 , checkConstrExp^#(ITE(i1, t1, e1), F()) -> c_107() 54.28/15.50 , checkConstrExp^#(Eq(eq11, eq12), Fun(fn2, fe2)) -> c_108() 54.28/15.50 , checkConstrExp^#(Eq(eq11, eq12), Var(v2)) -> c_109() 54.28/15.50 , checkConstrExp^#(Eq(eq11, eq12), ITE(i2, t2, e2)) -> c_110() 54.28/15.50 , checkConstrExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> c_111() 54.28/15.50 , checkConstrExp^#(Eq(eq11, eq12), Error(e21, e22)) -> c_112() 54.28/15.50 , checkConstrExp^#(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> c_113() 54.28/15.50 , checkConstrExp^#(Eq(eq11, eq12), T()) -> c_114() 54.28/15.50 , checkConstrExp^#(Eq(eq11, eq12), F()) -> c_115() 54.28/15.50 , checkConstrExp^#(Error(e11, e12), Fun(fn2, fe2)) -> c_116() 54.28/15.50 , checkConstrExp^#(Error(e11, e12), Var(v2)) -> c_117() 54.28/15.50 , checkConstrExp^#(Error(e11, e12), ITE(i2, t2, e2)) -> c_118() 54.28/15.50 , checkConstrExp^#(Error(e11, e12), Eq(eq21, eq22)) -> c_119() 54.28/15.50 , checkConstrExp^#(Error(e11, e12), Error(e21, e22)) -> c_120() 54.28/15.50 , checkConstrExp^#(Error(e11, e12), Bsf(op2, b21, b22)) -> c_121() 54.28/15.50 , checkConstrExp^#(Error(e11, e12), T()) -> c_122() 54.28/15.50 , checkConstrExp^#(Error(e11, e12), F()) -> c_123() 54.28/15.50 , checkConstrExp^#(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> c_124() 54.28/15.50 , checkConstrExp^#(Bsf(op1, b11, b12), Var(v2)) -> c_125() 54.28/15.50 , checkConstrExp^#(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> c_126() 54.28/15.50 , checkConstrExp^#(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> c_127() 54.28/15.50 , checkConstrExp^#(Bsf(op1, b11, b12), Error(e21, e22)) -> c_128() 54.28/15.50 , checkConstrExp^#(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> 54.28/15.50 c_129() 54.28/15.50 , checkConstrExp^#(Bsf(op1, b11, b12), T()) -> c_130() 54.28/15.50 , checkConstrExp^#(Bsf(op1, b11, b12), F()) -> c_131() 54.28/15.50 , checkConstrExp^#(T(), Fun(fn2, fe2)) -> c_132() 54.28/15.50 , checkConstrExp^#(T(), Var(v2)) -> c_133() 54.28/15.50 , checkConstrExp^#(T(), ITE(i2, t2, e2)) -> c_134() 54.28/15.50 , checkConstrExp^#(T(), Eq(eq21, eq22)) -> c_135() 54.28/15.50 , checkConstrExp^#(T(), Error(e21, e22)) -> c_136() 54.28/15.50 , checkConstrExp^#(T(), Bsf(op2, b21, b22)) -> c_137() 54.28/15.50 , checkConstrExp^#(T(), T()) -> c_138() 54.28/15.50 , checkConstrExp^#(T(), F()) -> c_139() 54.28/15.50 , checkConstrExp^#(F(), Fun(fn2, fe2)) -> c_140() 54.28/15.50 , checkConstrExp^#(F(), Var(v2)) -> c_141() 54.28/15.50 , checkConstrExp^#(F(), ITE(i2, t2, e2)) -> c_142() 54.28/15.50 , checkConstrExp^#(F(), Eq(eq21, eq22)) -> c_143() 54.28/15.50 , checkConstrExp^#(F(), Error(e21, e22)) -> c_144() 54.28/15.50 , checkConstrExp^#(F(), Bsf(op2, b21, b22)) -> c_145() 54.28/15.50 , checkConstrExp^#(F(), T()) -> c_146() 54.28/15.50 , checkConstrExp^#(F(), F()) -> c_147() 54.28/15.50 , getIfTrue^#(ITE(i, t, e)) -> c_148() 54.28/15.50 , getEqSecond^#(Eq(f, s)) -> c_149() 54.28/15.50 , getEqFirst^#(Eq(f, s)) -> c_150() 54.28/15.50 , getBsfOp^#(Bsf(op, t1, t2)) -> c_151() 54.28/15.50 , getBsfFirstTerm^#(Bsf(op, t1, t2)) -> c_152() 54.28/15.50 , getIfGuard^#(ITE(i, t, e)) -> c_153() 54.28/15.50 , eqOps^#(o1, o2) -> c_154() } 54.28/15.50 54.28/15.50 We are left with following problem, upon which TcT provides the 54.28/15.50 certificate YES(O(1),O(n^1)). 54.28/15.50 54.28/15.50 Strict DPs: 54.28/15.50 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.50 c_2(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.50 input, 54.28/15.50 f0, 54.28/15.50 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.50 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.50 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.50 c_4(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs)), 54.28/15.50 !EQ^#(f, n)) 54.28/15.50 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.50 c_5(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs), !EQ^#(x', x)) 54.28/15.50 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.50 c_6(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs)), 54.28/15.50 !EQ^#(f, n)) 54.28/15.50 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.50 c_9(and^#(!EQ(fn1, fn2), eqExp(fe1, fe2)), 54.28/15.50 !EQ^#(fn1, fn2), 54.28/15.50 eqExp^#(fe1, fe2)) 54.28/15.50 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.50 c_27(and^#(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))), 54.28/15.50 eqExp^#(i1, i2), 54.28/15.50 and^#(eqExp(t1, t2), eqExp(e1, e2)), 54.28/15.50 eqExp^#(t1, t2), 54.28/15.50 eqExp^#(e1, e2)) 54.28/15.50 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.50 c_36(and^#(eqExp(eq11, eq21), eqExp(eq12, eq22)), 54.28/15.50 eqExp^#(eq11, eq21), 54.28/15.50 eqExp^#(eq12, eq22)) 54.28/15.50 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.50 c_45(and^#(eqExp(e11, e21), eqExp(e12, e22)), 54.28/15.50 eqExp^#(e11, e21), 54.28/15.50 eqExp^#(e12, e22)) 54.28/15.50 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.50 c_54(and^#(True(), and(eqExp(b11, b21), eqExp(b12, b22))), 54.28/15.50 and^#(eqExp(b11, b21), eqExp(b12, b22)), 54.28/15.50 eqExp^#(b11, b21), 54.28/15.50 eqExp^#(b12, b22)) 54.28/15.50 , apply^#(op, v1, v2) -> 54.28/15.50 c_73(apply[Ite][True][Ite]^#(eqExp(v1, v2), op, v1, v2), 54.28/15.50 eqExp^#(v1, v2)) 54.28/15.50 , eeval^#(Var(int), ns, vs, p) -> c_77(lookvar^#(int, ns, vs)) } 54.28/15.50 Weak DPs: 54.28/15.50 { run[Let][Let]^#(p, input, f0, ef) -> c_169(lookname^#(f0, p)) 54.28/15.50 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.50 c_156(lookbody^#(f, xs)) 54.28/15.50 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.50 c_158(lookvar^#(x', xs', xs)) 54.28/15.50 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.50 c_171(lookname^#(f, xs)) } 54.28/15.50 Weak Trs: 54.28/15.50 { getFuncName(Fun(n, e)) -> n 54.28/15.50 , run(Cons(Fun(f0, e), xs), input) -> 54.28/15.50 run[Let][Let](Cons(Fun(f0, e), xs), 54.28/15.50 input, 54.28/15.50 f0, 54.28/15.50 lookbody(f0, Cons(Fun(f0, e), xs))) 54.28/15.50 , getIfFalse(ITE(i, t, e)) -> e 54.28/15.50 , lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.50 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.50 , lookvar(x', Cons(x, xs), vs) -> 54.28/15.50 lookvar[Ite](!EQ(x', x), x', Cons(x, xs), vs) 54.28/15.50 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.50 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.50 , lookvar[Ite](True(), x', ns, Cons(x, xs)) -> x 54.28/15.50 , lookvar[Ite](False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.50 lookvar(x', xs', xs) 54.28/15.50 , lookname(f, Cons(Fun(n, e), xs)) -> 54.28/15.50 lookname[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.50 , apply[Ite][True][Ite](True(), op, v1, v2) -> T() 54.28/15.50 , apply[Ite][True][Ite](False(), op, v1, v2) -> F() 54.28/15.50 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.50 , !EQ(S(x), 0()) -> False() 54.28/15.50 , !EQ(0(), S(y)) -> False() 54.28/15.50 , !EQ(0(), 0()) -> True() 54.28/15.50 , getConst(Cst(int)) -> int 54.28/15.50 , getFuncExp(Fun(n, e)) -> e 54.28/15.50 , eqExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.50 and(!EQ(fn1, fn2), eqExp(fe1, fe2)) 54.28/15.50 , eqExp(Fun(fn1, fe1), Var(v2)) -> False() 54.28/15.50 , eqExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False() 54.28/15.50 , eqExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False() 54.28/15.50 , eqExp(Fun(fn1, fe1), Error(e21, e22)) -> False() 54.28/15.50 , eqExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False() 54.28/15.50 , eqExp(Fun(fn1, fe1), T()) -> False() 54.28/15.50 , eqExp(Fun(fn1, fe1), F()) -> False() 54.28/15.50 , eqExp(Var(v1), Fun(fn2, fe2)) -> False() 54.28/15.50 , eqExp(Var(v1), Var(v2)) -> !EQ(v1, v2) 54.28/15.50 , eqExp(Var(v1), ITE(i2, t2, e2)) -> False() 54.28/15.50 , eqExp(Var(v1), Eq(eq21, eq22)) -> False() 54.28/15.50 , eqExp(Var(v1), Error(e21, e22)) -> False() 54.28/15.50 , eqExp(Var(v1), Bsf(op2, b21, b22)) -> False() 54.28/15.50 , eqExp(Var(v1), T()) -> False() 54.28/15.50 , eqExp(Var(v1), F()) -> False() 54.28/15.50 , eqExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False() 54.28/15.50 , eqExp(ITE(i1, t1, e1), Var(v2)) -> False() 54.28/15.50 , eqExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.50 and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) 54.28/15.50 , eqExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False() 54.28/15.50 , eqExp(ITE(i1, t1, e1), Error(e21, e22)) -> False() 54.28/15.50 , eqExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False() 54.28/15.50 , eqExp(ITE(i1, t1, e1), T()) -> False() 54.28/15.50 , eqExp(ITE(i1, t1, e1), F()) -> False() 54.28/15.50 , eqExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False() 54.28/15.50 , eqExp(Eq(eq11, eq12), Var(v2)) -> False() 54.28/15.50 , eqExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False() 54.28/15.50 , eqExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.50 and(eqExp(eq11, eq21), eqExp(eq12, eq22)) 54.28/15.50 , eqExp(Eq(eq11, eq12), Error(e21, e22)) -> False() 54.28/15.50 , eqExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False() 54.28/15.50 , eqExp(Eq(eq11, eq12), T()) -> False() 54.28/15.50 , eqExp(Eq(eq11, eq12), F()) -> False() 54.28/15.50 , eqExp(Error(e11, e12), Fun(fn2, fe2)) -> False() 54.28/15.50 , eqExp(Error(e11, e12), Var(v2)) -> False() 54.28/15.50 , eqExp(Error(e11, e12), ITE(i2, t2, e2)) -> False() 54.28/15.50 , eqExp(Error(e11, e12), Eq(eq21, eq22)) -> False() 54.28/15.50 , eqExp(Error(e11, e12), Error(e21, e22)) -> 54.28/15.50 and(eqExp(e11, e21), eqExp(e12, e22)) 54.28/15.50 , eqExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False() 54.28/15.50 , eqExp(Error(e11, e12), T()) -> False() 54.28/15.50 , eqExp(Error(e11, e12), F()) -> False() 54.28/15.50 , eqExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False() 54.28/15.50 , eqExp(Bsf(op1, b11, b12), Var(v2)) -> False() 54.28/15.50 , eqExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False() 54.28/15.50 , eqExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False() 54.28/15.50 , eqExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False() 54.28/15.50 , eqExp(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.50 and(True(), and(eqExp(b11, b21), eqExp(b12, b22))) 54.28/15.50 , eqExp(Bsf(op1, b11, b12), T()) -> False() 54.28/15.50 , eqExp(Bsf(op1, b11, b12), F()) -> False() 54.28/15.50 , eqExp(T(), Fun(fn2, fe2)) -> False() 54.28/15.50 , eqExp(T(), Var(v2)) -> False() 54.28/15.50 , eqExp(T(), ITE(i2, t2, e2)) -> False() 54.28/15.50 , eqExp(T(), Eq(eq21, eq22)) -> False() 54.28/15.50 , eqExp(T(), Error(e21, e22)) -> False() 54.28/15.50 , eqExp(T(), Bsf(op2, b21, b22)) -> False() 54.28/15.50 , eqExp(T(), T()) -> True() 54.28/15.50 , eqExp(T(), F()) -> False() 54.28/15.50 , eqExp(F(), Fun(fn2, fe2)) -> False() 54.28/15.50 , eqExp(F(), Var(v2)) -> False() 54.28/15.50 , eqExp(F(), ITE(i2, t2, e2)) -> False() 54.28/15.50 , eqExp(F(), Eq(eq21, eq22)) -> False() 54.28/15.50 , eqExp(F(), Error(e21, e22)) -> False() 54.28/15.50 , eqExp(F(), Bsf(op2, b21, b22)) -> False() 54.28/15.50 , eqExp(F(), T()) -> False() 54.28/15.50 , eqExp(F(), F()) -> True() 54.28/15.50 , apply(op, v1, v2) -> 54.28/15.50 apply[Ite][True][Ite](eqExp(v1, v2), op, v1, v2) 54.28/15.50 , getVar(Var(int)) -> int 54.28/15.50 , getBsfSecondTerm(Bsf(op, t1, t2)) -> t2 54.28/15.50 , eeval(Fun(fn1, fe1), ns, vs, p) -> 54.28/15.50 eeval[Ite][False][Ite][False][Ite](False(), 54.28/15.50 Fun(fn1, fe1), 54.28/15.50 ns, 54.28/15.50 vs, 54.28/15.50 p) 54.28/15.50 , eeval(Var(int), ns, vs, p) -> lookvar(int, ns, vs) 54.28/15.50 , eeval(ITE(i1, t1, e1), ns, vs, p) -> 54.28/15.50 eeval[Ite][False][Ite][False][Ite](False(), 54.28/15.50 ITE(i1, t1, e1), 54.28/15.50 ns, 54.28/15.50 vs, 54.28/15.50 p) 54.28/15.50 , eeval(Eq(eq11, eq12), ns, vs, p) -> 54.28/15.50 eeval[Ite][False][Ite][False][Ite](False(), 54.28/15.50 Eq(eq11, eq12), 54.28/15.50 ns, 54.28/15.50 vs, 54.28/15.50 p) 54.28/15.50 , eeval(Error(e11, e12), ns, vs, p) -> 54.28/15.50 eeval[Ite][False][Ite][False][Ite](False(), 54.28/15.50 Error(e11, e12), 54.28/15.50 ns, 54.28/15.50 vs, 54.28/15.50 p) 54.28/15.50 , eeval(Bsf(op1, b11, b12), ns, vs, p) -> 54.28/15.50 eeval[Ite][False][Ite][False][Ite](True(), 54.28/15.50 Bsf(op1, b11, b12), 54.28/15.50 ns, 54.28/15.50 vs, 54.28/15.50 p) 54.28/15.51 , eeval(T(), ns, vs, p) -> T() 54.28/15.51 , eeval(F(), ns, vs, p) -> F() 54.28/15.51 , and(True(), True()) -> True() 54.28/15.51 , and(True(), False()) -> False() 54.28/15.51 , and(False(), True()) -> False() 54.28/15.51 , and(False(), False()) -> False() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> True() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), Var(v2)) -> False() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), Error(e21, e22)) -> False() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), T()) -> False() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), F()) -> False() 54.28/15.51 , checkConstrExp(Var(v1), Fun(fn2, fe2)) -> False() 54.28/15.51 , checkConstrExp(Var(v1), Var(v2)) -> True() 54.28/15.51 , checkConstrExp(Var(v1), ITE(i2, t2, e2)) -> False() 54.28/15.51 , checkConstrExp(Var(v1), Eq(eq21, eq22)) -> False() 54.28/15.51 , checkConstrExp(Var(v1), Error(e21, e22)) -> False() 54.28/15.51 , checkConstrExp(Var(v1), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , checkConstrExp(Var(v1), T()) -> False() 54.28/15.51 , checkConstrExp(Var(v1), F()) -> False() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), Var(v2)) -> False() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> True() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), Error(e21, e22)) -> False() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), T()) -> False() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), F()) -> False() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), Var(v2)) -> False() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> True() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), Error(e21, e22)) -> False() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), T()) -> False() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), F()) -> False() 54.28/15.51 , checkConstrExp(Error(e11, e12), Fun(fn2, fe2)) -> False() 54.28/15.51 , checkConstrExp(Error(e11, e12), Var(v2)) -> False() 54.28/15.51 , checkConstrExp(Error(e11, e12), ITE(i2, t2, e2)) -> False() 54.28/15.51 , checkConstrExp(Error(e11, e12), Eq(eq21, eq22)) -> False() 54.28/15.51 , checkConstrExp(Error(e11, e12), Error(e21, e22)) -> True() 54.28/15.51 , checkConstrExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , checkConstrExp(Error(e11, e12), T()) -> False() 54.28/15.51 , checkConstrExp(Error(e11, e12), F()) -> False() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), Var(v2)) -> False() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> True() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), T()) -> False() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), F()) -> False() 54.28/15.51 , checkConstrExp(T(), Fun(fn2, fe2)) -> False() 54.28/15.51 , checkConstrExp(T(), Var(v2)) -> False() 54.28/15.51 , checkConstrExp(T(), ITE(i2, t2, e2)) -> False() 54.28/15.51 , checkConstrExp(T(), Eq(eq21, eq22)) -> False() 54.28/15.51 , checkConstrExp(T(), Error(e21, e22)) -> False() 54.28/15.51 , checkConstrExp(T(), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , checkConstrExp(T(), T()) -> True() 54.28/15.51 , checkConstrExp(T(), F()) -> False() 54.28/15.51 , checkConstrExp(F(), Fun(fn2, fe2)) -> False() 54.28/15.51 , checkConstrExp(F(), Var(v2)) -> False() 54.28/15.51 , checkConstrExp(F(), ITE(i2, t2, e2)) -> False() 54.28/15.51 , checkConstrExp(F(), Eq(eq21, eq22)) -> False() 54.28/15.51 , checkConstrExp(F(), Error(e21, e22)) -> False() 54.28/15.51 , checkConstrExp(F(), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , checkConstrExp(F(), T()) -> False() 54.28/15.51 , checkConstrExp(F(), F()) -> True() 54.28/15.51 , getIfTrue(ITE(i, t, e)) -> t 54.28/15.51 , getEqSecond(Eq(f, s)) -> s 54.28/15.51 , getEqFirst(Eq(f, s)) -> f 54.28/15.51 , getBsfOp(Bsf(op, t1, t2)) -> op 54.28/15.51 , getBsfFirstTerm(Bsf(op, t1, t2)) -> t1 54.28/15.51 , run[Let][Let](p, input, f0, ef) -> 54.28/15.51 run[Let][Let][Let](p, input, f0, ef, lookname(f0, p)) 54.28/15.51 , lookname[Ite](True(), f, Cons(Fun(n, e), xs)) -> n 54.28/15.51 , lookname[Ite](False(), f, Cons(x, xs)) -> lookname(f, xs) 54.28/15.51 , getIfGuard(ITE(i, t, e)) -> i 54.28/15.51 , eqOps(o1, o2) -> True() } 54.28/15.51 Obligation: 54.28/15.51 innermost runtime complexity 54.28/15.51 Answer: 54.28/15.51 YES(O(1),O(n^1)) 54.28/15.51 54.28/15.51 Due to missing edges in the dependency-graph, the right-hand sides 54.28/15.51 of following rules could be simplified: 54.28/15.51 54.28/15.51 { lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.51 c_4(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs)), 54.28/15.51 !EQ^#(f, n)) 54.28/15.51 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.51 c_5(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs), !EQ^#(x', x)) 54.28/15.51 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.51 c_6(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs)), 54.28/15.51 !EQ^#(f, n)) 54.28/15.51 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.51 c_9(and^#(!EQ(fn1, fn2), eqExp(fe1, fe2)), 54.28/15.51 !EQ^#(fn1, fn2), 54.28/15.51 eqExp^#(fe1, fe2)) 54.28/15.51 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.51 c_27(and^#(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))), 54.28/15.51 eqExp^#(i1, i2), 54.28/15.51 and^#(eqExp(t1, t2), eqExp(e1, e2)), 54.28/15.51 eqExp^#(t1, t2), 54.28/15.51 eqExp^#(e1, e2)) 54.28/15.51 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.51 c_36(and^#(eqExp(eq11, eq21), eqExp(eq12, eq22)), 54.28/15.51 eqExp^#(eq11, eq21), 54.28/15.51 eqExp^#(eq12, eq22)) 54.28/15.51 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.51 c_45(and^#(eqExp(e11, e21), eqExp(e12, e22)), 54.28/15.51 eqExp^#(e11, e21), 54.28/15.51 eqExp^#(e12, e22)) 54.28/15.51 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.51 c_54(and^#(True(), and(eqExp(b11, b21), eqExp(b12, b22))), 54.28/15.51 and^#(eqExp(b11, b21), eqExp(b12, b22)), 54.28/15.51 eqExp^#(b11, b21), 54.28/15.51 eqExp^#(b12, b22)) 54.28/15.51 , apply^#(op, v1, v2) -> 54.28/15.51 c_73(apply[Ite][True][Ite]^#(eqExp(v1, v2), op, v1, v2), 54.28/15.51 eqExp^#(v1, v2)) } 54.28/15.51 54.28/15.51 We are left with following problem, upon which TcT provides the 54.28/15.51 certificate YES(O(1),O(n^1)). 54.28/15.51 54.28/15.51 Strict DPs: 54.28/15.51 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.51 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.51 input, 54.28/15.51 f0, 54.28/15.51 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.51 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.51 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.51 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.51 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.51 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.51 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.51 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.51 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_5(eqExp^#(fe1, fe2)) 54.28/15.51 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.51 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.51 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.51 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.51 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.51 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.51 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.51 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) 54.28/15.51 , apply^#(op, v1, v2) -> c_10(eqExp^#(v1, v2)) 54.28/15.51 , eeval^#(Var(int), ns, vs, p) -> c_11(lookvar^#(int, ns, vs)) } 54.28/15.51 Weak DPs: 54.28/15.51 { run[Let][Let]^#(p, input, f0, ef) -> c_12(lookname^#(f0, p)) 54.28/15.51 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.51 c_13(lookbody^#(f, xs)) 54.28/15.51 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.51 c_14(lookvar^#(x', xs', xs)) 54.28/15.51 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.51 c_15(lookname^#(f, xs)) } 54.28/15.51 Weak Trs: 54.28/15.51 { getFuncName(Fun(n, e)) -> n 54.28/15.51 , run(Cons(Fun(f0, e), xs), input) -> 54.28/15.51 run[Let][Let](Cons(Fun(f0, e), xs), 54.28/15.51 input, 54.28/15.51 f0, 54.28/15.51 lookbody(f0, Cons(Fun(f0, e), xs))) 54.28/15.51 , getIfFalse(ITE(i, t, e)) -> e 54.28/15.51 , lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.51 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.51 , lookvar(x', Cons(x, xs), vs) -> 54.28/15.51 lookvar[Ite](!EQ(x', x), x', Cons(x, xs), vs) 54.28/15.51 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.51 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.51 , lookvar[Ite](True(), x', ns, Cons(x, xs)) -> x 54.28/15.51 , lookvar[Ite](False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.51 lookvar(x', xs', xs) 54.28/15.51 , lookname(f, Cons(Fun(n, e), xs)) -> 54.28/15.51 lookname[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.51 , apply[Ite][True][Ite](True(), op, v1, v2) -> T() 54.28/15.51 , apply[Ite][True][Ite](False(), op, v1, v2) -> F() 54.28/15.51 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.51 , !EQ(S(x), 0()) -> False() 54.28/15.51 , !EQ(0(), S(y)) -> False() 54.28/15.51 , !EQ(0(), 0()) -> True() 54.28/15.51 , getConst(Cst(int)) -> int 54.28/15.51 , getFuncExp(Fun(n, e)) -> e 54.28/15.51 , eqExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.51 and(!EQ(fn1, fn2), eqExp(fe1, fe2)) 54.28/15.51 , eqExp(Fun(fn1, fe1), Var(v2)) -> False() 54.28/15.51 , eqExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False() 54.28/15.51 , eqExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False() 54.28/15.51 , eqExp(Fun(fn1, fe1), Error(e21, e22)) -> False() 54.28/15.51 , eqExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , eqExp(Fun(fn1, fe1), T()) -> False() 54.28/15.51 , eqExp(Fun(fn1, fe1), F()) -> False() 54.28/15.51 , eqExp(Var(v1), Fun(fn2, fe2)) -> False() 54.28/15.51 , eqExp(Var(v1), Var(v2)) -> !EQ(v1, v2) 54.28/15.51 , eqExp(Var(v1), ITE(i2, t2, e2)) -> False() 54.28/15.51 , eqExp(Var(v1), Eq(eq21, eq22)) -> False() 54.28/15.51 , eqExp(Var(v1), Error(e21, e22)) -> False() 54.28/15.51 , eqExp(Var(v1), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , eqExp(Var(v1), T()) -> False() 54.28/15.51 , eqExp(Var(v1), F()) -> False() 54.28/15.51 , eqExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False() 54.28/15.51 , eqExp(ITE(i1, t1, e1), Var(v2)) -> False() 54.28/15.51 , eqExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.51 and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) 54.28/15.51 , eqExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False() 54.28/15.51 , eqExp(ITE(i1, t1, e1), Error(e21, e22)) -> False() 54.28/15.51 , eqExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , eqExp(ITE(i1, t1, e1), T()) -> False() 54.28/15.51 , eqExp(ITE(i1, t1, e1), F()) -> False() 54.28/15.51 , eqExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False() 54.28/15.51 , eqExp(Eq(eq11, eq12), Var(v2)) -> False() 54.28/15.51 , eqExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False() 54.28/15.51 , eqExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.51 and(eqExp(eq11, eq21), eqExp(eq12, eq22)) 54.28/15.51 , eqExp(Eq(eq11, eq12), Error(e21, e22)) -> False() 54.28/15.51 , eqExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , eqExp(Eq(eq11, eq12), T()) -> False() 54.28/15.51 , eqExp(Eq(eq11, eq12), F()) -> False() 54.28/15.51 , eqExp(Error(e11, e12), Fun(fn2, fe2)) -> False() 54.28/15.51 , eqExp(Error(e11, e12), Var(v2)) -> False() 54.28/15.51 , eqExp(Error(e11, e12), ITE(i2, t2, e2)) -> False() 54.28/15.51 , eqExp(Error(e11, e12), Eq(eq21, eq22)) -> False() 54.28/15.51 , eqExp(Error(e11, e12), Error(e21, e22)) -> 54.28/15.51 and(eqExp(e11, e21), eqExp(e12, e22)) 54.28/15.51 , eqExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , eqExp(Error(e11, e12), T()) -> False() 54.28/15.51 , eqExp(Error(e11, e12), F()) -> False() 54.28/15.51 , eqExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False() 54.28/15.51 , eqExp(Bsf(op1, b11, b12), Var(v2)) -> False() 54.28/15.51 , eqExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False() 54.28/15.51 , eqExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False() 54.28/15.51 , eqExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False() 54.28/15.51 , eqExp(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.51 and(True(), and(eqExp(b11, b21), eqExp(b12, b22))) 54.28/15.51 , eqExp(Bsf(op1, b11, b12), T()) -> False() 54.28/15.51 , eqExp(Bsf(op1, b11, b12), F()) -> False() 54.28/15.51 , eqExp(T(), Fun(fn2, fe2)) -> False() 54.28/15.51 , eqExp(T(), Var(v2)) -> False() 54.28/15.51 , eqExp(T(), ITE(i2, t2, e2)) -> False() 54.28/15.51 , eqExp(T(), Eq(eq21, eq22)) -> False() 54.28/15.51 , eqExp(T(), Error(e21, e22)) -> False() 54.28/15.51 , eqExp(T(), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , eqExp(T(), T()) -> True() 54.28/15.51 , eqExp(T(), F()) -> False() 54.28/15.51 , eqExp(F(), Fun(fn2, fe2)) -> False() 54.28/15.51 , eqExp(F(), Var(v2)) -> False() 54.28/15.51 , eqExp(F(), ITE(i2, t2, e2)) -> False() 54.28/15.51 , eqExp(F(), Eq(eq21, eq22)) -> False() 54.28/15.51 , eqExp(F(), Error(e21, e22)) -> False() 54.28/15.51 , eqExp(F(), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , eqExp(F(), T()) -> False() 54.28/15.51 , eqExp(F(), F()) -> True() 54.28/15.51 , apply(op, v1, v2) -> 54.28/15.51 apply[Ite][True][Ite](eqExp(v1, v2), op, v1, v2) 54.28/15.51 , getVar(Var(int)) -> int 54.28/15.51 , getBsfSecondTerm(Bsf(op, t1, t2)) -> t2 54.28/15.51 , eeval(Fun(fn1, fe1), ns, vs, p) -> 54.28/15.51 eeval[Ite][False][Ite][False][Ite](False(), 54.28/15.51 Fun(fn1, fe1), 54.28/15.51 ns, 54.28/15.51 vs, 54.28/15.51 p) 54.28/15.51 , eeval(Var(int), ns, vs, p) -> lookvar(int, ns, vs) 54.28/15.51 , eeval(ITE(i1, t1, e1), ns, vs, p) -> 54.28/15.51 eeval[Ite][False][Ite][False][Ite](False(), 54.28/15.51 ITE(i1, t1, e1), 54.28/15.51 ns, 54.28/15.51 vs, 54.28/15.51 p) 54.28/15.51 , eeval(Eq(eq11, eq12), ns, vs, p) -> 54.28/15.51 eeval[Ite][False][Ite][False][Ite](False(), 54.28/15.51 Eq(eq11, eq12), 54.28/15.51 ns, 54.28/15.51 vs, 54.28/15.51 p) 54.28/15.51 , eeval(Error(e11, e12), ns, vs, p) -> 54.28/15.51 eeval[Ite][False][Ite][False][Ite](False(), 54.28/15.51 Error(e11, e12), 54.28/15.51 ns, 54.28/15.51 vs, 54.28/15.51 p) 54.28/15.51 , eeval(Bsf(op1, b11, b12), ns, vs, p) -> 54.28/15.51 eeval[Ite][False][Ite][False][Ite](True(), 54.28/15.51 Bsf(op1, b11, b12), 54.28/15.51 ns, 54.28/15.51 vs, 54.28/15.51 p) 54.28/15.51 , eeval(T(), ns, vs, p) -> T() 54.28/15.51 , eeval(F(), ns, vs, p) -> F() 54.28/15.51 , and(True(), True()) -> True() 54.28/15.51 , and(True(), False()) -> False() 54.28/15.51 , and(False(), True()) -> False() 54.28/15.51 , and(False(), False()) -> False() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), Fun(fn2, fe2)) -> True() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), Var(v2)) -> False() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), ITE(i2, t2, e2)) -> False() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), Eq(eq21, eq22)) -> False() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), Error(e21, e22)) -> False() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), T()) -> False() 54.28/15.51 , checkConstrExp(Fun(fn1, fe1), F()) -> False() 54.28/15.51 , checkConstrExp(Var(v1), Fun(fn2, fe2)) -> False() 54.28/15.51 , checkConstrExp(Var(v1), Var(v2)) -> True() 54.28/15.51 , checkConstrExp(Var(v1), ITE(i2, t2, e2)) -> False() 54.28/15.51 , checkConstrExp(Var(v1), Eq(eq21, eq22)) -> False() 54.28/15.51 , checkConstrExp(Var(v1), Error(e21, e22)) -> False() 54.28/15.51 , checkConstrExp(Var(v1), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , checkConstrExp(Var(v1), T()) -> False() 54.28/15.51 , checkConstrExp(Var(v1), F()) -> False() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), Fun(fn2, fe2)) -> False() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), Var(v2)) -> False() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> True() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), Eq(eq21, eq22)) -> False() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), Error(e21, e22)) -> False() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), T()) -> False() 54.28/15.51 , checkConstrExp(ITE(i1, t1, e1), F()) -> False() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), Fun(fn2, fe2)) -> False() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), Var(v2)) -> False() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), ITE(i2, t2, e2)) -> False() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), Eq(eq21, eq22)) -> True() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), Error(e21, e22)) -> False() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), T()) -> False() 54.28/15.51 , checkConstrExp(Eq(eq11, eq12), F()) -> False() 54.28/15.51 , checkConstrExp(Error(e11, e12), Fun(fn2, fe2)) -> False() 54.28/15.51 , checkConstrExp(Error(e11, e12), Var(v2)) -> False() 54.28/15.51 , checkConstrExp(Error(e11, e12), ITE(i2, t2, e2)) -> False() 54.28/15.51 , checkConstrExp(Error(e11, e12), Eq(eq21, eq22)) -> False() 54.28/15.51 , checkConstrExp(Error(e11, e12), Error(e21, e22)) -> True() 54.28/15.51 , checkConstrExp(Error(e11, e12), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , checkConstrExp(Error(e11, e12), T()) -> False() 54.28/15.51 , checkConstrExp(Error(e11, e12), F()) -> False() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) -> False() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), Var(v2)) -> False() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) -> False() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) -> False() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), Error(e21, e22)) -> False() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) -> True() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), T()) -> False() 54.28/15.51 , checkConstrExp(Bsf(op1, b11, b12), F()) -> False() 54.28/15.51 , checkConstrExp(T(), Fun(fn2, fe2)) -> False() 54.28/15.51 , checkConstrExp(T(), Var(v2)) -> False() 54.28/15.51 , checkConstrExp(T(), ITE(i2, t2, e2)) -> False() 54.28/15.51 , checkConstrExp(T(), Eq(eq21, eq22)) -> False() 54.28/15.51 , checkConstrExp(T(), Error(e21, e22)) -> False() 54.28/15.51 , checkConstrExp(T(), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , checkConstrExp(T(), T()) -> True() 54.28/15.51 , checkConstrExp(T(), F()) -> False() 54.28/15.51 , checkConstrExp(F(), Fun(fn2, fe2)) -> False() 54.28/15.51 , checkConstrExp(F(), Var(v2)) -> False() 54.28/15.51 , checkConstrExp(F(), ITE(i2, t2, e2)) -> False() 54.28/15.51 , checkConstrExp(F(), Eq(eq21, eq22)) -> False() 54.28/15.51 , checkConstrExp(F(), Error(e21, e22)) -> False() 54.28/15.51 , checkConstrExp(F(), Bsf(op2, b21, b22)) -> False() 54.28/15.51 , checkConstrExp(F(), T()) -> False() 54.28/15.51 , checkConstrExp(F(), F()) -> True() 54.28/15.51 , getIfTrue(ITE(i, t, e)) -> t 54.28/15.51 , getEqSecond(Eq(f, s)) -> s 54.28/15.51 , getEqFirst(Eq(f, s)) -> f 54.28/15.51 , getBsfOp(Bsf(op, t1, t2)) -> op 54.28/15.51 , getBsfFirstTerm(Bsf(op, t1, t2)) -> t1 54.28/15.51 , run[Let][Let](p, input, f0, ef) -> 54.28/15.51 run[Let][Let][Let](p, input, f0, ef, lookname(f0, p)) 54.28/15.51 , lookname[Ite](True(), f, Cons(Fun(n, e), xs)) -> n 54.28/15.51 , lookname[Ite](False(), f, Cons(x, xs)) -> lookname(f, xs) 54.28/15.51 , getIfGuard(ITE(i, t, e)) -> i 54.28/15.51 , eqOps(o1, o2) -> True() } 54.28/15.51 Obligation: 54.28/15.51 innermost runtime complexity 54.28/15.51 Answer: 54.28/15.51 YES(O(1),O(n^1)) 54.28/15.51 54.28/15.51 We replace rewrite rules by usable rules: 54.28/15.51 54.28/15.51 Weak Usable Rules: 54.28/15.51 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.51 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.51 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.51 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.51 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.51 , !EQ(S(x), 0()) -> False() 54.28/15.51 , !EQ(0(), S(y)) -> False() 54.28/15.51 , !EQ(0(), 0()) -> True() } 54.28/15.51 54.28/15.51 We are left with following problem, upon which TcT provides the 54.28/15.51 certificate YES(O(1),O(n^1)). 54.28/15.51 54.28/15.51 Strict DPs: 54.28/15.51 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.51 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.51 input, 54.28/15.51 f0, 54.28/15.51 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.51 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.51 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.51 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.51 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.51 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.51 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.51 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.51 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_5(eqExp^#(fe1, fe2)) 54.28/15.51 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.51 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.51 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.51 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.51 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.51 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.51 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.51 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) 54.28/15.51 , apply^#(op, v1, v2) -> c_10(eqExp^#(v1, v2)) 54.28/15.51 , eeval^#(Var(int), ns, vs, p) -> c_11(lookvar^#(int, ns, vs)) } 54.28/15.51 Weak DPs: 54.28/15.51 { run[Let][Let]^#(p, input, f0, ef) -> c_12(lookname^#(f0, p)) 54.28/15.51 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.51 c_13(lookbody^#(f, xs)) 54.28/15.51 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.51 c_14(lookvar^#(x', xs', xs)) 54.28/15.51 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.51 c_15(lookname^#(f, xs)) } 54.28/15.51 Weak Trs: 54.28/15.51 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.51 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.51 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.51 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.51 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.51 , !EQ(S(x), 0()) -> False() 54.28/15.51 , !EQ(0(), S(y)) -> False() 54.28/15.51 , !EQ(0(), 0()) -> True() } 54.28/15.51 Obligation: 54.28/15.51 innermost runtime complexity 54.28/15.51 Answer: 54.28/15.51 YES(O(1),O(n^1)) 54.28/15.51 54.28/15.51 Consider the dependency graph 54.28/15.51 54.28/15.51 1: run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.51 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.51 input, 54.28/15.51 f0, 54.28/15.51 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.51 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.51 -->_1 run[Let][Let]^#(p, input, f0, ef) -> 54.28/15.51 c_12(lookname^#(f0, p)) :12 54.28/15.51 -->_2 lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.51 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) :2 54.28/15.51 54.28/15.51 2: lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.51 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.51 -->_1 lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.51 c_13(lookbody^#(f, xs)) :13 54.28/15.51 54.28/15.51 3: lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.51 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.51 -->_1 lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.51 c_14(lookvar^#(x', xs', xs)) :14 54.28/15.51 54.28/15.51 4: lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.51 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.51 -->_1 lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.51 c_15(lookname^#(f, xs)) :15 54.28/15.51 54.28/15.51 5: eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_5(eqExp^#(fe1, fe2)) 54.28/15.51 -->_1 eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.51 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) :9 54.28/15.51 -->_1 eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.51 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) :8 54.28/15.52 -->_1 eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) :7 54.28/15.52 -->_1 eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) :6 54.28/15.52 -->_1 eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.52 c_5(eqExp^#(fe1, fe2)) :5 54.28/15.52 54.28/15.52 6: eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.52 -->_3 eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) :9 54.28/15.52 -->_2 eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) :9 54.28/15.52 -->_1 eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) :9 54.28/15.52 -->_3 eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) :8 54.28/15.52 -->_2 eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) :8 54.28/15.52 -->_1 eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) :8 54.28/15.52 -->_3 eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) :7 54.28/15.52 -->_2 eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) :7 54.28/15.52 -->_1 eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) :7 54.28/15.52 -->_3 eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) :6 54.28/15.52 -->_2 eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) :6 54.28/15.52 -->_1 eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) :6 54.28/15.52 -->_3 eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.52 c_5(eqExp^#(fe1, fe2)) :5 54.28/15.52 -->_2 eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.52 c_5(eqExp^#(fe1, fe2)) :5 54.28/15.52 -->_1 eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.52 c_5(eqExp^#(fe1, fe2)) :5 54.28/15.52 54.28/15.52 7: eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.52 -->_2 eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) :9 54.28/15.52 -->_1 eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) :9 54.28/15.52 -->_2 eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) :8 54.28/15.52 -->_1 eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) :8 54.28/15.52 -->_2 eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) :7 54.28/15.52 -->_1 eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) :7 54.28/15.52 -->_2 eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) :6 54.28/15.52 -->_1 eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) :6 54.28/15.52 -->_2 eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.52 c_5(eqExp^#(fe1, fe2)) :5 54.28/15.52 -->_1 eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.52 c_5(eqExp^#(fe1, fe2)) :5 54.28/15.52 54.28/15.52 8: eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.52 -->_2 eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) :9 54.28/15.52 -->_1 eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) :9 54.28/15.52 -->_2 eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) :8 54.28/15.52 -->_1 eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) :8 54.28/15.52 -->_2 eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) :7 54.28/15.52 -->_1 eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) :7 54.28/15.52 -->_2 eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) :6 54.28/15.52 -->_1 eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) :6 54.28/15.52 -->_2 eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.52 c_5(eqExp^#(fe1, fe2)) :5 54.28/15.52 -->_1 eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.52 c_5(eqExp^#(fe1, fe2)) :5 54.28/15.52 54.28/15.52 9: eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) 54.28/15.52 -->_2 eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) :9 54.28/15.52 -->_1 eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) :9 54.28/15.52 -->_2 eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) :8 54.28/15.52 -->_1 eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) :8 54.28/15.52 -->_2 eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) :7 54.28/15.52 -->_1 eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) :7 54.28/15.52 -->_2 eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) :6 54.28/15.52 -->_1 eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) :6 54.28/15.52 -->_2 eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.52 c_5(eqExp^#(fe1, fe2)) :5 54.28/15.52 -->_1 eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.52 c_5(eqExp^#(fe1, fe2)) :5 54.28/15.52 54.28/15.52 10: apply^#(op, v1, v2) -> c_10(eqExp^#(v1, v2)) 54.28/15.52 -->_1 eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) :9 54.28/15.52 -->_1 eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) :8 54.28/15.52 -->_1 eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) :7 54.28/15.52 -->_1 eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) :6 54.28/15.52 -->_1 eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.52 c_5(eqExp^#(fe1, fe2)) :5 54.28/15.52 54.28/15.52 11: eeval^#(Var(int), ns, vs, p) -> c_11(lookvar^#(int, ns, vs)) 54.28/15.52 -->_1 lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.52 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) :3 54.28/15.52 54.28/15.52 12: run[Let][Let]^#(p, input, f0, ef) -> c_12(lookname^#(f0, p)) 54.28/15.52 -->_1 lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) :4 54.28/15.52 54.28/15.52 13: lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.52 c_13(lookbody^#(f, xs)) 54.28/15.52 -->_1 lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) :2 54.28/15.52 54.28/15.52 14: lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.52 c_14(lookvar^#(x', xs', xs)) 54.28/15.52 -->_1 lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.52 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) :3 54.28/15.52 54.28/15.52 15: lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.52 c_15(lookname^#(f, xs)) 54.28/15.52 -->_1 lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) :4 54.28/15.52 54.28/15.52 54.28/15.52 Following roots of the dependency graph are removed, as the 54.28/15.52 considered set of starting terms is closed under reduction with 54.28/15.52 respect to these rules (modulo compound contexts). 54.28/15.52 54.28/15.52 { apply^#(op, v1, v2) -> c_10(eqExp^#(v1, v2)) 54.28/15.52 , eeval^#(Var(int), ns, vs, p) -> c_11(lookvar^#(int, ns, vs)) } 54.28/15.52 54.28/15.52 54.28/15.52 We are left with following problem, upon which TcT provides the 54.28/15.52 certificate YES(O(1),O(n^1)). 54.28/15.52 54.28/15.52 Strict DPs: 54.28/15.52 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.52 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.52 input, 54.28/15.52 f0, 54.28/15.52 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.52 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.52 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.52 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.52 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.52 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.52 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_5(eqExp^#(fe1, fe2)) 54.28/15.52 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.52 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.52 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.52 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.52 Weak DPs: 54.28/15.52 { run[Let][Let]^#(p, input, f0, ef) -> c_12(lookname^#(f0, p)) 54.28/15.52 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.52 c_13(lookbody^#(f, xs)) 54.28/15.52 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.52 c_14(lookvar^#(x', xs', xs)) 54.28/15.52 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.52 c_15(lookname^#(f, xs)) } 54.28/15.52 Weak Trs: 54.28/15.52 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.52 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.52 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.52 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.52 , !EQ(S(x), 0()) -> False() 54.28/15.52 , !EQ(0(), S(y)) -> False() 54.28/15.52 , !EQ(0(), 0()) -> True() } 54.28/15.52 Obligation: 54.28/15.52 innermost runtime complexity 54.28/15.52 Answer: 54.28/15.52 YES(O(1),O(n^1)) 54.28/15.52 54.28/15.52 We analyse the complexity of following sub-problems (R) and (S). 54.28/15.52 Problem (S) is obtained from the input problem by shifting strict 54.28/15.52 rules from (R) into the weak component: 54.28/15.52 54.28/15.52 Problem (R): 54.28/15.52 ------------ 54.28/15.52 Strict DPs: 54.28/15.52 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.52 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.52 input, 54.28/15.52 f0, 54.28/15.52 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.52 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.52 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) } 54.28/15.52 Weak DPs: 54.28/15.52 { run[Let][Let]^#(p, input, f0, ef) -> c_12(lookname^#(f0, p)) 54.28/15.52 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.52 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.52 c_13(lookbody^#(f, xs)) 54.28/15.52 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.52 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.52 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.52 c_14(lookvar^#(x', xs', xs)) 54.28/15.52 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.52 c_15(lookname^#(f, xs)) 54.28/15.52 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_5(eqExp^#(fe1, fe2)) 54.28/15.52 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.52 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.52 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.52 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.52 Weak Trs: 54.28/15.52 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.52 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.52 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.52 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.52 , !EQ(S(x), 0()) -> False() 54.28/15.52 , !EQ(0(), S(y)) -> False() 54.28/15.52 , !EQ(0(), 0()) -> True() } 54.28/15.52 StartTerms: basic terms 54.28/15.52 Strategy: innermost 54.28/15.52 54.28/15.52 Problem (S): 54.28/15.52 ------------ 54.28/15.52 Strict DPs: 54.28/15.52 { lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.52 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.52 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.52 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_5(eqExp^#(fe1, fe2)) 54.28/15.52 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.52 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.52 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.52 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.52 Weak DPs: 54.28/15.52 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.52 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.52 input, 54.28/15.52 f0, 54.28/15.52 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.52 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.52 , run[Let][Let]^#(p, input, f0, ef) -> c_12(lookname^#(f0, p)) 54.28/15.52 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.52 c_13(lookbody^#(f, xs)) 54.28/15.52 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.52 c_14(lookvar^#(x', xs', xs)) 54.28/15.52 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.52 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.52 c_15(lookname^#(f, xs)) } 54.28/15.52 Weak Trs: 54.28/15.52 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.52 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.52 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.52 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.52 , !EQ(S(x), 0()) -> False() 54.28/15.52 , !EQ(0(), S(y)) -> False() 54.28/15.52 , !EQ(0(), 0()) -> True() } 54.28/15.52 StartTerms: basic terms 54.28/15.52 Strategy: innermost 54.28/15.52 54.28/15.52 Overall, the transformation results in the following sub-problem(s): 54.28/15.52 54.28/15.52 Generated new problems: 54.28/15.52 ----------------------- 54.28/15.52 R) Strict DPs: 54.28/15.52 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.52 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.52 input, 54.28/15.52 f0, 54.28/15.52 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.52 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.52 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) } 54.28/15.52 Weak DPs: 54.28/15.52 { run[Let][Let]^#(p, input, f0, ef) -> c_12(lookname^#(f0, p)) 54.28/15.52 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.52 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.52 c_13(lookbody^#(f, xs)) 54.28/15.52 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.52 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.52 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.52 c_14(lookvar^#(x', xs', xs)) 54.28/15.52 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.52 c_15(lookname^#(f, xs)) 54.28/15.52 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_5(eqExp^#(fe1, fe2)) 54.28/15.52 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.52 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.52 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.52 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.52 Weak Trs: 54.28/15.52 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.52 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.52 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.52 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.52 , !EQ(S(x), 0()) -> False() 54.28/15.52 , !EQ(0(), S(y)) -> False() 54.28/15.52 , !EQ(0(), 0()) -> True() } 54.28/15.52 StartTerms: basic terms 54.28/15.52 Strategy: innermost 54.28/15.52 54.28/15.52 This problem was proven YES(O(1),O(n^1)). 54.28/15.52 54.28/15.52 S) Strict DPs: 54.28/15.52 { lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.52 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.52 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.52 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_5(eqExp^#(fe1, fe2)) 54.28/15.52 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.52 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.52 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.52 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.52 Weak DPs: 54.28/15.52 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.52 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.52 input, 54.28/15.52 f0, 54.28/15.52 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.52 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.52 , run[Let][Let]^#(p, input, f0, ef) -> c_12(lookname^#(f0, p)) 54.28/15.52 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.52 c_13(lookbody^#(f, xs)) 54.28/15.52 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.52 c_14(lookvar^#(x', xs', xs)) 54.28/15.52 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.52 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.52 c_15(lookname^#(f, xs)) } 54.28/15.52 Weak Trs: 54.28/15.52 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.52 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.52 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.52 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.52 , !EQ(S(x), 0()) -> False() 54.28/15.52 , !EQ(0(), S(y)) -> False() 54.28/15.52 , !EQ(0(), 0()) -> True() } 54.28/15.52 StartTerms: basic terms 54.28/15.52 Strategy: innermost 54.28/15.52 54.28/15.52 This problem was proven YES(O(1),O(n^1)). 54.28/15.52 54.28/15.52 54.28/15.52 Proofs for generated problems: 54.28/15.52 ------------------------------ 54.28/15.52 R) We are left with following problem, upon which TcT provides the 54.28/15.52 certificate YES(O(1),O(n^1)). 54.28/15.52 54.28/15.52 Strict DPs: 54.28/15.52 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.52 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.52 input, 54.28/15.52 f0, 54.28/15.52 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.52 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.52 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) } 54.28/15.52 Weak DPs: 54.28/15.52 { run[Let][Let]^#(p, input, f0, ef) -> c_12(lookname^#(f0, p)) 54.28/15.52 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.52 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.52 c_13(lookbody^#(f, xs)) 54.28/15.52 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.52 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.52 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.52 c_14(lookvar^#(x', xs', xs)) 54.28/15.52 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.52 c_15(lookname^#(f, xs)) 54.28/15.52 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_5(eqExp^#(fe1, fe2)) 54.28/15.52 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.52 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.52 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.52 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.52 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.52 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.52 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.52 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.52 Weak Trs: 54.28/15.52 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.52 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.52 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.53 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.53 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.53 , !EQ(S(x), 0()) -> False() 54.28/15.53 , !EQ(0(), S(y)) -> False() 54.28/15.53 , !EQ(0(), 0()) -> True() } 54.28/15.53 Obligation: 54.28/15.53 innermost runtime complexity 54.28/15.53 Answer: 54.28/15.53 YES(O(1),O(n^1)) 54.28/15.53 54.28/15.53 We estimate the number of application of {1} by applications of 54.28/15.53 Pre({1}) = {}. Here rules are labeled as follows: 54.28/15.53 54.28/15.53 DPs: 54.28/15.53 { 1: run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.53 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.53 input, 54.28/15.53 f0, 54.28/15.53 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.53 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.53 , 2: lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.53 , 3: run[Let][Let]^#(p, input, f0, ef) -> c_12(lookname^#(f0, p)) 54.28/15.53 , 4: lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.53 , 5: lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.53 c_13(lookbody^#(f, xs)) 54.28/15.53 , 6: lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.53 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.53 , 7: lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.53 c_14(lookvar^#(x', xs', xs)) 54.28/15.53 , 8: lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.53 c_15(lookname^#(f, xs)) 54.28/15.53 , 9: eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.53 c_5(eqExp^#(fe1, fe2)) 54.28/15.53 , 10: eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.53 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.53 , 11: eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.53 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.53 , 12: eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.53 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.53 , 13: eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.53 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.53 54.28/15.53 We are left with following problem, upon which TcT provides the 54.28/15.53 certificate YES(O(1),O(n^1)). 54.28/15.53 54.28/15.53 Strict DPs: 54.28/15.53 { lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) } 54.28/15.53 Weak DPs: 54.28/15.53 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.53 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.53 input, 54.28/15.53 f0, 54.28/15.53 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.53 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.53 , run[Let][Let]^#(p, input, f0, ef) -> c_12(lookname^#(f0, p)) 54.28/15.53 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.53 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.53 c_13(lookbody^#(f, xs)) 54.28/15.53 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.53 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.53 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.53 c_14(lookvar^#(x', xs', xs)) 54.28/15.53 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.53 c_15(lookname^#(f, xs)) 54.28/15.53 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_5(eqExp^#(fe1, fe2)) 54.28/15.53 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.53 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.53 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.53 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.53 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.53 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.53 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.53 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.53 Weak Trs: 54.28/15.53 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.53 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.53 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.53 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.53 , !EQ(S(x), 0()) -> False() 54.28/15.53 , !EQ(0(), S(y)) -> False() 54.28/15.53 , !EQ(0(), 0()) -> True() } 54.28/15.53 Obligation: 54.28/15.53 innermost runtime complexity 54.28/15.53 Answer: 54.28/15.53 YES(O(1),O(n^1)) 54.28/15.53 54.28/15.53 The following weak DPs constitute a sub-graph of the DG that is 54.28/15.53 closed under successors. The DPs are removed. 54.28/15.53 54.28/15.53 { lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.53 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.53 c_13(lookbody^#(f, xs)) 54.28/15.53 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.53 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.53 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.53 c_14(lookvar^#(x', xs', xs)) 54.28/15.53 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_5(eqExp^#(fe1, fe2)) 54.28/15.53 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.53 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.53 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.53 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.53 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.53 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.53 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.53 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.53 54.28/15.53 We are left with following problem, upon which TcT provides the 54.28/15.53 certificate YES(O(1),O(n^1)). 54.28/15.53 54.28/15.53 Strict DPs: 54.28/15.53 { lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) } 54.28/15.53 Weak DPs: 54.28/15.53 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.53 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.53 input, 54.28/15.53 f0, 54.28/15.53 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.53 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.53 , run[Let][Let]^#(p, input, f0, ef) -> c_12(lookname^#(f0, p)) 54.28/15.53 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.53 c_15(lookname^#(f, xs)) } 54.28/15.53 Weak Trs: 54.28/15.53 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.53 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.53 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.53 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.53 , !EQ(S(x), 0()) -> False() 54.28/15.53 , !EQ(0(), S(y)) -> False() 54.28/15.53 , !EQ(0(), 0()) -> True() } 54.28/15.53 Obligation: 54.28/15.53 innermost runtime complexity 54.28/15.53 Answer: 54.28/15.53 YES(O(1),O(n^1)) 54.28/15.53 54.28/15.53 Due to missing edges in the dependency-graph, the right-hand sides 54.28/15.53 of following rules could be simplified: 54.28/15.53 54.28/15.53 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.53 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.53 input, 54.28/15.53 f0, 54.28/15.53 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.53 lookbody^#(f0, Cons(Fun(f0, e), xs))) } 54.28/15.53 54.28/15.53 We are left with following problem, upon which TcT provides the 54.28/15.53 certificate YES(O(1),O(n^1)). 54.28/15.53 54.28/15.53 Strict DPs: 54.28/15.53 { lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_1(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) } 54.28/15.53 Weak DPs: 54.28/15.53 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.53 c_2(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.53 input, 54.28/15.53 f0, 54.28/15.53 lookbody(f0, Cons(Fun(f0, e), xs)))) 54.28/15.53 , run[Let][Let]^#(p, input, f0, ef) -> c_3(lookname^#(f0, p)) 54.28/15.53 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.53 c_4(lookname^#(f, xs)) } 54.28/15.53 Weak Trs: 54.28/15.53 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.53 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.53 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.53 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.53 , !EQ(S(x), 0()) -> False() 54.28/15.53 , !EQ(0(), S(y)) -> False() 54.28/15.53 , !EQ(0(), 0()) -> True() } 54.28/15.53 Obligation: 54.28/15.53 innermost runtime complexity 54.28/15.53 Answer: 54.28/15.53 YES(O(1),O(n^1)) 54.28/15.53 54.28/15.53 We use the processor 'matrix interpretation of dimension 1' to 54.28/15.53 orient following rules strictly. 54.28/15.53 54.28/15.53 DPs: 54.28/15.53 { 1: lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_1(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.53 , 2: run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.53 c_2(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.53 input, 54.28/15.53 f0, 54.28/15.53 lookbody(f0, Cons(Fun(f0, e), xs)))) } 54.28/15.53 54.28/15.53 Sub-proof: 54.28/15.53 ---------- 54.28/15.53 The following argument positions are usable: 54.28/15.53 Uargs(c_1) = {1}, Uargs(c_2) = {1}, Uargs(c_3) = {1}, 54.28/15.53 Uargs(c_4) = {1} 54.28/15.53 54.28/15.53 TcT has computed the following constructor-based matrix 54.28/15.53 interpretation satisfying not(EDA). 54.28/15.53 54.28/15.53 [True] = [4] 54.28/15.53 54.28/15.53 [Fun](x1, x2) = [0] 54.28/15.53 54.28/15.53 [lookbody](x1, x2) = [0] 54.28/15.53 54.28/15.53 [lookbody[Ite]](x1, x2, x3) = [3] x2 + [0] 54.28/15.53 54.28/15.53 [!EQ](x1, x2) = [0] 54.28/15.53 54.28/15.53 [Cons](x1, x2) = [1] x2 + [4] 54.28/15.53 54.28/15.53 [False] = [0] 54.28/15.53 54.28/15.53 [S](x1) = [1] x1 + [0] 54.28/15.53 54.28/15.53 [0] = [0] 54.28/15.53 54.28/15.53 [run^#](x1, x2) = [2] x1 + [7] x2 + [7] 54.28/15.53 54.28/15.53 [run[Let][Let]^#](x1, x2, x3, x4) = [1] x1 + [7] x2 + [4] 54.28/15.53 54.28/15.53 [lookname^#](x1, x2) = [1] x2 + [4] 54.28/15.53 54.28/15.53 [lookname[Ite]^#](x1, x2, x3) = [1] x3 + [0] 54.28/15.53 54.28/15.53 [c_1](x1) = [1] x1 + [3] 54.28/15.53 54.28/15.53 [c_2](x1) = [1] x1 + [3] 54.28/15.53 54.28/15.53 [c_3](x1) = [1] x1 + [0] 54.28/15.53 54.28/15.53 [c_4](x1) = [1] x1 + [0] 54.28/15.53 54.28/15.53 The order satisfies the following ordering constraints: 54.28/15.53 54.28/15.53 [lookbody(f, Cons(Fun(n, e), xs))] = [0] 54.28/15.53 ? [3] f + [0] 54.28/15.53 = [lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs))] 54.28/15.53 54.28/15.53 [lookbody[Ite](True(), f, Cons(Fun(n, e), xs))] = [3] f + [0] 54.28/15.53 ? [1] e + [0] 54.28/15.53 = [e] 54.28/15.53 54.28/15.53 [lookbody[Ite](False(), f, Cons(x, xs))] = [3] f + [0] 54.28/15.53 >= [0] 54.28/15.53 = [lookbody(f, xs)] 54.28/15.53 54.28/15.53 [!EQ(S(x), S(y))] = [0] 54.28/15.53 >= [0] 54.28/15.53 = [!EQ(x, y)] 54.28/15.53 54.28/15.53 [!EQ(S(x), 0())] = [0] 54.28/15.53 >= [0] 54.28/15.53 = [False()] 54.28/15.53 54.28/15.53 [!EQ(0(), S(y))] = [0] 54.28/15.53 >= [0] 54.28/15.53 = [False()] 54.28/15.53 54.28/15.53 [!EQ(0(), 0())] = [0] 54.28/15.53 ? [4] 54.28/15.53 = [True()] 54.28/15.53 54.28/15.53 [run^#(Cons(Fun(f0, e), xs), input)] = [2] xs + [7] input + [15] 54.28/15.53 > [1] xs + [7] input + [11] 54.28/15.53 = [c_2(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.53 input, 54.28/15.53 f0, 54.28/15.53 lookbody(f0, Cons(Fun(f0, e), xs))))] 54.28/15.53 54.28/15.53 [run[Let][Let]^#(p, input, f0, ef)] = [1] p + [7] input + [4] 54.28/15.53 >= [1] p + [4] 54.28/15.53 = [c_3(lookname^#(f0, p))] 54.28/15.53 54.28/15.53 [lookname^#(f, Cons(Fun(n, e), xs))] = [1] xs + [8] 54.28/15.53 > [1] xs + [7] 54.28/15.53 = [c_1(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs)))] 54.28/15.53 54.28/15.53 [lookname[Ite]^#(False(), f, Cons(x, xs))] = [1] xs + [4] 54.28/15.53 >= [1] xs + [4] 54.28/15.53 = [c_4(lookname^#(f, xs))] 54.28/15.53 54.28/15.53 54.28/15.53 We return to the main proof. Consider the set of all dependency 54.28/15.53 pairs 54.28/15.53 54.28/15.53 : 54.28/15.53 { 1: lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_1(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.53 , 2: run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.53 c_2(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.53 input, 54.28/15.53 f0, 54.28/15.53 lookbody(f0, Cons(Fun(f0, e), xs)))) 54.28/15.53 , 3: run[Let][Let]^#(p, input, f0, ef) -> c_3(lookname^#(f0, p)) 54.28/15.53 , 4: lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.53 c_4(lookname^#(f, xs)) } 54.28/15.53 54.28/15.53 Processor 'matrix interpretation of dimension 1' induces the 54.28/15.53 complexity certificate YES(?,O(n^1)) on application of dependency 54.28/15.53 pairs {1,2}. These cover all (indirect) predecessors of dependency 54.28/15.53 pairs {1,2,3,4}, their number of application is equally bounded. 54.28/15.53 The dependency pairs are shifted into the weak component. 54.28/15.53 54.28/15.53 We are left with following problem, upon which TcT provides the 54.28/15.53 certificate YES(O(1),O(1)). 54.28/15.53 54.28/15.53 Weak DPs: 54.28/15.53 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.53 c_2(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.53 input, 54.28/15.53 f0, 54.28/15.53 lookbody(f0, Cons(Fun(f0, e), xs)))) 54.28/15.53 , run[Let][Let]^#(p, input, f0, ef) -> c_3(lookname^#(f0, p)) 54.28/15.53 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_1(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.53 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.53 c_4(lookname^#(f, xs)) } 54.28/15.53 Weak Trs: 54.28/15.53 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.53 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.53 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.53 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.53 , !EQ(S(x), 0()) -> False() 54.28/15.53 , !EQ(0(), S(y)) -> False() 54.28/15.53 , !EQ(0(), 0()) -> True() } 54.28/15.53 Obligation: 54.28/15.53 innermost runtime complexity 54.28/15.53 Answer: 54.28/15.53 YES(O(1),O(1)) 54.28/15.53 54.28/15.53 The following weak DPs constitute a sub-graph of the DG that is 54.28/15.53 closed under successors. The DPs are removed. 54.28/15.53 54.28/15.53 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.53 c_2(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.53 input, 54.28/15.53 f0, 54.28/15.53 lookbody(f0, Cons(Fun(f0, e), xs)))) 54.28/15.53 , run[Let][Let]^#(p, input, f0, ef) -> c_3(lookname^#(f0, p)) 54.28/15.53 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_1(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.53 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.53 c_4(lookname^#(f, xs)) } 54.28/15.53 54.28/15.53 We are left with following problem, upon which TcT provides the 54.28/15.53 certificate YES(O(1),O(1)). 54.28/15.53 54.28/15.53 Weak Trs: 54.28/15.53 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.53 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.53 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.53 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.53 , !EQ(S(x), 0()) -> False() 54.28/15.53 , !EQ(0(), S(y)) -> False() 54.28/15.53 , !EQ(0(), 0()) -> True() } 54.28/15.53 Obligation: 54.28/15.53 innermost runtime complexity 54.28/15.53 Answer: 54.28/15.53 YES(O(1),O(1)) 54.28/15.53 54.28/15.53 No rule is usable, rules are removed from the input problem. 54.28/15.53 54.28/15.53 We are left with following problem, upon which TcT provides the 54.28/15.53 certificate YES(O(1),O(1)). 54.28/15.53 54.28/15.53 Rules: Empty 54.28/15.53 Obligation: 54.28/15.53 innermost runtime complexity 54.28/15.53 Answer: 54.28/15.53 YES(O(1),O(1)) 54.28/15.53 54.28/15.53 Empty rules are trivially bounded 54.28/15.53 54.28/15.53 S) We are left with following problem, upon which TcT provides the 54.28/15.53 certificate YES(O(1),O(n^1)). 54.28/15.53 54.28/15.53 Strict DPs: 54.28/15.53 { lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.53 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.53 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.53 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_5(eqExp^#(fe1, fe2)) 54.28/15.53 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.53 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.53 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.53 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.53 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.53 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.53 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.53 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.53 Weak DPs: 54.28/15.53 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.53 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.53 input, 54.28/15.53 f0, 54.28/15.53 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.53 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.53 , run[Let][Let]^#(p, input, f0, ef) -> c_12(lookname^#(f0, p)) 54.28/15.53 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.53 c_13(lookbody^#(f, xs)) 54.28/15.53 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.53 c_14(lookvar^#(x', xs', xs)) 54.28/15.53 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.53 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.53 c_15(lookname^#(f, xs)) } 54.28/15.53 Weak Trs: 54.28/15.53 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.53 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.53 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.53 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.53 , !EQ(S(x), 0()) -> False() 54.28/15.53 , !EQ(0(), S(y)) -> False() 54.28/15.53 , !EQ(0(), 0()) -> True() } 54.28/15.53 Obligation: 54.28/15.53 innermost runtime complexity 54.28/15.53 Answer: 54.28/15.53 YES(O(1),O(n^1)) 54.28/15.53 54.28/15.53 The following weak DPs constitute a sub-graph of the DG that is 54.28/15.53 closed under successors. The DPs are removed. 54.28/15.53 54.28/15.53 { run[Let][Let]^#(p, input, f0, ef) -> c_12(lookname^#(f0, p)) 54.28/15.53 , lookname^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_4(lookname[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.53 , lookname[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.53 c_15(lookname^#(f, xs)) } 54.28/15.53 54.28/15.53 We are left with following problem, upon which TcT provides the 54.28/15.53 certificate YES(O(1),O(n^1)). 54.28/15.53 54.28/15.53 Strict DPs: 54.28/15.53 { lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_2(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.53 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.53 c_3(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.53 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_5(eqExp^#(fe1, fe2)) 54.28/15.53 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.53 c_6(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.53 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.53 c_7(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.53 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.53 c_8(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.53 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.53 c_9(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.53 Weak DPs: 54.28/15.53 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.53 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.53 input, 54.28/15.53 f0, 54.28/15.53 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.53 lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.53 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.53 c_13(lookbody^#(f, xs)) 54.28/15.53 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.53 c_14(lookvar^#(x', xs', xs)) } 54.28/15.53 Weak Trs: 54.28/15.53 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.53 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.53 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.53 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.53 , !EQ(S(x), 0()) -> False() 54.28/15.53 , !EQ(0(), S(y)) -> False() 54.28/15.53 , !EQ(0(), 0()) -> True() } 54.28/15.53 Obligation: 54.28/15.53 innermost runtime complexity 54.28/15.53 Answer: 54.28/15.53 YES(O(1),O(n^1)) 54.28/15.53 54.28/15.53 Due to missing edges in the dependency-graph, the right-hand sides 54.28/15.53 of following rules could be simplified: 54.28/15.53 54.28/15.53 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.53 c_1(run[Let][Let]^#(Cons(Fun(f0, e), xs), 54.28/15.53 input, 54.28/15.53 f0, 54.28/15.53 lookbody(f0, Cons(Fun(f0, e), xs))), 54.28/15.53 lookbody^#(f0, Cons(Fun(f0, e), xs))) } 54.28/15.53 54.28/15.53 We are left with following problem, upon which TcT provides the 54.28/15.53 certificate YES(O(1),O(n^1)). 54.28/15.53 54.28/15.53 Strict DPs: 54.28/15.53 { lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.53 c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.53 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.54 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.54 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_3(eqExp^#(fe1, fe2)) 54.28/15.54 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.54 c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.54 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.54 c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.54 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.54 c_6(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.54 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.54 c_7(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.54 Weak DPs: 54.28/15.54 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.54 c_8(lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.54 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.54 c_9(lookbody^#(f, xs)) 54.28/15.54 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.54 c_10(lookvar^#(x', xs', xs)) } 54.28/15.54 Weak Trs: 54.28/15.54 { lookbody(f, Cons(Fun(n, e), xs)) -> 54.28/15.54 lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 54.28/15.54 , lookbody[Ite](True(), f, Cons(Fun(n, e), xs)) -> e 54.28/15.54 , lookbody[Ite](False(), f, Cons(x, xs)) -> lookbody(f, xs) 54.28/15.54 , !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.54 , !EQ(S(x), 0()) -> False() 54.28/15.54 , !EQ(0(), S(y)) -> False() 54.28/15.54 , !EQ(0(), 0()) -> True() } 54.28/15.54 Obligation: 54.28/15.54 innermost runtime complexity 54.28/15.54 Answer: 54.28/15.54 YES(O(1),O(n^1)) 54.28/15.54 54.28/15.54 We replace rewrite rules by usable rules: 54.28/15.54 54.28/15.54 Weak Usable Rules: 54.28/15.54 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.54 , !EQ(S(x), 0()) -> False() 54.28/15.54 , !EQ(0(), S(y)) -> False() 54.28/15.54 , !EQ(0(), 0()) -> True() } 54.28/15.54 54.28/15.54 We are left with following problem, upon which TcT provides the 54.28/15.54 certificate YES(O(1),O(n^1)). 54.28/15.54 54.28/15.54 Strict DPs: 54.28/15.54 { lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.54 c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.54 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.54 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.54 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_3(eqExp^#(fe1, fe2)) 54.28/15.54 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.54 c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.54 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.54 c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.54 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.54 c_6(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.54 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.54 c_7(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.54 Weak DPs: 54.28/15.54 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.54 c_8(lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.54 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.54 c_9(lookbody^#(f, xs)) 54.28/15.54 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.54 c_10(lookvar^#(x', xs', xs)) } 54.28/15.54 Weak Trs: 54.28/15.54 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.54 , !EQ(S(x), 0()) -> False() 54.28/15.54 , !EQ(0(), S(y)) -> False() 54.28/15.54 , !EQ(0(), 0()) -> True() } 54.28/15.54 Obligation: 54.28/15.54 innermost runtime complexity 54.28/15.54 Answer: 54.28/15.54 YES(O(1),O(n^1)) 54.28/15.54 54.28/15.54 We analyse the complexity of following sub-problems (R) and (S). 54.28/15.54 Problem (S) is obtained from the input problem by shifting strict 54.28/15.54 rules from (R) into the weak component: 54.28/15.54 54.28/15.54 Problem (R): 54.28/15.54 ------------ 54.28/15.54 Strict DPs: 54.28/15.54 { lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.54 c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) } 54.28/15.54 Weak DPs: 54.28/15.54 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.54 c_8(lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.54 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.54 c_9(lookbody^#(f, xs)) 54.28/15.54 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.54 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.54 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.54 c_10(lookvar^#(x', xs', xs)) 54.28/15.54 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_3(eqExp^#(fe1, fe2)) 54.28/15.54 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.54 c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.54 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.54 c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.54 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.54 c_6(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.54 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.54 c_7(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.54 Weak Trs: 54.28/15.54 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.54 , !EQ(S(x), 0()) -> False() 54.28/15.54 , !EQ(0(), S(y)) -> False() 54.28/15.54 , !EQ(0(), 0()) -> True() } 54.28/15.54 StartTerms: basic terms 54.28/15.54 Strategy: innermost 54.28/15.54 54.28/15.54 Problem (S): 54.28/15.54 ------------ 54.28/15.54 Strict DPs: 54.28/15.54 { lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.54 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.54 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_3(eqExp^#(fe1, fe2)) 54.28/15.54 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.54 c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.54 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.54 c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.54 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.54 c_6(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.54 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.54 c_7(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.54 Weak DPs: 54.28/15.54 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.54 c_8(lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.54 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.54 c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.54 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.54 c_9(lookbody^#(f, xs)) 54.28/15.54 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.54 c_10(lookvar^#(x', xs', xs)) } 54.28/15.54 Weak Trs: 54.28/15.54 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.54 , !EQ(S(x), 0()) -> False() 54.28/15.54 , !EQ(0(), S(y)) -> False() 54.28/15.54 , !EQ(0(), 0()) -> True() } 54.28/15.54 StartTerms: basic terms 54.28/15.54 Strategy: innermost 54.28/15.54 54.28/15.54 Overall, the transformation results in the following sub-problem(s): 54.28/15.54 54.28/15.54 Generated new problems: 54.28/15.54 ----------------------- 54.28/15.54 R) Strict DPs: 54.28/15.54 { lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.54 c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) } 54.28/15.54 Weak DPs: 54.28/15.54 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.54 c_8(lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.54 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.54 c_9(lookbody^#(f, xs)) 54.28/15.54 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.54 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.54 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.54 c_10(lookvar^#(x', xs', xs)) 54.28/15.54 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_3(eqExp^#(fe1, fe2)) 54.28/15.54 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.54 c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.54 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.54 c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.54 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.54 c_6(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.54 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.54 c_7(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.54 Weak Trs: 54.28/15.54 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.54 , !EQ(S(x), 0()) -> False() 54.28/15.54 , !EQ(0(), S(y)) -> False() 54.28/15.54 , !EQ(0(), 0()) -> True() } 54.28/15.54 StartTerms: basic terms 54.28/15.54 Strategy: innermost 54.28/15.54 54.28/15.54 This problem was proven YES(O(1),O(n^1)). 54.28/15.54 54.28/15.54 S) Strict DPs: 54.28/15.54 { lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.54 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.54 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_3(eqExp^#(fe1, fe2)) 54.28/15.54 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.54 c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.54 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.54 c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.54 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.54 c_6(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.54 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.54 c_7(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.54 Weak DPs: 54.28/15.54 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.54 c_8(lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.54 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.54 c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.54 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.54 c_9(lookbody^#(f, xs)) 54.28/15.54 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.54 c_10(lookvar^#(x', xs', xs)) } 54.28/15.54 Weak Trs: 54.28/15.54 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.54 , !EQ(S(x), 0()) -> False() 54.28/15.54 , !EQ(0(), S(y)) -> False() 54.28/15.54 , !EQ(0(), 0()) -> True() } 54.28/15.54 StartTerms: basic terms 54.28/15.54 Strategy: innermost 54.28/15.54 54.28/15.54 This problem was proven YES(O(1),O(n^1)). 54.28/15.54 54.28/15.54 54.28/15.54 Proofs for generated problems: 54.28/15.54 ------------------------------ 54.28/15.54 R) We are left with following problem, upon which TcT provides the 54.28/15.54 certificate YES(O(1),O(n^1)). 54.28/15.54 54.28/15.54 Strict DPs: 54.28/15.54 { lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.54 c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) } 54.28/15.54 Weak DPs: 54.28/15.54 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.54 c_8(lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.54 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.54 c_9(lookbody^#(f, xs)) 54.28/15.54 , lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.54 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.54 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.54 c_10(lookvar^#(x', xs', xs)) 54.28/15.54 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_3(eqExp^#(fe1, fe2)) 54.28/15.54 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.54 c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.54 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.54 c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.54 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.54 c_6(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.54 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.54 c_7(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.54 Weak Trs: 54.28/15.54 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.54 , !EQ(S(x), 0()) -> False() 54.28/15.54 , !EQ(0(), S(y)) -> False() 54.28/15.54 , !EQ(0(), 0()) -> True() } 54.28/15.54 Obligation: 54.28/15.54 innermost runtime complexity 54.28/15.54 Answer: 54.28/15.54 YES(O(1),O(n^1)) 54.28/15.54 54.28/15.54 The following weak DPs constitute a sub-graph of the DG that is 54.28/15.54 closed under successors. The DPs are removed. 54.28/15.54 54.28/15.54 { lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.54 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.54 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.54 c_10(lookvar^#(x', xs', xs)) 54.28/15.54 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_3(eqExp^#(fe1, fe2)) 54.28/15.54 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.54 c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.54 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.54 c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.54 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.54 c_6(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.54 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.54 c_7(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.54 54.28/15.54 We are left with following problem, upon which TcT provides the 54.28/15.54 certificate YES(O(1),O(n^1)). 54.28/15.54 54.28/15.54 Strict DPs: 54.28/15.54 { lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.54 c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) } 54.28/15.54 Weak DPs: 54.28/15.54 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.54 c_8(lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.54 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.54 c_9(lookbody^#(f, xs)) } 54.28/15.54 Weak Trs: 54.28/15.54 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.54 , !EQ(S(x), 0()) -> False() 54.28/15.54 , !EQ(0(), S(y)) -> False() 54.28/15.54 , !EQ(0(), 0()) -> True() } 54.28/15.54 Obligation: 54.28/15.54 innermost runtime complexity 54.28/15.54 Answer: 54.28/15.54 YES(O(1),O(n^1)) 54.28/15.54 54.28/15.54 We use the processor 'matrix interpretation of dimension 1' to 54.28/15.54 orient following rules strictly. 54.28/15.54 54.28/15.54 DPs: 54.28/15.54 { 1: lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.54 c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.54 , 2: run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.54 c_8(lookbody^#(f0, Cons(Fun(f0, e), xs))) } 54.28/15.54 54.28/15.54 Sub-proof: 54.28/15.54 ---------- 54.28/15.54 The following argument positions are usable: 54.28/15.54 Uargs(c_1) = {1}, Uargs(c_8) = {1}, Uargs(c_9) = {1} 54.28/15.54 54.28/15.54 TcT has computed the following constructor-based matrix 54.28/15.54 interpretation satisfying not(EDA). 54.28/15.54 54.28/15.54 [True] = [7] 54.28/15.54 54.28/15.54 [Fun](x1, x2) = [0] 54.28/15.54 54.28/15.54 [!EQ](x1, x2) = [0] 54.28/15.54 54.28/15.54 [Cons](x1, x2) = [1] x2 + [4] 54.28/15.54 54.28/15.54 [False] = [0] 54.28/15.54 54.28/15.54 [S](x1) = [1] x1 + [0] 54.28/15.54 54.28/15.54 [0] = [0] 54.28/15.54 54.28/15.54 [run^#](x1, x2) = [2] x1 + [7] x2 + [7] 54.28/15.54 54.28/15.54 [lookbody^#](x1, x2) = [1] x2 + [4] 54.28/15.54 54.28/15.54 [lookbody[Ite]^#](x1, x2, x3) = [1] x3 + [0] 54.28/15.54 54.28/15.54 [c_1](x1) = [1] x1 + [1] 54.28/15.54 54.28/15.54 [c_8](x1) = [1] x1 + [3] 54.28/15.54 54.28/15.54 [c_9](x1) = [1] x1 + [0] 54.28/15.54 54.28/15.54 The order satisfies the following ordering constraints: 54.28/15.54 54.28/15.54 [!EQ(S(x), S(y))] = [0] 54.28/15.54 >= [0] 54.28/15.54 = [!EQ(x, y)] 54.28/15.54 54.28/15.54 [!EQ(S(x), 0())] = [0] 54.28/15.54 >= [0] 54.28/15.54 = [False()] 54.28/15.54 54.28/15.54 [!EQ(0(), S(y))] = [0] 54.28/15.54 >= [0] 54.28/15.54 = [False()] 54.28/15.54 54.28/15.54 [!EQ(0(), 0())] = [0] 54.28/15.54 ? [7] 54.28/15.54 = [True()] 54.28/15.54 54.28/15.54 [run^#(Cons(Fun(f0, e), xs), input)] = [2] xs + [7] input + [15] 54.28/15.54 > [1] xs + [11] 54.28/15.54 = [c_8(lookbody^#(f0, Cons(Fun(f0, e), xs)))] 54.28/15.54 54.28/15.54 [lookbody^#(f, Cons(Fun(n, e), xs))] = [1] xs + [8] 54.28/15.54 > [1] xs + [5] 54.28/15.54 = [c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs)))] 54.28/15.54 54.28/15.54 [lookbody[Ite]^#(False(), f, Cons(x, xs))] = [1] xs + [4] 54.28/15.54 >= [1] xs + [4] 54.28/15.54 = [c_9(lookbody^#(f, xs))] 54.28/15.54 54.28/15.54 54.28/15.54 We return to the main proof. Consider the set of all dependency 54.28/15.54 pairs 54.28/15.54 54.28/15.54 : 54.28/15.54 { 1: lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.54 c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.54 , 2: run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.54 c_8(lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.54 , 3: lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.54 c_9(lookbody^#(f, xs)) } 54.28/15.54 54.28/15.54 Processor 'matrix interpretation of dimension 1' induces the 54.28/15.54 complexity certificate YES(?,O(n^1)) on application of dependency 54.28/15.54 pairs {1,2}. These cover all (indirect) predecessors of dependency 54.28/15.54 pairs {1,2,3}, their number of application is equally bounded. The 54.28/15.54 dependency pairs are shifted into the weak component. 54.28/15.54 54.28/15.54 We are left with following problem, upon which TcT provides the 54.28/15.54 certificate YES(O(1),O(1)). 54.28/15.54 54.28/15.54 Weak DPs: 54.28/15.54 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.54 c_8(lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.54 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.54 c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.54 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.54 c_9(lookbody^#(f, xs)) } 54.28/15.54 Weak Trs: 54.28/15.54 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.54 , !EQ(S(x), 0()) -> False() 54.28/15.54 , !EQ(0(), S(y)) -> False() 54.28/15.54 , !EQ(0(), 0()) -> True() } 54.28/15.54 Obligation: 54.28/15.54 innermost runtime complexity 54.28/15.54 Answer: 54.28/15.54 YES(O(1),O(1)) 54.28/15.54 54.28/15.54 The following weak DPs constitute a sub-graph of the DG that is 54.28/15.54 closed under successors. The DPs are removed. 54.28/15.54 54.28/15.54 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.54 c_8(lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.54 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.54 c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.54 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.54 c_9(lookbody^#(f, xs)) } 54.28/15.54 54.28/15.54 We are left with following problem, upon which TcT provides the 54.28/15.54 certificate YES(O(1),O(1)). 54.28/15.54 54.28/15.54 Weak Trs: 54.28/15.54 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.54 , !EQ(S(x), 0()) -> False() 54.28/15.54 , !EQ(0(), S(y)) -> False() 54.28/15.54 , !EQ(0(), 0()) -> True() } 54.28/15.54 Obligation: 54.28/15.54 innermost runtime complexity 54.28/15.54 Answer: 54.28/15.54 YES(O(1),O(1)) 54.28/15.54 54.28/15.54 No rule is usable, rules are removed from the input problem. 54.28/15.54 54.28/15.54 We are left with following problem, upon which TcT provides the 54.28/15.54 certificate YES(O(1),O(1)). 54.28/15.54 54.28/15.54 Rules: Empty 54.28/15.54 Obligation: 54.28/15.54 innermost runtime complexity 54.28/15.54 Answer: 54.28/15.54 YES(O(1),O(1)) 54.28/15.54 54.28/15.54 Empty rules are trivially bounded 54.28/15.54 54.28/15.54 S) We are left with following problem, upon which TcT provides the 54.28/15.54 certificate YES(O(1),O(n^1)). 54.28/15.54 54.28/15.54 Strict DPs: 54.28/15.54 { lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.54 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.54 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_3(eqExp^#(fe1, fe2)) 54.28/15.54 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.54 c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.54 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.54 c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.54 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.54 c_6(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.54 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.54 c_7(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.54 Weak DPs: 54.28/15.54 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.54 c_8(lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.54 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.54 c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.54 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.54 c_9(lookbody^#(f, xs)) 54.28/15.54 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.54 c_10(lookvar^#(x', xs', xs)) } 54.28/15.54 Weak Trs: 54.28/15.54 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.54 , !EQ(S(x), 0()) -> False() 54.28/15.54 , !EQ(0(), S(y)) -> False() 54.28/15.54 , !EQ(0(), 0()) -> True() } 54.28/15.54 Obligation: 54.28/15.54 innermost runtime complexity 54.28/15.54 Answer: 54.28/15.54 YES(O(1),O(n^1)) 54.28/15.54 54.28/15.54 The following weak DPs constitute a sub-graph of the DG that is 54.28/15.54 closed under successors. The DPs are removed. 54.28/15.54 54.28/15.54 { run^#(Cons(Fun(f0, e), xs), input) -> 54.28/15.54 c_8(lookbody^#(f0, Cons(Fun(f0, e), xs))) 54.28/15.54 , lookbody^#(f, Cons(Fun(n, e), xs)) -> 54.28/15.54 c_1(lookbody[Ite]^#(!EQ(f, n), f, Cons(Fun(n, e), xs))) 54.28/15.54 , lookbody[Ite]^#(False(), f, Cons(x, xs)) -> 54.28/15.54 c_9(lookbody^#(f, xs)) } 54.28/15.54 54.28/15.54 We are left with following problem, upon which TcT provides the 54.28/15.54 certificate YES(O(1),O(n^1)). 54.28/15.54 54.28/15.54 Strict DPs: 54.28/15.54 { lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.54 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.54 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_3(eqExp^#(fe1, fe2)) 54.28/15.54 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.54 c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.54 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.54 c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.54 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.54 c_6(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.54 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.54 c_7(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.54 Weak DPs: 54.28/15.54 { lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.54 c_10(lookvar^#(x', xs', xs)) } 54.28/15.54 Weak Trs: 54.28/15.54 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.54 , !EQ(S(x), 0()) -> False() 54.28/15.54 , !EQ(0(), S(y)) -> False() 54.28/15.54 , !EQ(0(), 0()) -> True() } 54.28/15.54 Obligation: 54.28/15.54 innermost runtime complexity 54.28/15.54 Answer: 54.28/15.54 YES(O(1),O(n^1)) 54.28/15.54 54.28/15.54 We use the processor 'matrix interpretation of dimension 1' to 54.28/15.54 orient following rules strictly. 54.28/15.54 54.28/15.54 DPs: 54.28/15.54 { 6: eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.54 c_7(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.54 54.28/15.54 Sub-proof: 54.28/15.54 ---------- 54.28/15.54 The following argument positions are usable: 54.28/15.54 Uargs(c_2) = {1}, Uargs(c_3) = {1}, Uargs(c_4) = {1, 2, 3}, 54.28/15.54 Uargs(c_5) = {1, 2}, Uargs(c_6) = {1, 2}, Uargs(c_7) = {1, 2}, 54.28/15.54 Uargs(c_10) = {1} 54.28/15.54 54.28/15.54 TcT has computed the following constructor-based matrix 54.28/15.54 interpretation satisfying not(EDA). 54.28/15.54 54.28/15.54 [True] = [7] 54.28/15.54 54.28/15.54 [Fun](x1, x2) = [1] x1 + [1] x2 + [0] 54.28/15.54 54.28/15.54 [ITE](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 54.28/15.54 54.28/15.54 [!EQ](x1, x2) = [0] 54.28/15.54 54.28/15.54 [Eq](x1, x2) = [1] x1 + [1] x2 + [0] 54.28/15.54 54.28/15.54 [Error](x1, x2) = [1] x1 + [1] x2 + [0] 54.28/15.54 54.28/15.54 [Cons](x1, x2) = [0] 54.28/15.54 54.28/15.54 [Bsf](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [4] 54.28/15.54 54.28/15.54 [False] = [0] 54.28/15.54 54.28/15.54 [S](x1) = [1] x1 + [0] 54.28/15.54 54.28/15.54 [0] = [0] 54.28/15.54 54.28/15.54 [lookvar^#](x1, x2, x3) = [0] 54.28/15.54 54.28/15.54 [lookvar[Ite]^#](x1, x2, x3, x4) = [0] 54.28/15.54 54.28/15.54 [eqExp^#](x1, x2) = [2] x2 + [0] 54.28/15.54 54.28/15.54 [c_2](x1) = [1] x1 + [0] 54.28/15.54 54.28/15.54 [c_3](x1) = [1] x1 + [0] 54.28/15.54 54.28/15.54 [c_4](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 54.28/15.54 54.28/15.54 [c_5](x1, x2) = [1] x1 + [1] x2 + [0] 54.28/15.54 54.28/15.54 [c_6](x1, x2) = [1] x1 + [1] x2 + [0] 54.28/15.54 54.28/15.54 [c_7](x1, x2) = [1] x1 + [1] x2 + [1] 54.28/15.54 54.28/15.54 [c_10](x1) = [4] x1 + [0] 54.28/15.54 54.28/15.54 The order satisfies the following ordering constraints: 54.28/15.54 54.28/15.54 [!EQ(S(x), S(y))] = [0] 54.28/15.54 >= [0] 54.28/15.54 = [!EQ(x, y)] 54.28/15.54 54.28/15.54 [!EQ(S(x), 0())] = [0] 54.28/15.54 >= [0] 54.28/15.54 = [False()] 54.28/15.54 54.28/15.54 [!EQ(0(), S(y))] = [0] 54.28/15.54 >= [0] 54.28/15.54 = [False()] 54.28/15.54 54.28/15.54 [!EQ(0(), 0())] = [0] 54.28/15.54 ? [7] 54.28/15.54 = [True()] 54.28/15.54 54.28/15.54 [lookvar^#(x', Cons(x, xs), vs)] = [0] 54.28/15.54 >= [0] 54.28/15.54 = [c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs))] 54.28/15.54 54.28/15.54 [lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs))] = [0] 54.28/15.54 >= [0] 54.28/15.54 = [c_10(lookvar^#(x', xs', xs))] 54.28/15.54 54.28/15.54 [eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2))] = [2] fn2 + [2] fe2 + [0] 54.28/15.54 >= [2] fe2 + [0] 54.28/15.54 = [c_3(eqExp^#(fe1, fe2))] 54.28/15.54 54.28/15.54 [eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2))] = [2] i2 + [2] t2 + [2] e2 + [0] 54.28/15.54 >= [2] i2 + [2] t2 + [2] e2 + [0] 54.28/15.54 = [c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2))] 54.28/15.54 54.28/15.54 [eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22))] = [2] eq21 + [2] eq22 + [0] 54.28/15.54 >= [2] eq21 + [2] eq22 + [0] 54.28/15.54 = [c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22))] 54.28/15.54 54.28/15.54 [eqExp^#(Error(e11, e12), Error(e21, e22))] = [2] e21 + [2] e22 + [0] 54.28/15.54 >= [2] e21 + [2] e22 + [0] 54.28/15.54 = [c_6(eqExp^#(e11, e21), eqExp^#(e12, e22))] 54.28/15.54 54.28/15.54 [eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22))] = [2] b21 + [2] b22 + [2] o2 + [8] 54.28/15.54 > [2] b21 + [2] b22 + [1] 54.28/15.54 = [c_7(eqExp^#(b11, b21), eqExp^#(b12, b22))] 54.28/15.54 54.28/15.54 54.28/15.54 The strictly oriented rules are moved into the weak component. 54.28/15.54 54.28/15.54 We are left with following problem, upon which TcT provides the 54.28/15.54 certificate YES(O(1),O(n^1)). 54.28/15.54 54.28/15.54 Strict DPs: 54.28/15.54 { lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.54 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.54 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_3(eqExp^#(fe1, fe2)) 54.28/15.54 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.54 c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.54 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.54 c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.54 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.54 c_6(eqExp^#(e11, e21), eqExp^#(e12, e22)) } 54.28/15.54 Weak DPs: 54.28/15.54 { lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.54 c_10(lookvar^#(x', xs', xs)) 54.28/15.54 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.54 c_7(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.54 Weak Trs: 54.28/15.54 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.54 , !EQ(S(x), 0()) -> False() 54.28/15.54 , !EQ(0(), S(y)) -> False() 54.28/15.54 , !EQ(0(), 0()) -> True() } 54.28/15.54 Obligation: 54.28/15.54 innermost runtime complexity 54.28/15.54 Answer: 54.28/15.54 YES(O(1),O(n^1)) 54.28/15.54 54.28/15.54 We use the processor 'matrix interpretation of dimension 1' to 54.28/15.54 orient following rules strictly. 54.28/15.54 54.28/15.54 DPs: 54.28/15.54 { 2: eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> 54.28/15.54 c_3(eqExp^#(fe1, fe2)) 54.28/15.54 , 3: eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.54 c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.54 , 4: eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.54 c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.54 , 5: eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.54 c_6(eqExp^#(e11, e21), eqExp^#(e12, e22)) } 54.28/15.54 54.28/15.54 Sub-proof: 54.28/15.54 ---------- 54.28/15.54 The following argument positions are usable: 54.28/15.54 Uargs(c_2) = {1}, Uargs(c_3) = {1}, Uargs(c_4) = {1, 2, 3}, 54.28/15.54 Uargs(c_5) = {1, 2}, Uargs(c_6) = {1, 2}, Uargs(c_7) = {1, 2}, 54.28/15.54 Uargs(c_10) = {1} 54.28/15.54 54.28/15.54 TcT has computed the following constructor-based matrix 54.28/15.54 interpretation satisfying not(EDA). 54.28/15.54 54.28/15.54 [True] = [6] 54.28/15.54 54.28/15.54 [Fun](x1, x2) = [1] x1 + [1] x2 + [4] 54.28/15.54 54.28/15.54 [ITE](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [4] 54.28/15.54 54.28/15.54 [!EQ](x1, x2) = [0] 54.28/15.54 54.28/15.54 [Eq](x1, x2) = [1] x1 + [1] x2 + [4] 54.28/15.54 54.28/15.54 [Error](x1, x2) = [1] x1 + [1] x2 + [4] 54.28/15.54 54.28/15.54 [Cons](x1, x2) = [0] 54.28/15.54 54.28/15.54 [Bsf](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 54.28/15.54 54.28/15.54 [False] = [0] 54.28/15.54 54.28/15.54 [S](x1) = [1] x1 + [0] 54.28/15.54 54.28/15.54 [0] = [0] 54.28/15.54 54.28/15.54 [lookvar^#](x1, x2, x3) = [0] 54.28/15.54 54.28/15.54 [lookvar[Ite]^#](x1, x2, x3, x4) = [0] 54.28/15.54 54.28/15.54 [eqExp^#](x1, x2) = [1] x1 + [0] 54.28/15.54 54.28/15.54 [c_2](x1) = [4] x1 + [0] 54.28/15.54 54.28/15.54 [c_3](x1) = [1] x1 + [3] 54.28/15.54 54.28/15.54 [c_4](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [3] 54.28/15.54 54.28/15.54 [c_5](x1, x2) = [1] x1 + [1] x2 + [3] 54.28/15.54 54.28/15.54 [c_6](x1, x2) = [1] x1 + [1] x2 + [1] 54.28/15.54 54.28/15.54 [c_7](x1, x2) = [1] x1 + [1] x2 + [0] 54.28/15.54 54.28/15.54 [c_10](x1) = [2] x1 + [0] 54.28/15.54 54.28/15.54 The order satisfies the following ordering constraints: 54.28/15.54 54.28/15.54 [!EQ(S(x), S(y))] = [0] 54.28/15.54 >= [0] 54.28/15.54 = [!EQ(x, y)] 54.28/15.54 54.28/15.54 [!EQ(S(x), 0())] = [0] 54.28/15.54 >= [0] 54.28/15.54 = [False()] 54.28/15.54 54.28/15.54 [!EQ(0(), S(y))] = [0] 54.28/15.54 >= [0] 54.28/15.54 = [False()] 54.28/15.54 54.28/15.54 [!EQ(0(), 0())] = [0] 54.28/15.54 ? [6] 54.28/15.54 = [True()] 54.28/15.54 54.28/15.54 [lookvar^#(x', Cons(x, xs), vs)] = [0] 54.28/15.54 >= [0] 54.28/15.54 = [c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs))] 54.28/15.54 54.28/15.54 [lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs))] = [0] 54.28/15.54 >= [0] 54.28/15.54 = [c_10(lookvar^#(x', xs', xs))] 54.28/15.55 54.28/15.55 [eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2))] = [1] fn1 + [1] fe1 + [4] 54.28/15.55 > [1] fe1 + [3] 54.28/15.55 = [c_3(eqExp^#(fe1, fe2))] 54.28/15.55 54.28/15.55 [eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2))] = [1] i1 + [1] t1 + [1] e1 + [4] 54.28/15.55 > [1] i1 + [1] t1 + [1] e1 + [3] 54.28/15.55 = [c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2))] 54.28/15.55 54.28/15.55 [eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22))] = [1] eq11 + [1] eq12 + [4] 54.28/15.55 > [1] eq11 + [1] eq12 + [3] 54.28/15.55 = [c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22))] 54.28/15.55 54.28/15.55 [eqExp^#(Error(e11, e12), Error(e21, e22))] = [1] e11 + [1] e12 + [4] 54.28/15.55 > [1] e11 + [1] e12 + [1] 54.28/15.55 = [c_6(eqExp^#(e11, e21), eqExp^#(e12, e22))] 54.28/15.55 54.28/15.55 [eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22))] = [1] b11 + [1] b12 + [1] o1 + [0] 54.28/15.55 >= [1] b11 + [1] b12 + [0] 54.28/15.55 = [c_7(eqExp^#(b11, b21), eqExp^#(b12, b22))] 54.28/15.55 54.28/15.55 54.28/15.55 The strictly oriented rules are moved into the weak component. 54.28/15.55 54.28/15.55 We are left with following problem, upon which TcT provides the 54.28/15.55 certificate YES(O(1),O(n^1)). 54.28/15.55 54.28/15.55 Strict DPs: 54.28/15.55 { lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.55 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) } 54.28/15.55 Weak DPs: 54.28/15.55 { lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.55 c_10(lookvar^#(x', xs', xs)) 54.28/15.55 , eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_3(eqExp^#(fe1, fe2)) 54.28/15.55 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.55 c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.55 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.55 c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.55 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.55 c_6(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.55 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.55 c_7(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.55 Weak Trs: 54.28/15.55 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.55 , !EQ(S(x), 0()) -> False() 54.28/15.55 , !EQ(0(), S(y)) -> False() 54.28/15.55 , !EQ(0(), 0()) -> True() } 54.28/15.55 Obligation: 54.28/15.55 innermost runtime complexity 54.28/15.55 Answer: 54.28/15.55 YES(O(1),O(n^1)) 54.28/15.55 54.28/15.55 The following weak DPs constitute a sub-graph of the DG that is 54.28/15.55 closed under successors. The DPs are removed. 54.28/15.55 54.28/15.55 { eqExp^#(Fun(fn1, fe1), Fun(fn2, fe2)) -> c_3(eqExp^#(fe1, fe2)) 54.28/15.55 , eqExp^#(ITE(i1, t1, e1), ITE(i2, t2, e2)) -> 54.28/15.55 c_4(eqExp^#(i1, i2), eqExp^#(t1, t2), eqExp^#(e1, e2)) 54.28/15.55 , eqExp^#(Eq(eq11, eq12), Eq(eq21, eq22)) -> 54.28/15.55 c_5(eqExp^#(eq11, eq21), eqExp^#(eq12, eq22)) 54.28/15.55 , eqExp^#(Error(e11, e12), Error(e21, e22)) -> 54.28/15.55 c_6(eqExp^#(e11, e21), eqExp^#(e12, e22)) 54.28/15.55 , eqExp^#(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) -> 54.28/15.55 c_7(eqExp^#(b11, b21), eqExp^#(b12, b22)) } 54.28/15.55 54.28/15.55 We are left with following problem, upon which TcT provides the 54.28/15.55 certificate YES(O(1),O(n^1)). 54.28/15.55 54.28/15.55 Strict DPs: 54.28/15.55 { lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.55 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) } 54.28/15.55 Weak DPs: 54.28/15.55 { lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.55 c_10(lookvar^#(x', xs', xs)) } 54.28/15.55 Weak Trs: 54.28/15.55 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.55 , !EQ(S(x), 0()) -> False() 54.28/15.55 , !EQ(0(), S(y)) -> False() 54.28/15.55 , !EQ(0(), 0()) -> True() } 54.28/15.55 Obligation: 54.28/15.55 innermost runtime complexity 54.28/15.55 Answer: 54.28/15.55 YES(O(1),O(n^1)) 54.28/15.55 54.28/15.55 We use the processor 'matrix interpretation of dimension 1' to 54.28/15.55 orient following rules strictly. 54.28/15.55 54.28/15.55 DPs: 54.28/15.55 { 1: lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.55 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) } 54.28/15.55 54.28/15.55 Sub-proof: 54.28/15.55 ---------- 54.28/15.55 The following argument positions are usable: 54.28/15.55 Uargs(c_2) = {1}, Uargs(c_10) = {1} 54.28/15.55 54.28/15.55 TcT has computed the following constructor-based matrix 54.28/15.55 interpretation satisfying not(EDA). 54.28/15.55 54.28/15.55 [True] = [7] 54.28/15.55 54.28/15.55 [Fun](x1, x2) = [1] x1 + [1] x2 + [0] 54.28/15.55 54.28/15.55 [ITE](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 54.28/15.55 54.28/15.55 [!EQ](x1, x2) = [0] 54.28/15.55 54.28/15.55 [Eq](x1, x2) = [1] x1 + [1] x2 + [0] 54.28/15.55 54.28/15.55 [Error](x1, x2) = [1] x1 + [1] x2 + [0] 54.28/15.55 54.28/15.55 [Cons](x1, x2) = [1] x2 + [4] 54.28/15.55 54.28/15.55 [Bsf](x1, x2, x3) = [1] x1 + [1] x2 + [1] x3 + [0] 54.28/15.55 54.28/15.55 [False] = [0] 54.28/15.55 54.28/15.55 [S](x1) = [1] x1 + [0] 54.28/15.55 54.28/15.55 [0] = [0] 54.28/15.55 54.28/15.55 [lookvar^#](x1, x2, x3) = [1] x2 + [4] 54.28/15.55 54.28/15.55 [lookvar[Ite]^#](x1, x2, x3, x4) = [1] x3 + [0] 54.28/15.55 54.28/15.55 [eqExp^#](x1, x2) = [7] x1 + [7] x2 + [0] 54.28/15.55 54.28/15.55 [c_2](x1) = [1] x1 + [1] 54.28/15.55 54.28/15.55 [c_3](x1) = [7] x1 + [0] 54.28/15.55 54.28/15.55 [c_4](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [0] 54.28/15.55 54.28/15.55 [c_5](x1, x2) = [7] x1 + [7] x2 + [0] 54.28/15.55 54.28/15.55 [c_6](x1, x2) = [7] x1 + [7] x2 + [0] 54.28/15.55 54.28/15.55 [c_7](x1, x2) = [7] x1 + [7] x2 + [0] 54.28/15.55 54.28/15.55 [c_10](x1) = [1] x1 + [0] 54.28/15.55 54.28/15.55 The order satisfies the following ordering constraints: 54.28/15.55 54.28/15.55 [!EQ(S(x), S(y))] = [0] 54.28/15.55 >= [0] 54.28/15.55 = [!EQ(x, y)] 54.28/15.55 54.28/15.55 [!EQ(S(x), 0())] = [0] 54.28/15.55 >= [0] 54.28/15.55 = [False()] 54.28/15.55 54.28/15.55 [!EQ(0(), S(y))] = [0] 54.28/15.55 >= [0] 54.28/15.55 = [False()] 54.28/15.55 54.28/15.55 [!EQ(0(), 0())] = [0] 54.28/15.55 ? [7] 54.28/15.55 = [True()] 54.28/15.55 54.28/15.55 [lookvar^#(x', Cons(x, xs), vs)] = [1] xs + [8] 54.28/15.55 > [1] xs + [5] 54.28/15.55 = [c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs))] 54.28/15.55 54.28/15.55 [lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs))] = [1] xs' + [4] 54.28/15.55 >= [1] xs' + [4] 54.28/15.55 = [c_10(lookvar^#(x', xs', xs))] 54.28/15.55 54.28/15.55 54.28/15.55 We return to the main proof. Consider the set of all dependency 54.28/15.55 pairs 54.28/15.55 54.28/15.55 : 54.28/15.55 { 1: lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.55 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.55 , 2: lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.55 c_10(lookvar^#(x', xs', xs)) } 54.28/15.55 54.28/15.55 Processor 'matrix interpretation of dimension 1' induces the 54.28/15.55 complexity certificate YES(?,O(n^1)) on application of dependency 54.28/15.55 pairs {1}. These cover all (indirect) predecessors of dependency 54.28/15.55 pairs {1,2}, their number of application is equally bounded. The 54.28/15.55 dependency pairs are shifted into the weak component. 54.28/15.55 54.28/15.55 We are left with following problem, upon which TcT provides the 54.28/15.55 certificate YES(O(1),O(1)). 54.28/15.55 54.28/15.55 Weak DPs: 54.28/15.55 { lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.55 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.55 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.55 c_10(lookvar^#(x', xs', xs)) } 54.28/15.55 Weak Trs: 54.28/15.55 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.55 , !EQ(S(x), 0()) -> False() 54.28/15.55 , !EQ(0(), S(y)) -> False() 54.28/15.55 , !EQ(0(), 0()) -> True() } 54.28/15.55 Obligation: 54.28/15.55 innermost runtime complexity 54.28/15.55 Answer: 54.28/15.55 YES(O(1),O(1)) 54.28/15.55 54.28/15.55 The following weak DPs constitute a sub-graph of the DG that is 54.28/15.55 closed under successors. The DPs are removed. 54.28/15.55 54.28/15.55 { lookvar^#(x', Cons(x, xs), vs) -> 54.28/15.55 c_2(lookvar[Ite]^#(!EQ(x', x), x', Cons(x, xs), vs)) 54.28/15.55 , lookvar[Ite]^#(False(), x', Cons(x', xs'), Cons(x, xs)) -> 54.28/15.55 c_10(lookvar^#(x', xs', xs)) } 54.28/15.55 54.28/15.55 We are left with following problem, upon which TcT provides the 54.28/15.55 certificate YES(O(1),O(1)). 54.28/15.55 54.28/15.55 Weak Trs: 54.28/15.55 { !EQ(S(x), S(y)) -> !EQ(x, y) 54.28/15.55 , !EQ(S(x), 0()) -> False() 54.28/15.55 , !EQ(0(), S(y)) -> False() 54.28/15.55 , !EQ(0(), 0()) -> True() } 54.28/15.55 Obligation: 54.28/15.55 innermost runtime complexity 54.28/15.55 Answer: 54.28/15.55 YES(O(1),O(1)) 54.28/15.55 54.28/15.55 No rule is usable, rules are removed from the input problem. 54.28/15.55 54.28/15.55 We are left with following problem, upon which TcT provides the 54.28/15.55 certificate YES(O(1),O(1)). 54.28/15.55 54.28/15.55 Rules: Empty 54.28/15.55 Obligation: 54.28/15.55 innermost runtime complexity 54.28/15.55 Answer: 54.28/15.55 YES(O(1),O(1)) 54.28/15.55 54.28/15.55 Empty rules are trivially bounded 54.28/15.55 54.28/15.55 54.28/15.55 54.28/15.55 Hurray, we answered YES(O(1),O(n^1)) 54.28/15.55 EOF