YES(O(1), O(n^1)) 23.21/6.41 YES(O(1), O(n^1)) 24.41/6.78 24.41/6.78 24.41/6.78 24.41/6.78 24.41/6.78 24.41/6.78 Runtime Complexity (innermost) proof of /export/starexec/sandbox/benchmark/theBenchmark.xml.xml 24.41/6.78 24.41/6.78 24.41/6.78
24.41/6.78 24.41/6.78 24.41/6.78
24.41/6.78
24.41/6.78

(0) Obligation:

Runtime Complexity Relative TRS:
The TRS R consists of the following rules:

eeval(Error(e11, e12), ns, vs, p) → eeval[Ite][False][Ite][False][Ite](False, Error(e11, e12), ns, vs, p) 24.41/6.78
eeval(F, ns, vs, p) → F 24.41/6.78
eeval(T, ns, vs, p) → T 24.41/6.78
eeval(Fun(fn1, fe1), ns, vs, p) → eeval[Ite][False][Ite][False][Ite](False, Fun(fn1, fe1), ns, vs, p) 24.41/6.78
eeval(Eq(eq11, eq12), ns, vs, p) → eeval[Ite][False][Ite][False][Ite](False, Eq(eq11, eq12), ns, vs, p) 24.41/6.78
eeval(ITE(i1, t1, e1), ns, vs, p) → eeval[Ite][False][Ite][False][Ite](False, ITE(i1, t1, e1), ns, vs, p) 24.41/6.78
eeval(Bsf(op1, b11, b12), ns, vs, p) → eeval[Ite][False][Ite][False][Ite](True, Bsf(op1, b11, b12), ns, vs, p) 24.41/6.78
eeval(Var(int), ns, vs, p) → lookvar(int, ns, vs) 24.41/6.78
run(Cons(Fun(f0, e), xs), input) → run[Let][Let](Cons(Fun(f0, e), xs), input, f0, lookbody(f0, Cons(Fun(f0, e), xs))) 24.41/6.78
eqExp(Error(e11, e12), Error(e21, e22)) → and(eqExp(e11, e21), eqExp(e12, e22)) 24.41/6.78
eqExp(Error(e11, e12), F) → False 24.41/6.78
eqExp(Error(e11, e12), T) → False 24.41/6.78
eqExp(Error(e11, e12), Fun(fn2, fe2)) → False 24.41/6.78
eqExp(Error(e11, e12), Eq(eq21, eq22)) → False 24.41/6.78
eqExp(Error(e11, e12), ITE(i2, t2, e2)) → False 24.41/6.78
eqExp(Error(e11, e12), Bsf(op2, b21, b22)) → False 24.41/6.78
eqExp(Error(e11, e12), Var(v2)) → False 24.41/6.78
eqExp(F, Error(e21, e22)) → False 24.41/6.78
eqExp(F, F) → True 24.41/6.78
eqExp(F, T) → False 24.41/6.78
eqExp(F, Fun(fn2, fe2)) → False 24.41/6.78
eqExp(F, Eq(eq21, eq22)) → False 24.41/6.78
eqExp(F, ITE(i2, t2, e2)) → False 24.41/6.78
eqExp(F, Bsf(op2, b21, b22)) → False 24.41/6.78
eqExp(F, Var(v2)) → False 24.41/6.78
eqExp(T, Error(e21, e22)) → False 24.41/6.78
eqExp(T, F) → False 24.41/6.78
eqExp(T, T) → True 24.41/6.78
eqExp(T, Fun(fn2, fe2)) → False 24.41/6.78
eqExp(T, Eq(eq21, eq22)) → False 24.41/6.78
eqExp(T, ITE(i2, t2, e2)) → False 24.41/6.78
eqExp(T, Bsf(op2, b21, b22)) → False 24.41/6.78
eqExp(T, Var(v2)) → False 24.41/6.78
eqExp(Fun(fn1, fe1), Error(e21, e22)) → False 24.41/6.78
eqExp(Fun(fn1, fe1), F) → False 24.41/6.78
eqExp(Fun(fn1, fe1), T) → False 24.41/6.78
eqExp(Fun(fn1, fe1), Fun(fn2, fe2)) → and(!EQ(fn1, fn2), eqExp(fe1, fe2)) 24.41/6.78
eqExp(Fun(fn1, fe1), Eq(eq21, eq22)) → False 24.41/6.78
eqExp(Fun(fn1, fe1), ITE(i2, t2, e2)) → False 24.41/6.78
eqExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) → False 24.41/6.78
eqExp(Fun(fn1, fe1), Var(v2)) → False 24.41/6.78
eqExp(Eq(eq11, eq12), Error(e21, e22)) → False 24.41/6.78
eqExp(Eq(eq11, eq12), F) → False 24.41/6.78
eqExp(Eq(eq11, eq12), T) → False 24.41/6.78
eqExp(Eq(eq11, eq12), Fun(fn2, fe2)) → False 24.41/6.78
eqExp(Eq(eq11, eq12), Eq(eq21, eq22)) → and(eqExp(eq11, eq21), eqExp(eq12, eq22)) 24.41/6.78
eqExp(Eq(eq11, eq12), ITE(i2, t2, e2)) → False 24.41/6.78
eqExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) → False 24.41/6.78
eqExp(Eq(eq11, eq12), Var(v2)) → False 24.41/6.78
eqExp(ITE(i1, t1, e1), Error(e21, e22)) → False 24.41/6.78
eqExp(ITE(i1, t1, e1), F) → False 24.41/6.78
eqExp(ITE(i1, t1, e1), T) → False 24.41/6.78
eqExp(ITE(i1, t1, e1), Fun(fn2, fe2)) → False 24.41/6.78
eqExp(ITE(i1, t1, e1), Eq(eq21, eq22)) → False 24.41/6.78
eqExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) → and(eqExp(i1, i2), and(eqExp(t1, t2), eqExp(e1, e2))) 24.41/6.78
eqExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) → False 24.41/6.78
eqExp(ITE(i1, t1, e1), Var(v2)) → False 24.41/6.78
eqExp(Bsf(op1, b11, b12), Error(e21, e22)) → False 24.41/6.78
eqExp(Bsf(op1, b11, b12), F) → False 24.41/6.78
eqExp(Bsf(op1, b11, b12), T) → False 24.41/6.78
eqExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) → False 24.41/6.78
eqExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) → False 24.41/6.78
eqExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) → False 24.41/6.78
eqExp(Bsf(o1, b11, b12), Bsf(o2, b21, b22)) → and(True, and(eqExp(b11, b21), eqExp(b12, b22))) 24.41/6.78
eqExp(Bsf(op1, b11, b12), Var(v2)) → False 24.41/6.78
eqExp(Var(v1), Error(e21, e22)) → False 24.41/6.78
eqExp(Var(v1), F) → False 24.41/6.78
eqExp(Var(v1), T) → False 24.41/6.78
eqExp(Var(v1), Fun(fn2, fe2)) → False 24.41/6.78
eqExp(Var(v1), Eq(eq21, eq22)) → False 24.41/6.78
eqExp(Var(v1), ITE(i2, t2, e2)) → False 24.41/6.78
eqExp(Var(v1), Bsf(op2, b21, b22)) → False 24.41/6.78
eqExp(Var(v1), Var(v2)) → !EQ(v1, v2) 24.41/6.78
checkConstrExp(Error(e11, e12), Error(e21, e22)) → True 24.41/6.78
checkConstrExp(Error(e11, e12), F) → False 24.41/6.78
checkConstrExp(Error(e11, e12), T) → False 24.41/6.78
checkConstrExp(Error(e11, e12), Fun(fn2, fe2)) → False 24.41/6.78
checkConstrExp(Error(e11, e12), Eq(eq21, eq22)) → False 24.41/6.78
checkConstrExp(Error(e11, e12), ITE(i2, t2, e2)) → False 24.41/6.78
checkConstrExp(Error(e11, e12), Bsf(op2, b21, b22)) → False 24.41/6.78
checkConstrExp(Error(e11, e12), Var(v2)) → False 24.41/6.78
checkConstrExp(F, Error(e21, e22)) → False 24.41/6.78
checkConstrExp(F, F) → True 24.41/6.78
checkConstrExp(F, T) → False 24.41/6.78
checkConstrExp(F, Fun(fn2, fe2)) → False 24.41/6.78
checkConstrExp(F, Eq(eq21, eq22)) → False 24.41/6.78
checkConstrExp(F, ITE(i2, t2, e2)) → False 24.41/6.78
checkConstrExp(F, Bsf(op2, b21, b22)) → False 24.41/6.78
checkConstrExp(F, Var(v2)) → False 24.41/6.78
checkConstrExp(T, Error(e21, e22)) → False 24.41/6.78
checkConstrExp(T, F) → False 24.41/6.78
checkConstrExp(T, T) → True 24.41/6.78
checkConstrExp(T, Fun(fn2, fe2)) → False 24.41/6.78
checkConstrExp(T, Eq(eq21, eq22)) → False 24.41/6.78
checkConstrExp(T, ITE(i2, t2, e2)) → False 24.41/6.78
checkConstrExp(T, Bsf(op2, b21, b22)) → False 24.41/6.78
checkConstrExp(T, Var(v2)) → False 24.41/6.78
checkConstrExp(Fun(fn1, fe1), Error(e21, e22)) → False 24.41/6.78
checkConstrExp(Fun(fn1, fe1), F) → False 24.41/6.78
checkConstrExp(Fun(fn1, fe1), T) → False 24.41/6.78
checkConstrExp(Fun(fn1, fe1), Fun(fn2, fe2)) → True 24.41/6.78
checkConstrExp(Fun(fn1, fe1), Eq(eq21, eq22)) → False 24.41/6.78
checkConstrExp(Fun(fn1, fe1), ITE(i2, t2, e2)) → False 24.41/6.78
checkConstrExp(Fun(fn1, fe1), Bsf(op2, b21, b22)) → False 24.41/6.78
checkConstrExp(Fun(fn1, fe1), Var(v2)) → False 24.41/6.78
checkConstrExp(Eq(eq11, eq12), Error(e21, e22)) → False 24.41/6.78
checkConstrExp(Eq(eq11, eq12), F) → False 24.41/6.78
checkConstrExp(Eq(eq11, eq12), T) → False 24.41/6.78
checkConstrExp(Eq(eq11, eq12), Fun(fn2, fe2)) → False 24.41/6.78
checkConstrExp(Eq(eq11, eq12), Eq(eq21, eq22)) → True 24.41/6.78
checkConstrExp(Eq(eq11, eq12), ITE(i2, t2, e2)) → False 24.41/6.78
checkConstrExp(Eq(eq11, eq12), Bsf(op2, b21, b22)) → False 24.41/6.78
checkConstrExp(Eq(eq11, eq12), Var(v2)) → False 24.41/6.78
checkConstrExp(ITE(i1, t1, e1), Error(e21, e22)) → False 24.41/6.78
checkConstrExp(ITE(i1, t1, e1), F) → False 24.41/6.78
checkConstrExp(ITE(i1, t1, e1), T) → False 24.41/6.78
checkConstrExp(ITE(i1, t1, e1), Fun(fn2, fe2)) → False 24.41/6.78
checkConstrExp(ITE(i1, t1, e1), Eq(eq21, eq22)) → False 24.41/6.78
checkConstrExp(ITE(i1, t1, e1), ITE(i2, t2, e2)) → True 24.41/6.78
checkConstrExp(ITE(i1, t1, e1), Bsf(op2, b21, b22)) → False 24.41/6.78
checkConstrExp(ITE(i1, t1, e1), Var(v2)) → False 24.41/6.78
checkConstrExp(Bsf(op1, b11, b12), Error(e21, e22)) → False 24.41/6.78
checkConstrExp(Bsf(op1, b11, b12), F) → False 24.41/6.78
checkConstrExp(Bsf(op1, b11, b12), T) → False 24.41/6.78
checkConstrExp(Bsf(op1, b11, b12), Fun(fn2, fe2)) → False 24.41/6.78
checkConstrExp(Bsf(op1, b11, b12), Eq(eq21, eq22)) → False 24.41/6.78
checkConstrExp(Bsf(op1, b11, b12), ITE(i2, t2, e2)) → False 25.20/6.96
checkConstrExp(Bsf(op1, b11, b12), Bsf(op2, b21, b22)) → True 25.20/6.96
checkConstrExp(Bsf(op1, b11, b12), Var(v2)) → False 25.20/6.96
checkConstrExp(Var(v1), Error(e21, e22)) → False 25.20/6.96
checkConstrExp(Var(v1), F) → False 25.20/6.96
checkConstrExp(Var(v1), T) → False 25.20/6.96
checkConstrExp(Var(v1), Fun(fn2, fe2)) → False 25.20/6.96
checkConstrExp(Var(v1), Eq(eq21, eq22)) → False 25.20/6.96
checkConstrExp(Var(v1), ITE(i2, t2, e2)) → False 25.20/6.96
checkConstrExp(Var(v1), Bsf(op2, b21, b22)) → False 25.20/6.96
checkConstrExp(Var(v1), Var(v2)) → True 25.20/6.96
lookname(f, Cons(Fun(n, e), xs)) → lookname[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 25.20/6.96
lookbody(f, Cons(Fun(n, e), xs)) → lookbody[Ite](!EQ(f, n), f, Cons(Fun(n, e), xs)) 25.20/6.96
getVar(Var(int)) → int 25.20/6.96
getIfTrue(ITE(i, t, e)) → t 25.20/6.96
getIfGuard(ITE(i, t, e)) → i 25.20/6.96
getIfFalse(ITE(i, t, e)) → e 25.20/6.96
getFuncName(Fun(n, e)) → n 25.20/6.96
getFuncExp(Fun(n, e)) → e 25.20/6.96
getEqSecond(Eq(f, s)) → s 25.20/6.96
getEqFirst(Eq(f, s)) → f 25.20/6.96
getConst(Cst(int)) → int 25.20/6.96
getBsfSecondTerm(Bsf(op, t1, t2)) → t2 25.20/6.96
getBsfOp(Bsf(op, t1, t2)) → op 25.20/6.96
getBsfFirstTerm(Bsf(op, t1, t2)) → t1 25.20/6.96
apply(op, v1, v2) → apply[Ite][True][Ite](eqExp(v1, v2), op, v1, v2) 25.20/6.96
lookvar(x', Cons(x, xs), vs) → lookvar[Ite](!EQ(x', x), x', Cons(x, xs), vs) 25.20/6.96
eqOps(o1, o2) → True

The (relative) TRS S consists of the following rules:

!EQ(S(x), S(y)) → !EQ(x, y) 25.20/6.96
!EQ(0, S(y)) → False 25.20/6.96
!EQ(S(x), 0) → False 25.20/6.96
!EQ(0, 0) → True 25.20/6.96
and(False, False) → False 25.20/6.96
and(True, False) → False 25.20/6.96
and(False, True) → False 25.20/6.96
and(True, True) → True 25.20/6.96
lookvar[Ite](False, x', Cons(x', xs'), Cons(x, xs)) → lookvar(x', xs', xs) 25.20/6.96
lookname[Ite](True, f, Cons(Fun(n, e), xs)) → n 25.20/6.96
lookbody[Ite](True, f, Cons(Fun(n, e), xs)) → e 25.20/6.96
lookvar[Ite](True, x', ns, Cons(x, xs)) → x 25.20/6.96
lookname[Ite](False, f, Cons(x, xs)) → lookname(f, xs) 25.20/6.96
lookbody[Ite](False, f, Cons(x, xs)) → lookbody(f, xs) 25.20/6.96
apply[Ite][True][Ite](False, op, v1, v2) → F 25.20/6.96
apply[Ite][True][Ite](True, op, v1, v2) → T 25.20/6.96
run[Let][Let](p, input, f0, ef) → run[Let][Let][Let](p, input, f0, ef, lookname(f0, p))

Rewrite Strategy: INNERMOST
25.20/6.96
25.20/6.96

(1) CpxRelTrsToCDT (UPPER BOUND (ID) transformation)

Relative innermost TRS to CDT Problem.
25.20/6.96
25.20/6.96

(2) Obligation:

Complexity Dependency Tuples Problem
Rules:

!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.20/6.96
!EQ(0, S(z0)) → False 25.20/6.96
!EQ(S(z0), 0) → False 25.20/6.96
!EQ(0, 0) → True 25.20/6.96
and(False, False) → False 25.20/6.96
and(True, False) → False 25.20/6.96
and(False, True) → False 25.20/6.96
and(True, True) → True 25.20/6.96
lookvar[Ite](False, z0, Cons(z0, z1), Cons(z2, z3)) → lookvar(z0, z1, z3) 25.20/6.96
lookvar[Ite](True, z0, z1, Cons(z2, z3)) → z2 25.20/6.96
lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z1 25.20/6.96
lookname[Ite](False, z0, Cons(z1, z2)) → lookname(z0, z2) 25.20/6.96
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.20/6.96
lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.20/6.96
apply[Ite][True][Ite](False, z0, z1, z2) → F 25.20/6.96
apply[Ite][True][Ite](True, z0, z1, z2) → T 25.20/6.96
run[Let][Let](z0, z1, z2, z3) → run[Let][Let][Let](z0, z1, z2, z3, lookname(z2, z0)) 25.20/6.96
eeval(Error(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Error(z0, z1), z2, z3, z4) 25.20/6.96
eeval(F, z0, z1, z2) → F 25.20/6.96
eeval(T, z0, z1, z2) → T 25.20/6.96
eeval(Fun(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Fun(z0, z1), z2, z3, z4) 25.20/6.96
eeval(Eq(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Eq(z0, z1), z2, z3, z4) 25.20/6.96
eeval(ITE(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](False, ITE(z0, z1, z2), z3, z4, z5) 25.20/6.96
eeval(Bsf(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](True, Bsf(z0, z1, z2), z3, z4, z5) 25.20/6.96
eeval(Var(z0), z1, z2, z3) → lookvar(z0, z1, z2) 25.20/6.96
run(Cons(Fun(z0, z1), z2), z3) → run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) 25.20/6.96
eqExp(Error(z0, z1), Error(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.20/6.96
eqExp(Error(z0, z1), F) → False 25.20/6.96
eqExp(Error(z0, z1), T) → False 25.20/6.96
eqExp(Error(z0, z1), Fun(z2, z3)) → False 25.20/6.96
eqExp(Error(z0, z1), Eq(z2, z3)) → False 25.20/6.96
eqExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.96
eqExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.96
eqExp(Error(z0, z1), Var(z2)) → False 25.20/6.96
eqExp(F, Error(z0, z1)) → False 25.20/6.96
eqExp(F, F) → True 25.20/6.96
eqExp(F, T) → False 25.20/6.96
eqExp(F, Fun(z0, z1)) → False 25.20/6.96
eqExp(F, Eq(z0, z1)) → False 25.20/6.96
eqExp(F, ITE(z0, z1, z2)) → False 25.20/6.96
eqExp(F, Bsf(z0, z1, z2)) → False 25.20/6.96
eqExp(F, Var(z0)) → False 25.20/6.96
eqExp(T, Error(z0, z1)) → False 25.20/6.96
eqExp(T, F) → False 25.20/6.96
eqExp(T, T) → True 25.20/6.96
eqExp(T, Fun(z0, z1)) → False 25.20/6.96
eqExp(T, Eq(z0, z1)) → False 25.20/6.96
eqExp(T, ITE(z0, z1, z2)) → False 25.20/6.96
eqExp(T, Bsf(z0, z1, z2)) → False 25.20/6.96
eqExp(T, Var(z0)) → False 25.20/6.96
eqExp(Fun(z0, z1), Error(z2, z3)) → False 25.20/6.96
eqExp(Fun(z0, z1), F) → False 25.20/6.96
eqExp(Fun(z0, z1), T) → False 25.20/6.96
eqExp(Fun(z0, z1), Fun(z2, z3)) → and(!EQ(z0, z2), eqExp(z1, z3)) 25.20/6.96
eqExp(Fun(z0, z1), Eq(z2, z3)) → False 25.20/6.96
eqExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.96
eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.96
eqExp(Fun(z0, z1), Var(z2)) → False 25.20/6.96
eqExp(Eq(z0, z1), Error(z2, z3)) → False 25.20/6.96
eqExp(Eq(z0, z1), F) → False 25.20/6.96
eqExp(Eq(z0, z1), T) → False 25.20/6.96
eqExp(Eq(z0, z1), Fun(z2, z3)) → False 25.20/6.96
eqExp(Eq(z0, z1), Eq(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.20/6.96
eqExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.96
eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.96
eqExp(Eq(z0, z1), Var(z2)) → False 25.20/6.96
eqExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.20/6.96
eqExp(ITE(z0, z1, z2), F) → False 25.20/6.96
eqExp(ITE(z0, z1, z2), T) → False 25.20/6.96
eqExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.20/6.96
eqExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.20/6.96
eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) 25.20/6.96
eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.20/6.96
eqExp(ITE(z0, z1, z2), Var(z3)) → False 25.20/6.96
eqExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.20/6.96
eqExp(Bsf(z0, z1, z2), F) → False 25.20/6.96
eqExp(Bsf(z0, z1, z2), T) → False 25.20/6.96
eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.20/6.96
eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.20/6.96
eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.20/6.96
eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → and(True, and(eqExp(z1, z4), eqExp(z2, z5))) 25.20/6.96
eqExp(Bsf(z0, z1, z2), Var(z3)) → False 25.20/6.96
eqExp(Var(z0), Error(z1, z2)) → False 25.20/6.96
eqExp(Var(z0), F) → False 25.20/6.96
eqExp(Var(z0), T) → False 25.20/6.96
eqExp(Var(z0), Fun(z1, z2)) → False 25.20/6.96
eqExp(Var(z0), Eq(z1, z2)) → False 25.20/6.96
eqExp(Var(z0), ITE(z1, z2, z3)) → False 25.20/6.96
eqExp(Var(z0), Bsf(z1, z2, z3)) → False 25.20/6.96
eqExp(Var(z0), Var(z1)) → !EQ(z0, z1) 25.20/6.96
checkConstrExp(Error(z0, z1), Error(z2, z3)) → True 25.20/6.96
checkConstrExp(Error(z0, z1), F) → False 25.20/6.96
checkConstrExp(Error(z0, z1), T) → False 25.20/6.96
checkConstrExp(Error(z0, z1), Fun(z2, z3)) → False 25.20/6.96
checkConstrExp(Error(z0, z1), Eq(z2, z3)) → False 25.20/6.96
checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.96
checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.96
checkConstrExp(Error(z0, z1), Var(z2)) → False 25.20/6.96
checkConstrExp(F, Error(z0, z1)) → False 25.20/6.96
checkConstrExp(F, F) → True 25.20/6.96
checkConstrExp(F, T) → False 25.20/6.96
checkConstrExp(F, Fun(z0, z1)) → False 25.20/6.96
checkConstrExp(F, Eq(z0, z1)) → False 25.20/6.96
checkConstrExp(F, ITE(z0, z1, z2)) → False 25.20/6.96
checkConstrExp(F, Bsf(z0, z1, z2)) → False 25.20/6.96
checkConstrExp(F, Var(z0)) → False 25.20/6.96
checkConstrExp(T, Error(z0, z1)) → False 25.20/6.96
checkConstrExp(T, F) → False 25.20/6.96
checkConstrExp(T, T) → True 25.20/6.96
checkConstrExp(T, Fun(z0, z1)) → False 25.20/6.96
checkConstrExp(T, Eq(z0, z1)) → False 25.20/6.96
checkConstrExp(T, ITE(z0, z1, z2)) → False 25.20/6.96
checkConstrExp(T, Bsf(z0, z1, z2)) → False 25.20/6.96
checkConstrExp(T, Var(z0)) → False 25.20/6.96
checkConstrExp(Fun(z0, z1), Error(z2, z3)) → False 25.20/6.96
checkConstrExp(Fun(z0, z1), F) → False 25.20/6.96
checkConstrExp(Fun(z0, z1), T) → False 25.20/6.96
checkConstrExp(Fun(z0, z1), Fun(z2, z3)) → True 25.20/6.96
checkConstrExp(Fun(z0, z1), Eq(z2, z3)) → False 25.20/6.96
checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.96
checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.96
checkConstrExp(Fun(z0, z1), Var(z2)) → False 25.20/6.96
checkConstrExp(Eq(z0, z1), Error(z2, z3)) → False 25.20/6.96
checkConstrExp(Eq(z0, z1), F) → False 25.20/6.96
checkConstrExp(Eq(z0, z1), T) → False 25.20/6.96
checkConstrExp(Eq(z0, z1), Fun(z2, z3)) → False 25.20/6.96
checkConstrExp(Eq(z0, z1), Eq(z2, z3)) → True 25.20/6.96
checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.96
checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.96
checkConstrExp(Eq(z0, z1), Var(z2)) → False 25.20/6.96
checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.20/6.96
checkConstrExp(ITE(z0, z1, z2), F) → False 25.20/6.96
checkConstrExp(ITE(z0, z1, z2), T) → False 25.20/6.96
checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.20/6.96
checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.20/6.96
checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → True 25.20/6.96
checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.20/6.96
checkConstrExp(ITE(z0, z1, z2), Var(z3)) → False 25.20/6.96
checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.20/6.96
checkConstrExp(Bsf(z0, z1, z2), F) → False 25.20/6.96
checkConstrExp(Bsf(z0, z1, z2), T) → False 25.20/6.96
checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.20/6.96
checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.20/6.96
checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.20/6.96
checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → True 25.20/6.96
checkConstrExp(Bsf(z0, z1, z2), Var(z3)) → False 25.20/6.96
checkConstrExp(Var(z0), Error(z1, z2)) → False 25.20/6.96
checkConstrExp(Var(z0), F) → False 25.20/6.96
checkConstrExp(Var(z0), T) → False 25.20/6.96
checkConstrExp(Var(z0), Fun(z1, z2)) → False 25.20/6.96
checkConstrExp(Var(z0), Eq(z1, z2)) → False 25.20/6.96
checkConstrExp(Var(z0), ITE(z1, z2, z3)) → False 25.20/6.96
checkConstrExp(Var(z0), Bsf(z1, z2, z3)) → False 25.20/6.96
checkConstrExp(Var(z0), Var(z1)) → True 25.20/6.96
lookname(z0, Cons(Fun(z1, z2), z3)) → lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.20/6.96
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.20/6.96
getVar(Var(z0)) → z0 25.20/6.96
getIfTrue(ITE(z0, z1, z2)) → z1 25.20/6.96
getIfGuard(ITE(z0, z1, z2)) → z0 25.20/6.96
getIfFalse(ITE(z0, z1, z2)) → z2 25.20/6.96
getFuncName(Fun(z0, z1)) → z0 25.20/6.96
getFuncExp(Fun(z0, z1)) → z1 25.20/6.96
getEqSecond(Eq(z0, z1)) → z1 25.20/6.96
getEqFirst(Eq(z0, z1)) → z0 25.20/6.96
getConst(Cst(z0)) → z0 25.20/6.96
getBsfSecondTerm(Bsf(z0, z1, z2)) → z2 25.20/6.96
getBsfOp(Bsf(z0, z1, z2)) → z0 25.20/6.96
getBsfFirstTerm(Bsf(z0, z1, z2)) → z1 25.20/6.96
apply(z0, z1, z2) → apply[Ite][True][Ite](eqExp(z1, z2), z0, z1, z2) 25.20/6.96
lookvar(z0, Cons(z1, z2), z3) → lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) 25.20/6.96
eqOps(z0, z1) → True
Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.20/6.96
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.20/6.96
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.20/6.96
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.20/6.96
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.20/6.96
EEVAL(Var(z0), z1, z2, z3) → c24(LOOKVAR(z0, z1, z2)) 25.20/6.96
RUN(Cons(Fun(z0, z1), z2), z3) → c25(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))), LOOKBODY(z0, Cons(Fun(z0, z1), z2))) 25.20/6.96
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z0, z2), EQEXP(z1, z3)) 25.20/6.96
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(AND(!EQ(z0, z2), eqExp(z1, z3)), !EQ'(z0, z2), EQEXP(z1, z3)) 25.20/6.96
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z0, z2), EQEXP(z1, z3)) 25.20/6.97
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(AND(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))), EQEXP(z0, z3), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z1, z4), EQEXP(z2, z5)) 25.20/6.97
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(AND(True, and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z1, z4), EQEXP(z2, z5)) 25.20/6.97
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.20/6.97
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.20/6.97
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.20/6.97
APPLY(z0, z1, z2) → c168(APPLY[ITE][TRUE][ITE](eqExp(z1, z2), z0, z1, z2), EQEXP(z1, z2)) 25.20/6.97
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1))
S tuples:

EEVAL(Var(z0), z1, z2, z3) → c24(LOOKVAR(z0, z1, z2)) 25.20/6.97
RUN(Cons(Fun(z0, z1), z2), z3) → c25(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))), LOOKBODY(z0, Cons(Fun(z0, z1), z2))) 25.20/6.97
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z0, z2), EQEXP(z1, z3)) 25.20/6.97
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(AND(!EQ(z0, z2), eqExp(z1, z3)), !EQ'(z0, z2), EQEXP(z1, z3)) 25.20/6.97
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(AND(eqExp(z0, z2), eqExp(z1, z3)), EQEXP(z0, z2), EQEXP(z1, z3)) 25.20/6.97
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(AND(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))), EQEXP(z0, z3), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z1, z4), EQEXP(z2, z5)) 25.20/6.97
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(AND(True, and(eqExp(z1, z4), eqExp(z2, z5))), AND(eqExp(z1, z4), eqExp(z2, z5)), EQEXP(z1, z4), EQEXP(z2, z5)) 25.20/6.97
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.20/6.97
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.20/6.97
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.20/6.97
APPLY(z0, z1, z2) → c168(APPLY[ITE][TRUE][ITE](eqExp(z1, z2), z0, z1, z2), EQEXP(z1, z2)) 25.20/6.97
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1))
K tuples:none
Defined Rule Symbols:

eeval, run, eqExp, checkConstrExp, lookname, lookbody, getVar, getIfTrue, getIfGuard, getIfFalse, getFuncName, getFuncExp, getEqSecond, getEqFirst, getConst, getBsfSecondTerm, getBsfOp, getBsfFirstTerm, apply, lookvar, eqOps, !EQ, and, lookvar[Ite], lookname[Ite], lookbody[Ite], apply[Ite][True][Ite], run[Let][Let]

Defined Pair Symbols:

!EQ', LOOKVAR[ITE], LOOKNAME[ITE], LOOKBODY[ITE], RUN[LET][LET], EEVAL, RUN, EQEXP, LOOKNAME, LOOKBODY, APPLY, LOOKVAR

Compound Symbols:

c, c8, c11, c13, c16, c24, c25, c26, c53, c62, c71, c80, c89, c154, c155, c168, c169

25.20/6.97
25.20/6.97

(3) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 8 trailing tuple parts
25.20/6.97
25.20/6.97

(4) Obligation:

Complexity Dependency Tuples Problem
Rules:

!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.20/6.97
!EQ(0, S(z0)) → False 25.20/6.97
!EQ(S(z0), 0) → False 25.20/6.97
!EQ(0, 0) → True 25.20/6.97
and(False, False) → False 25.20/6.97
and(True, False) → False 25.20/6.97
and(False, True) → False 25.20/6.97
and(True, True) → True 25.20/6.97
lookvar[Ite](False, z0, Cons(z0, z1), Cons(z2, z3)) → lookvar(z0, z1, z3) 25.20/6.97
lookvar[Ite](True, z0, z1, Cons(z2, z3)) → z2 25.20/6.97
lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z1 25.20/6.97
lookname[Ite](False, z0, Cons(z1, z2)) → lookname(z0, z2) 25.20/6.97
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.20/6.97
lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.20/6.97
apply[Ite][True][Ite](False, z0, z1, z2) → F 25.20/6.97
apply[Ite][True][Ite](True, z0, z1, z2) → T 25.20/6.97
run[Let][Let](z0, z1, z2, z3) → run[Let][Let][Let](z0, z1, z2, z3, lookname(z2, z0)) 25.20/6.97
eeval(Error(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Error(z0, z1), z2, z3, z4) 25.20/6.97
eeval(F, z0, z1, z2) → F 25.20/6.97
eeval(T, z0, z1, z2) → T 25.20/6.97
eeval(Fun(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Fun(z0, z1), z2, z3, z4) 25.20/6.97
eeval(Eq(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Eq(z0, z1), z2, z3, z4) 25.20/6.97
eeval(ITE(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](False, ITE(z0, z1, z2), z3, z4, z5) 25.20/6.97
eeval(Bsf(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](True, Bsf(z0, z1, z2), z3, z4, z5) 25.20/6.97
eeval(Var(z0), z1, z2, z3) → lookvar(z0, z1, z2) 25.20/6.97
run(Cons(Fun(z0, z1), z2), z3) → run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) 25.20/6.97
eqExp(Error(z0, z1), Error(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.20/6.97
eqExp(Error(z0, z1), F) → False 25.20/6.97
eqExp(Error(z0, z1), T) → False 25.20/6.97
eqExp(Error(z0, z1), Fun(z2, z3)) → False 25.20/6.97
eqExp(Error(z0, z1), Eq(z2, z3)) → False 25.20/6.97
eqExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.97
eqExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.97
eqExp(Error(z0, z1), Var(z2)) → False 25.20/6.97
eqExp(F, Error(z0, z1)) → False 25.20/6.97
eqExp(F, F) → True 25.20/6.97
eqExp(F, T) → False 25.20/6.97
eqExp(F, Fun(z0, z1)) → False 25.20/6.97
eqExp(F, Eq(z0, z1)) → False 25.20/6.97
eqExp(F, ITE(z0, z1, z2)) → False 25.20/6.97
eqExp(F, Bsf(z0, z1, z2)) → False 25.20/6.97
eqExp(F, Var(z0)) → False 25.20/6.97
eqExp(T, Error(z0, z1)) → False 25.20/6.97
eqExp(T, F) → False 25.20/6.97
eqExp(T, T) → True 25.20/6.97
eqExp(T, Fun(z0, z1)) → False 25.20/6.97
eqExp(T, Eq(z0, z1)) → False 25.20/6.97
eqExp(T, ITE(z0, z1, z2)) → False 25.20/6.97
eqExp(T, Bsf(z0, z1, z2)) → False 25.20/6.97
eqExp(T, Var(z0)) → False 25.20/6.97
eqExp(Fun(z0, z1), Error(z2, z3)) → False 25.20/6.97
eqExp(Fun(z0, z1), F) → False 25.20/6.97
eqExp(Fun(z0, z1), T) → False 25.20/6.97
eqExp(Fun(z0, z1), Fun(z2, z3)) → and(!EQ(z0, z2), eqExp(z1, z3)) 25.20/6.97
eqExp(Fun(z0, z1), Eq(z2, z3)) → False 25.20/6.97
eqExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.97
eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.97
eqExp(Fun(z0, z1), Var(z2)) → False 25.20/6.97
eqExp(Eq(z0, z1), Error(z2, z3)) → False 25.20/6.97
eqExp(Eq(z0, z1), F) → False 25.20/6.97
eqExp(Eq(z0, z1), T) → False 25.20/6.97
eqExp(Eq(z0, z1), Fun(z2, z3)) → False 25.20/6.97
eqExp(Eq(z0, z1), Eq(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.20/6.97
eqExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.97
eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.97
eqExp(Eq(z0, z1), Var(z2)) → False 25.20/6.97
eqExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.20/6.97
eqExp(ITE(z0, z1, z2), F) → False 25.20/6.97
eqExp(ITE(z0, z1, z2), T) → False 25.20/6.97
eqExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.20/6.97
eqExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.20/6.97
eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) 25.20/6.97
eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.20/6.97
eqExp(ITE(z0, z1, z2), Var(z3)) → False 25.20/6.97
eqExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.20/6.97
eqExp(Bsf(z0, z1, z2), F) → False 25.20/6.97
eqExp(Bsf(z0, z1, z2), T) → False 25.20/6.97
eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.20/6.97
eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.20/6.97
eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.20/6.97
eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → and(True, and(eqExp(z1, z4), eqExp(z2, z5))) 25.20/6.97
eqExp(Bsf(z0, z1, z2), Var(z3)) → False 25.20/6.97
eqExp(Var(z0), Error(z1, z2)) → False 25.20/6.97
eqExp(Var(z0), F) → False 25.20/6.97
eqExp(Var(z0), T) → False 25.20/6.97
eqExp(Var(z0), Fun(z1, z2)) → False 25.20/6.97
eqExp(Var(z0), Eq(z1, z2)) → False 25.20/6.97
eqExp(Var(z0), ITE(z1, z2, z3)) → False 25.20/6.97
eqExp(Var(z0), Bsf(z1, z2, z3)) → False 25.20/6.97
eqExp(Var(z0), Var(z1)) → !EQ(z0, z1) 25.20/6.97
checkConstrExp(Error(z0, z1), Error(z2, z3)) → True 25.20/6.97
checkConstrExp(Error(z0, z1), F) → False 25.20/6.97
checkConstrExp(Error(z0, z1), T) → False 25.20/6.97
checkConstrExp(Error(z0, z1), Fun(z2, z3)) → False 25.20/6.97
checkConstrExp(Error(z0, z1), Eq(z2, z3)) → False 25.20/6.97
checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.97
checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.97
checkConstrExp(Error(z0, z1), Var(z2)) → False 25.20/6.97
checkConstrExp(F, Error(z0, z1)) → False 25.20/6.97
checkConstrExp(F, F) → True 25.20/6.97
checkConstrExp(F, T) → False 25.20/6.97
checkConstrExp(F, Fun(z0, z1)) → False 25.20/6.97
checkConstrExp(F, Eq(z0, z1)) → False 25.20/6.97
checkConstrExp(F, ITE(z0, z1, z2)) → False 25.20/6.97
checkConstrExp(F, Bsf(z0, z1, z2)) → False 25.20/6.97
checkConstrExp(F, Var(z0)) → False 25.20/6.97
checkConstrExp(T, Error(z0, z1)) → False 25.20/6.97
checkConstrExp(T, F) → False 25.20/6.97
checkConstrExp(T, T) → True 25.20/6.97
checkConstrExp(T, Fun(z0, z1)) → False 25.20/6.97
checkConstrExp(T, Eq(z0, z1)) → False 25.20/6.97
checkConstrExp(T, ITE(z0, z1, z2)) → False 25.20/6.97
checkConstrExp(T, Bsf(z0, z1, z2)) → False 25.20/6.97
checkConstrExp(T, Var(z0)) → False 25.20/6.97
checkConstrExp(Fun(z0, z1), Error(z2, z3)) → False 25.20/6.97
checkConstrExp(Fun(z0, z1), F) → False 25.20/6.97
checkConstrExp(Fun(z0, z1), T) → False 25.20/6.97
checkConstrExp(Fun(z0, z1), Fun(z2, z3)) → True 25.20/6.97
checkConstrExp(Fun(z0, z1), Eq(z2, z3)) → False 25.20/6.97
checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.97
checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.97
checkConstrExp(Fun(z0, z1), Var(z2)) → False 25.20/6.97
checkConstrExp(Eq(z0, z1), Error(z2, z3)) → False 25.20/6.97
checkConstrExp(Eq(z0, z1), F) → False 25.20/6.97
checkConstrExp(Eq(z0, z1), T) → False 25.20/6.97
checkConstrExp(Eq(z0, z1), Fun(z2, z3)) → False 25.20/6.97
checkConstrExp(Eq(z0, z1), Eq(z2, z3)) → True 25.20/6.97
checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.97
checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.97
checkConstrExp(Eq(z0, z1), Var(z2)) → False 25.20/6.97
checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.20/6.97
checkConstrExp(ITE(z0, z1, z2), F) → False 25.20/6.97
checkConstrExp(ITE(z0, z1, z2), T) → False 25.20/6.97
checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.20/6.97
checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.20/6.97
checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → True 25.20/6.97
checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.20/6.97
checkConstrExp(ITE(z0, z1, z2), Var(z3)) → False 25.20/6.97
checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.20/6.97
checkConstrExp(Bsf(z0, z1, z2), F) → False 25.20/6.97
checkConstrExp(Bsf(z0, z1, z2), T) → False 25.20/6.97
checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.20/6.97
checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.20/6.97
checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.20/6.97
checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → True 25.20/6.97
checkConstrExp(Bsf(z0, z1, z2), Var(z3)) → False 25.20/6.97
checkConstrExp(Var(z0), Error(z1, z2)) → False 25.20/6.97
checkConstrExp(Var(z0), F) → False 25.20/6.97
checkConstrExp(Var(z0), T) → False 25.20/6.97
checkConstrExp(Var(z0), Fun(z1, z2)) → False 25.20/6.97
checkConstrExp(Var(z0), Eq(z1, z2)) → False 25.20/6.97
checkConstrExp(Var(z0), ITE(z1, z2, z3)) → False 25.20/6.97
checkConstrExp(Var(z0), Bsf(z1, z2, z3)) → False 25.20/6.97
checkConstrExp(Var(z0), Var(z1)) → True 25.20/6.97
lookname(z0, Cons(Fun(z1, z2), z3)) → lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.20/6.97
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.20/6.97
getVar(Var(z0)) → z0 25.20/6.97
getIfTrue(ITE(z0, z1, z2)) → z1 25.20/6.97
getIfGuard(ITE(z0, z1, z2)) → z0 25.20/6.97
getIfFalse(ITE(z0, z1, z2)) → z2 25.20/6.97
getFuncName(Fun(z0, z1)) → z0 25.20/6.97
getFuncExp(Fun(z0, z1)) → z1 25.20/6.97
getEqSecond(Eq(z0, z1)) → z1 25.20/6.97
getEqFirst(Eq(z0, z1)) → z0 25.20/6.97
getConst(Cst(z0)) → z0 25.20/6.97
getBsfSecondTerm(Bsf(z0, z1, z2)) → z2 25.20/6.97
getBsfOp(Bsf(z0, z1, z2)) → z0 25.20/6.97
getBsfFirstTerm(Bsf(z0, z1, z2)) → z1 25.20/6.97
apply(z0, z1, z2) → apply[Ite][True][Ite](eqExp(z1, z2), z0, z1, z2) 25.20/6.97
lookvar(z0, Cons(z1, z2), z3) → lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) 25.20/6.97
eqOps(z0, z1) → True
Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.20/6.97
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.20/6.97
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.20/6.97
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.20/6.97
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.20/6.97
EEVAL(Var(z0), z1, z2, z3) → c24(LOOKVAR(z0, z1, z2)) 25.20/6.97
RUN(Cons(Fun(z0, z1), z2), z3) → c25(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))), LOOKBODY(z0, Cons(Fun(z0, z1), z2))) 25.20/6.97
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.20/6.97
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.20/6.97
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.20/6.97
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.20/6.97
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.20/6.97
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.20/6.97
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.20/6.97
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.20/6.97
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.20/6.97
APPLY(z0, z1, z2) → c168(EQEXP(z1, z2))
S tuples:

EEVAL(Var(z0), z1, z2, z3) → c24(LOOKVAR(z0, z1, z2)) 25.20/6.97
RUN(Cons(Fun(z0, z1), z2), z3) → c25(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))), LOOKBODY(z0, Cons(Fun(z0, z1), z2))) 25.20/6.97
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.20/6.97
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.20/6.97
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.20/6.97
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.20/6.97
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.20/6.97
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.20/6.97
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.20/6.97
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.20/6.97
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.20/6.97
APPLY(z0, z1, z2) → c168(EQEXP(z1, z2))
K tuples:none
Defined Rule Symbols:

eeval, run, eqExp, checkConstrExp, lookname, lookbody, getVar, getIfTrue, getIfGuard, getIfFalse, getFuncName, getFuncExp, getEqSecond, getEqFirst, getConst, getBsfSecondTerm, getBsfOp, getBsfFirstTerm, apply, lookvar, eqOps, !EQ, and, lookvar[Ite], lookname[Ite], lookbody[Ite], apply[Ite][True][Ite], run[Let][Let]

Defined Pair Symbols:

!EQ', LOOKVAR[ITE], LOOKNAME[ITE], LOOKBODY[ITE], RUN[LET][LET], EEVAL, RUN, EQEXP, LOOKNAME, LOOKBODY, LOOKVAR, APPLY

Compound Symbols:

c, c8, c11, c13, c16, c24, c25, c89, c154, c155, c169, c26, c53, c62, c71, c80, c168

25.20/6.98
25.20/6.98

(5) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)

Split RHS of tuples not part of any SCC
25.20/6.98
25.20/6.98

(6) Obligation:

Complexity Dependency Tuples Problem
Rules:

!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.20/6.98
!EQ(0, S(z0)) → False 25.20/6.98
!EQ(S(z0), 0) → False 25.20/6.98
!EQ(0, 0) → True 25.20/6.98
and(False, False) → False 25.20/6.98
and(True, False) → False 25.20/6.98
and(False, True) → False 25.20/6.98
and(True, True) → True 25.20/6.98
lookvar[Ite](False, z0, Cons(z0, z1), Cons(z2, z3)) → lookvar(z0, z1, z3) 25.20/6.98
lookvar[Ite](True, z0, z1, Cons(z2, z3)) → z2 25.20/6.98
lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z1 25.20/6.98
lookname[Ite](False, z0, Cons(z1, z2)) → lookname(z0, z2) 25.20/6.98
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.20/6.98
lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.20/6.98
apply[Ite][True][Ite](False, z0, z1, z2) → F 25.20/6.98
apply[Ite][True][Ite](True, z0, z1, z2) → T 25.20/6.98
run[Let][Let](z0, z1, z2, z3) → run[Let][Let][Let](z0, z1, z2, z3, lookname(z2, z0)) 25.20/6.98
eeval(Error(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Error(z0, z1), z2, z3, z4) 25.20/6.98
eeval(F, z0, z1, z2) → F 25.20/6.98
eeval(T, z0, z1, z2) → T 25.20/6.98
eeval(Fun(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Fun(z0, z1), z2, z3, z4) 25.20/6.98
eeval(Eq(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Eq(z0, z1), z2, z3, z4) 25.20/6.98
eeval(ITE(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](False, ITE(z0, z1, z2), z3, z4, z5) 25.20/6.98
eeval(Bsf(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](True, Bsf(z0, z1, z2), z3, z4, z5) 25.20/6.98
eeval(Var(z0), z1, z2, z3) → lookvar(z0, z1, z2) 25.20/6.98
run(Cons(Fun(z0, z1), z2), z3) → run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) 25.20/6.98
eqExp(Error(z0, z1), Error(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.20/6.98
eqExp(Error(z0, z1), F) → False 25.20/6.98
eqExp(Error(z0, z1), T) → False 25.20/6.98
eqExp(Error(z0, z1), Fun(z2, z3)) → False 25.20/6.98
eqExp(Error(z0, z1), Eq(z2, z3)) → False 25.20/6.98
eqExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.98
eqExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.98
eqExp(Error(z0, z1), Var(z2)) → False 25.20/6.98
eqExp(F, Error(z0, z1)) → False 25.20/6.98
eqExp(F, F) → True 25.20/6.98
eqExp(F, T) → False 25.20/6.98
eqExp(F, Fun(z0, z1)) → False 25.20/6.98
eqExp(F, Eq(z0, z1)) → False 25.20/6.98
eqExp(F, ITE(z0, z1, z2)) → False 25.20/6.98
eqExp(F, Bsf(z0, z1, z2)) → False 25.20/6.98
eqExp(F, Var(z0)) → False 25.20/6.98
eqExp(T, Error(z0, z1)) → False 25.20/6.98
eqExp(T, F) → False 25.20/6.98
eqExp(T, T) → True 25.20/6.98
eqExp(T, Fun(z0, z1)) → False 25.20/6.98
eqExp(T, Eq(z0, z1)) → False 25.20/6.98
eqExp(T, ITE(z0, z1, z2)) → False 25.20/6.98
eqExp(T, Bsf(z0, z1, z2)) → False 25.20/6.98
eqExp(T, Var(z0)) → False 25.20/6.98
eqExp(Fun(z0, z1), Error(z2, z3)) → False 25.20/6.98
eqExp(Fun(z0, z1), F) → False 25.20/6.98
eqExp(Fun(z0, z1), T) → False 25.20/6.98
eqExp(Fun(z0, z1), Fun(z2, z3)) → and(!EQ(z0, z2), eqExp(z1, z3)) 25.20/6.98
eqExp(Fun(z0, z1), Eq(z2, z3)) → False 25.20/6.98
eqExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.98
eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.98
eqExp(Fun(z0, z1), Var(z2)) → False 25.20/6.98
eqExp(Eq(z0, z1), Error(z2, z3)) → False 25.20/6.98
eqExp(Eq(z0, z1), F) → False 25.20/6.98
eqExp(Eq(z0, z1), T) → False 25.20/6.98
eqExp(Eq(z0, z1), Fun(z2, z3)) → False 25.20/6.98
eqExp(Eq(z0, z1), Eq(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.20/6.98
eqExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.98
eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.98
eqExp(Eq(z0, z1), Var(z2)) → False 25.20/6.98
eqExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.20/6.98
eqExp(ITE(z0, z1, z2), F) → False 25.20/6.98
eqExp(ITE(z0, z1, z2), T) → False 25.20/6.98
eqExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.20/6.98
eqExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.20/6.98
eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) 25.20/6.98
eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.20/6.98
eqExp(ITE(z0, z1, z2), Var(z3)) → False 25.20/6.98
eqExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.20/6.98
eqExp(Bsf(z0, z1, z2), F) → False 25.20/6.98
eqExp(Bsf(z0, z1, z2), T) → False 25.20/6.98
eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.20/6.98
eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.20/6.98
eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.20/6.98
eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → and(True, and(eqExp(z1, z4), eqExp(z2, z5))) 25.20/6.98
eqExp(Bsf(z0, z1, z2), Var(z3)) → False 25.20/6.98
eqExp(Var(z0), Error(z1, z2)) → False 25.20/6.98
eqExp(Var(z0), F) → False 25.20/6.98
eqExp(Var(z0), T) → False 25.20/6.98
eqExp(Var(z0), Fun(z1, z2)) → False 25.20/6.98
eqExp(Var(z0), Eq(z1, z2)) → False 25.20/6.98
eqExp(Var(z0), ITE(z1, z2, z3)) → False 25.20/6.98
eqExp(Var(z0), Bsf(z1, z2, z3)) → False 25.20/6.98
eqExp(Var(z0), Var(z1)) → !EQ(z0, z1) 25.20/6.98
checkConstrExp(Error(z0, z1), Error(z2, z3)) → True 25.20/6.98
checkConstrExp(Error(z0, z1), F) → False 25.20/6.98
checkConstrExp(Error(z0, z1), T) → False 25.20/6.98
checkConstrExp(Error(z0, z1), Fun(z2, z3)) → False 25.20/6.98
checkConstrExp(Error(z0, z1), Eq(z2, z3)) → False 25.20/6.98
checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.98
checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.98
checkConstrExp(Error(z0, z1), Var(z2)) → False 25.20/6.98
checkConstrExp(F, Error(z0, z1)) → False 25.20/6.98
checkConstrExp(F, F) → True 25.20/6.98
checkConstrExp(F, T) → False 25.20/6.98
checkConstrExp(F, Fun(z0, z1)) → False 25.20/6.98
checkConstrExp(F, Eq(z0, z1)) → False 25.20/6.98
checkConstrExp(F, ITE(z0, z1, z2)) → False 25.20/6.98
checkConstrExp(F, Bsf(z0, z1, z2)) → False 25.20/6.98
checkConstrExp(F, Var(z0)) → False 25.20/6.98
checkConstrExp(T, Error(z0, z1)) → False 25.20/6.98
checkConstrExp(T, F) → False 25.20/6.98
checkConstrExp(T, T) → True 25.20/6.98
checkConstrExp(T, Fun(z0, z1)) → False 25.20/6.98
checkConstrExp(T, Eq(z0, z1)) → False 25.20/6.98
checkConstrExp(T, ITE(z0, z1, z2)) → False 25.20/6.98
checkConstrExp(T, Bsf(z0, z1, z2)) → False 25.20/6.98
checkConstrExp(T, Var(z0)) → False 25.20/6.98
checkConstrExp(Fun(z0, z1), Error(z2, z3)) → False 25.20/6.98
checkConstrExp(Fun(z0, z1), F) → False 25.20/6.98
checkConstrExp(Fun(z0, z1), T) → False 25.20/6.98
checkConstrExp(Fun(z0, z1), Fun(z2, z3)) → True 25.20/6.98
checkConstrExp(Fun(z0, z1), Eq(z2, z3)) → False 25.20/6.98
checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.98
checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.98
checkConstrExp(Fun(z0, z1), Var(z2)) → False 25.20/6.98
checkConstrExp(Eq(z0, z1), Error(z2, z3)) → False 25.20/6.98
checkConstrExp(Eq(z0, z1), F) → False 25.20/6.98
checkConstrExp(Eq(z0, z1), T) → False 25.20/6.98
checkConstrExp(Eq(z0, z1), Fun(z2, z3)) → False 25.20/6.98
checkConstrExp(Eq(z0, z1), Eq(z2, z3)) → True 25.20/6.98
checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.20/6.98
checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.20/6.98
checkConstrExp(Eq(z0, z1), Var(z2)) → False 25.20/6.98
checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.20/6.98
checkConstrExp(ITE(z0, z1, z2), F) → False 25.20/6.98
checkConstrExp(ITE(z0, z1, z2), T) → False 25.20/6.98
checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.20/6.98
checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.20/6.98
checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → True 25.20/6.98
checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.20/6.98
checkConstrExp(ITE(z0, z1, z2), Var(z3)) → False 25.20/6.98
checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.20/6.98
checkConstrExp(Bsf(z0, z1, z2), F) → False 25.20/6.98
checkConstrExp(Bsf(z0, z1, z2), T) → False 25.20/6.98
checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.20/6.98
checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.20/6.98
checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.20/6.98
checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → True 25.20/6.98
checkConstrExp(Bsf(z0, z1, z2), Var(z3)) → False 25.20/6.98
checkConstrExp(Var(z0), Error(z1, z2)) → False 25.20/6.98
checkConstrExp(Var(z0), F) → False 25.20/6.98
checkConstrExp(Var(z0), T) → False 25.20/6.98
checkConstrExp(Var(z0), Fun(z1, z2)) → False 25.20/6.98
checkConstrExp(Var(z0), Eq(z1, z2)) → False 25.20/6.98
checkConstrExp(Var(z0), ITE(z1, z2, z3)) → False 25.20/6.98
checkConstrExp(Var(z0), Bsf(z1, z2, z3)) → False 25.20/6.98
checkConstrExp(Var(z0), Var(z1)) → True 25.20/6.98
lookname(z0, Cons(Fun(z1, z2), z3)) → lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.20/6.98
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.20/6.98
getVar(Var(z0)) → z0 25.20/6.98
getIfTrue(ITE(z0, z1, z2)) → z1 25.20/6.98
getIfGuard(ITE(z0, z1, z2)) → z0 25.20/6.98
getIfFalse(ITE(z0, z1, z2)) → z2 25.20/6.98
getFuncName(Fun(z0, z1)) → z0 25.20/6.98
getFuncExp(Fun(z0, z1)) → z1 25.20/6.98
getEqSecond(Eq(z0, z1)) → z1 25.20/6.98
getEqFirst(Eq(z0, z1)) → z0 25.20/6.98
getConst(Cst(z0)) → z0 25.20/6.98
getBsfSecondTerm(Bsf(z0, z1, z2)) → z2 25.20/6.98
getBsfOp(Bsf(z0, z1, z2)) → z0 25.20/6.98
getBsfFirstTerm(Bsf(z0, z1, z2)) → z1 25.20/6.98
apply(z0, z1, z2) → apply[Ite][True][Ite](eqExp(z1, z2), z0, z1, z2) 25.20/6.98
lookvar(z0, Cons(z1, z2), z3) → lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) 25.20/6.98
eqOps(z0, z1) → True
Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.20/6.98
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.20/6.98
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.20/6.98
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.20/6.98
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.20/6.98
EEVAL(Var(z0), z1, z2, z3) → c24(LOOKVAR(z0, z1, z2)) 25.20/6.98
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.20/6.98
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.20/6.98
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.20/6.98
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.20/6.98
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.20/6.98
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.20/6.98
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.20/6.98
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.20/6.98
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.20/6.98
APPLY(z0, z1, z2) → c168(EQEXP(z1, z2)) 25.20/6.98
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2)))) 25.56/7.04
RUN(Cons(Fun(z0, z1), z2), z3) → c1(LOOKBODY(z0, Cons(Fun(z0, z1), z2)))
S tuples:

EEVAL(Var(z0), z1, z2, z3) → c24(LOOKVAR(z0, z1, z2)) 25.56/7.04
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.04
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.04
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.04
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.56/7.04
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.04
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.56/7.04
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.04
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.04
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.04
APPLY(z0, z1, z2) → c168(EQEXP(z1, z2)) 25.56/7.04
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2)))) 25.56/7.04
RUN(Cons(Fun(z0, z1), z2), z3) → c1(LOOKBODY(z0, Cons(Fun(z0, z1), z2)))
K tuples:none
Defined Rule Symbols:

eeval, run, eqExp, checkConstrExp, lookname, lookbody, getVar, getIfTrue, getIfGuard, getIfFalse, getFuncName, getFuncExp, getEqSecond, getEqFirst, getConst, getBsfSecondTerm, getBsfOp, getBsfFirstTerm, apply, lookvar, eqOps, !EQ, and, lookvar[Ite], lookname[Ite], lookbody[Ite], apply[Ite][True][Ite], run[Let][Let]

Defined Pair Symbols:

!EQ', LOOKVAR[ITE], LOOKNAME[ITE], LOOKBODY[ITE], RUN[LET][LET], EEVAL, EQEXP, LOOKNAME, LOOKBODY, LOOKVAR, APPLY, RUN

Compound Symbols:

c, c8, c11, c13, c16, c24, c89, c154, c155, c169, c26, c53, c62, c71, c80, c168, c1

25.56/7.04
25.56/7.04

(7) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)

Removed 3 leading nodes:

APPLY(z0, z1, z2) → c168(EQEXP(z1, z2)) 25.56/7.04
RUN(Cons(Fun(z0, z1), z2), z3) → c1(LOOKBODY(z0, Cons(Fun(z0, z1), z2))) 25.56/7.04
EEVAL(Var(z0), z1, z2, z3) → c24(LOOKVAR(z0, z1, z2))
25.56/7.04
25.56/7.04

(8) Obligation:

Complexity Dependency Tuples Problem
Rules:

!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.56/7.04
!EQ(0, S(z0)) → False 25.56/7.04
!EQ(S(z0), 0) → False 25.56/7.04
!EQ(0, 0) → True 25.56/7.04
and(False, False) → False 25.56/7.04
and(True, False) → False 25.56/7.04
and(False, True) → False 25.56/7.04
and(True, True) → True 25.56/7.04
lookvar[Ite](False, z0, Cons(z0, z1), Cons(z2, z3)) → lookvar(z0, z1, z3) 25.56/7.04
lookvar[Ite](True, z0, z1, Cons(z2, z3)) → z2 25.56/7.04
lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z1 25.56/7.04
lookname[Ite](False, z0, Cons(z1, z2)) → lookname(z0, z2) 25.56/7.04
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.56/7.04
lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.56/7.04
apply[Ite][True][Ite](False, z0, z1, z2) → F 25.56/7.04
apply[Ite][True][Ite](True, z0, z1, z2) → T 25.56/7.04
run[Let][Let](z0, z1, z2, z3) → run[Let][Let][Let](z0, z1, z2, z3, lookname(z2, z0)) 25.56/7.04
eeval(Error(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Error(z0, z1), z2, z3, z4) 25.56/7.04
eeval(F, z0, z1, z2) → F 25.56/7.04
eeval(T, z0, z1, z2) → T 25.56/7.04
eeval(Fun(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Fun(z0, z1), z2, z3, z4) 25.56/7.04
eeval(Eq(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Eq(z0, z1), z2, z3, z4) 25.56/7.04
eeval(ITE(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](False, ITE(z0, z1, z2), z3, z4, z5) 25.56/7.04
eeval(Bsf(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](True, Bsf(z0, z1, z2), z3, z4, z5) 25.56/7.04
eeval(Var(z0), z1, z2, z3) → lookvar(z0, z1, z2) 25.56/7.04
run(Cons(Fun(z0, z1), z2), z3) → run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) 25.56/7.04
eqExp(Error(z0, z1), Error(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.56/7.04
eqExp(Error(z0, z1), F) → False 25.56/7.04
eqExp(Error(z0, z1), T) → False 25.56/7.04
eqExp(Error(z0, z1), Fun(z2, z3)) → False 25.56/7.04
eqExp(Error(z0, z1), Eq(z2, z3)) → False 25.56/7.04
eqExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.04
eqExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.04
eqExp(Error(z0, z1), Var(z2)) → False 25.56/7.04
eqExp(F, Error(z0, z1)) → False 25.56/7.04
eqExp(F, F) → True 25.56/7.04
eqExp(F, T) → False 25.56/7.04
eqExp(F, Fun(z0, z1)) → False 25.56/7.04
eqExp(F, Eq(z0, z1)) → False 25.56/7.04
eqExp(F, ITE(z0, z1, z2)) → False 25.56/7.04
eqExp(F, Bsf(z0, z1, z2)) → False 25.56/7.04
eqExp(F, Var(z0)) → False 25.56/7.04
eqExp(T, Error(z0, z1)) → False 25.56/7.04
eqExp(T, F) → False 25.56/7.04
eqExp(T, T) → True 25.56/7.04
eqExp(T, Fun(z0, z1)) → False 25.56/7.04
eqExp(T, Eq(z0, z1)) → False 25.56/7.04
eqExp(T, ITE(z0, z1, z2)) → False 25.56/7.04
eqExp(T, Bsf(z0, z1, z2)) → False 25.56/7.04
eqExp(T, Var(z0)) → False 25.56/7.04
eqExp(Fun(z0, z1), Error(z2, z3)) → False 25.56/7.04
eqExp(Fun(z0, z1), F) → False 25.56/7.04
eqExp(Fun(z0, z1), T) → False 25.56/7.04
eqExp(Fun(z0, z1), Fun(z2, z3)) → and(!EQ(z0, z2), eqExp(z1, z3)) 25.56/7.04
eqExp(Fun(z0, z1), Eq(z2, z3)) → False 25.56/7.04
eqExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.04
eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.04
eqExp(Fun(z0, z1), Var(z2)) → False 25.56/7.04
eqExp(Eq(z0, z1), Error(z2, z3)) → False 25.56/7.04
eqExp(Eq(z0, z1), F) → False 25.56/7.04
eqExp(Eq(z0, z1), T) → False 25.56/7.04
eqExp(Eq(z0, z1), Fun(z2, z3)) → False 25.56/7.04
eqExp(Eq(z0, z1), Eq(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.56/7.04
eqExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.04
eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.04
eqExp(Eq(z0, z1), Var(z2)) → False 25.56/7.04
eqExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.56/7.04
eqExp(ITE(z0, z1, z2), F) → False 25.56/7.04
eqExp(ITE(z0, z1, z2), T) → False 25.56/7.04
eqExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.04
eqExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.04
eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) 25.56/7.04
eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.56/7.04
eqExp(ITE(z0, z1, z2), Var(z3)) → False 25.56/7.04
eqExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.56/7.04
eqExp(Bsf(z0, z1, z2), F) → False 25.56/7.04
eqExp(Bsf(z0, z1, z2), T) → False 25.56/7.04
eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.04
eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.04
eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.56/7.04
eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → and(True, and(eqExp(z1, z4), eqExp(z2, z5))) 25.56/7.04
eqExp(Bsf(z0, z1, z2), Var(z3)) → False 25.56/7.04
eqExp(Var(z0), Error(z1, z2)) → False 25.56/7.04
eqExp(Var(z0), F) → False 25.56/7.04
eqExp(Var(z0), T) → False 25.56/7.04
eqExp(Var(z0), Fun(z1, z2)) → False 25.56/7.04
eqExp(Var(z0), Eq(z1, z2)) → False 25.56/7.04
eqExp(Var(z0), ITE(z1, z2, z3)) → False 25.56/7.04
eqExp(Var(z0), Bsf(z1, z2, z3)) → False 25.56/7.04
eqExp(Var(z0), Var(z1)) → !EQ(z0, z1) 25.56/7.04
checkConstrExp(Error(z0, z1), Error(z2, z3)) → True 25.56/7.04
checkConstrExp(Error(z0, z1), F) → False 25.56/7.04
checkConstrExp(Error(z0, z1), T) → False 25.56/7.04
checkConstrExp(Error(z0, z1), Fun(z2, z3)) → False 25.56/7.04
checkConstrExp(Error(z0, z1), Eq(z2, z3)) → False 25.56/7.04
checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.04
checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.04
checkConstrExp(Error(z0, z1), Var(z2)) → False 25.56/7.04
checkConstrExp(F, Error(z0, z1)) → False 25.56/7.04
checkConstrExp(F, F) → True 25.56/7.04
checkConstrExp(F, T) → False 25.56/7.04
checkConstrExp(F, Fun(z0, z1)) → False 25.56/7.04
checkConstrExp(F, Eq(z0, z1)) → False 25.56/7.04
checkConstrExp(F, ITE(z0, z1, z2)) → False 25.56/7.04
checkConstrExp(F, Bsf(z0, z1, z2)) → False 25.56/7.04
checkConstrExp(F, Var(z0)) → False 25.56/7.04
checkConstrExp(T, Error(z0, z1)) → False 25.56/7.04
checkConstrExp(T, F) → False 25.56/7.04
checkConstrExp(T, T) → True 25.56/7.04
checkConstrExp(T, Fun(z0, z1)) → False 25.56/7.04
checkConstrExp(T, Eq(z0, z1)) → False 25.56/7.04
checkConstrExp(T, ITE(z0, z1, z2)) → False 25.56/7.04
checkConstrExp(T, Bsf(z0, z1, z2)) → False 25.56/7.04
checkConstrExp(T, Var(z0)) → False 25.56/7.04
checkConstrExp(Fun(z0, z1), Error(z2, z3)) → False 25.56/7.04
checkConstrExp(Fun(z0, z1), F) → False 25.56/7.04
checkConstrExp(Fun(z0, z1), T) → False 25.56/7.04
checkConstrExp(Fun(z0, z1), Fun(z2, z3)) → True 25.56/7.04
checkConstrExp(Fun(z0, z1), Eq(z2, z3)) → False 25.56/7.04
checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.04
checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.04
checkConstrExp(Fun(z0, z1), Var(z2)) → False 25.56/7.04
checkConstrExp(Eq(z0, z1), Error(z2, z3)) → False 25.56/7.04
checkConstrExp(Eq(z0, z1), F) → False 25.56/7.04
checkConstrExp(Eq(z0, z1), T) → False 25.56/7.04
checkConstrExp(Eq(z0, z1), Fun(z2, z3)) → False 25.56/7.04
checkConstrExp(Eq(z0, z1), Eq(z2, z3)) → True 25.56/7.04
checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.04
checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.04
checkConstrExp(Eq(z0, z1), Var(z2)) → False 25.56/7.04
checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.56/7.04
checkConstrExp(ITE(z0, z1, z2), F) → False 25.56/7.04
checkConstrExp(ITE(z0, z1, z2), T) → False 25.56/7.04
checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.04
checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.04
checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → True 25.56/7.04
checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.56/7.04
checkConstrExp(ITE(z0, z1, z2), Var(z3)) → False 25.56/7.04
checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.56/7.04
checkConstrExp(Bsf(z0, z1, z2), F) → False 25.56/7.04
checkConstrExp(Bsf(z0, z1, z2), T) → False 25.56/7.04
checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.04
checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.04
checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.56/7.04
checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → True 25.56/7.04
checkConstrExp(Bsf(z0, z1, z2), Var(z3)) → False 25.56/7.04
checkConstrExp(Var(z0), Error(z1, z2)) → False 25.56/7.04
checkConstrExp(Var(z0), F) → False 25.56/7.04
checkConstrExp(Var(z0), T) → False 25.56/7.04
checkConstrExp(Var(z0), Fun(z1, z2)) → False 25.56/7.04
checkConstrExp(Var(z0), Eq(z1, z2)) → False 25.56/7.04
checkConstrExp(Var(z0), ITE(z1, z2, z3)) → False 25.56/7.04
checkConstrExp(Var(z0), Bsf(z1, z2, z3)) → False 25.56/7.04
checkConstrExp(Var(z0), Var(z1)) → True 25.56/7.04
lookname(z0, Cons(Fun(z1, z2), z3)) → lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.56/7.04
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.56/7.04
getVar(Var(z0)) → z0 25.56/7.04
getIfTrue(ITE(z0, z1, z2)) → z1 25.56/7.04
getIfGuard(ITE(z0, z1, z2)) → z0 25.56/7.04
getIfFalse(ITE(z0, z1, z2)) → z2 25.56/7.04
getFuncName(Fun(z0, z1)) → z0 25.56/7.04
getFuncExp(Fun(z0, z1)) → z1 25.56/7.04
getEqSecond(Eq(z0, z1)) → z1 25.56/7.04
getEqFirst(Eq(z0, z1)) → z0 25.56/7.04
getConst(Cst(z0)) → z0 25.56/7.04
getBsfSecondTerm(Bsf(z0, z1, z2)) → z2 25.56/7.04
getBsfOp(Bsf(z0, z1, z2)) → z0 25.56/7.04
getBsfFirstTerm(Bsf(z0, z1, z2)) → z1 25.56/7.04
apply(z0, z1, z2) → apply[Ite][True][Ite](eqExp(z1, z2), z0, z1, z2) 25.56/7.04
lookvar(z0, Cons(z1, z2), z3) → lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) 25.56/7.04
eqOps(z0, z1) → True
Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.56/7.04
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.56/7.04
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.56/7.04
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.56/7.04
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.56/7.04
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.04
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.04
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.04
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.56/7.04
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.04
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.56/7.04
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.04
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.04
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.04
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
S tuples:

EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.04
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.04
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.04
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.56/7.05
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.05
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.56/7.05
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.05
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.05
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.05
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
K tuples:none
Defined Rule Symbols:

eeval, run, eqExp, checkConstrExp, lookname, lookbody, getVar, getIfTrue, getIfGuard, getIfFalse, getFuncName, getFuncExp, getEqSecond, getEqFirst, getConst, getBsfSecondTerm, getBsfOp, getBsfFirstTerm, apply, lookvar, eqOps, !EQ, and, lookvar[Ite], lookname[Ite], lookbody[Ite], apply[Ite][True][Ite], run[Let][Let]

Defined Pair Symbols:

!EQ', LOOKVAR[ITE], LOOKNAME[ITE], LOOKBODY[ITE], RUN[LET][LET], EQEXP, LOOKNAME, LOOKBODY, LOOKVAR, RUN

Compound Symbols:

c, c8, c11, c13, c16, c89, c154, c155, c169, c26, c53, c62, c71, c80, c1

25.56/7.05
25.56/7.05

(9) CdtKnowledgeProof (BOTH BOUNDS(ID, ID) transformation)

The following tuples could be moved from S to K by knowledge propagation:

RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2)))) 25.56/7.05
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0))
25.56/7.05
25.56/7.05

(10) Obligation:

Complexity Dependency Tuples Problem
Rules:

!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.56/7.05
!EQ(0, S(z0)) → False 25.56/7.05
!EQ(S(z0), 0) → False 25.56/7.05
!EQ(0, 0) → True 25.56/7.05
and(False, False) → False 25.56/7.05
and(True, False) → False 25.56/7.05
and(False, True) → False 25.56/7.05
and(True, True) → True 25.56/7.05
lookvar[Ite](False, z0, Cons(z0, z1), Cons(z2, z3)) → lookvar(z0, z1, z3) 25.56/7.05
lookvar[Ite](True, z0, z1, Cons(z2, z3)) → z2 25.56/7.05
lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z1 25.56/7.05
lookname[Ite](False, z0, Cons(z1, z2)) → lookname(z0, z2) 25.56/7.05
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.56/7.05
lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.56/7.05
apply[Ite][True][Ite](False, z0, z1, z2) → F 25.56/7.05
apply[Ite][True][Ite](True, z0, z1, z2) → T 25.56/7.05
run[Let][Let](z0, z1, z2, z3) → run[Let][Let][Let](z0, z1, z2, z3, lookname(z2, z0)) 25.56/7.05
eeval(Error(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Error(z0, z1), z2, z3, z4) 25.56/7.05
eeval(F, z0, z1, z2) → F 25.56/7.05
eeval(T, z0, z1, z2) → T 25.56/7.05
eeval(Fun(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Fun(z0, z1), z2, z3, z4) 25.56/7.05
eeval(Eq(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Eq(z0, z1), z2, z3, z4) 25.56/7.05
eeval(ITE(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](False, ITE(z0, z1, z2), z3, z4, z5) 25.56/7.05
eeval(Bsf(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](True, Bsf(z0, z1, z2), z3, z4, z5) 25.56/7.05
eeval(Var(z0), z1, z2, z3) → lookvar(z0, z1, z2) 25.56/7.05
run(Cons(Fun(z0, z1), z2), z3) → run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) 25.56/7.05
eqExp(Error(z0, z1), Error(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.56/7.05
eqExp(Error(z0, z1), F) → False 25.56/7.05
eqExp(Error(z0, z1), T) → False 25.56/7.05
eqExp(Error(z0, z1), Fun(z2, z3)) → False 25.56/7.05
eqExp(Error(z0, z1), Eq(z2, z3)) → False 25.56/7.05
eqExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.05
eqExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.05
eqExp(Error(z0, z1), Var(z2)) → False 25.56/7.05
eqExp(F, Error(z0, z1)) → False 25.56/7.05
eqExp(F, F) → True 25.56/7.05
eqExp(F, T) → False 25.56/7.05
eqExp(F, Fun(z0, z1)) → False 25.56/7.05
eqExp(F, Eq(z0, z1)) → False 25.56/7.05
eqExp(F, ITE(z0, z1, z2)) → False 25.56/7.05
eqExp(F, Bsf(z0, z1, z2)) → False 25.56/7.05
eqExp(F, Var(z0)) → False 25.56/7.05
eqExp(T, Error(z0, z1)) → False 25.56/7.05
eqExp(T, F) → False 25.56/7.05
eqExp(T, T) → True 25.56/7.05
eqExp(T, Fun(z0, z1)) → False 25.56/7.05
eqExp(T, Eq(z0, z1)) → False 25.56/7.05
eqExp(T, ITE(z0, z1, z2)) → False 25.56/7.05
eqExp(T, Bsf(z0, z1, z2)) → False 25.56/7.05
eqExp(T, Var(z0)) → False 25.56/7.05
eqExp(Fun(z0, z1), Error(z2, z3)) → False 25.56/7.05
eqExp(Fun(z0, z1), F) → False 25.56/7.05
eqExp(Fun(z0, z1), T) → False 25.56/7.05
eqExp(Fun(z0, z1), Fun(z2, z3)) → and(!EQ(z0, z2), eqExp(z1, z3)) 25.56/7.05
eqExp(Fun(z0, z1), Eq(z2, z3)) → False 25.56/7.05
eqExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.05
eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.05
eqExp(Fun(z0, z1), Var(z2)) → False 25.56/7.05
eqExp(Eq(z0, z1), Error(z2, z3)) → False 25.56/7.05
eqExp(Eq(z0, z1), F) → False 25.56/7.05
eqExp(Eq(z0, z1), T) → False 25.56/7.05
eqExp(Eq(z0, z1), Fun(z2, z3)) → False 25.56/7.05
eqExp(Eq(z0, z1), Eq(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.56/7.05
eqExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.05
eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.05
eqExp(Eq(z0, z1), Var(z2)) → False 25.56/7.05
eqExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.56/7.05
eqExp(ITE(z0, z1, z2), F) → False 25.56/7.05
eqExp(ITE(z0, z1, z2), T) → False 25.56/7.05
eqExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.05
eqExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.05
eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) 25.56/7.05
eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.56/7.05
eqExp(ITE(z0, z1, z2), Var(z3)) → False 25.56/7.05
eqExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.56/7.05
eqExp(Bsf(z0, z1, z2), F) → False 25.56/7.05
eqExp(Bsf(z0, z1, z2), T) → False 25.56/7.05
eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.05
eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.05
eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.56/7.05
eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → and(True, and(eqExp(z1, z4), eqExp(z2, z5))) 25.56/7.05
eqExp(Bsf(z0, z1, z2), Var(z3)) → False 25.56/7.05
eqExp(Var(z0), Error(z1, z2)) → False 25.56/7.05
eqExp(Var(z0), F) → False 25.56/7.05
eqExp(Var(z0), T) → False 25.56/7.05
eqExp(Var(z0), Fun(z1, z2)) → False 25.56/7.05
eqExp(Var(z0), Eq(z1, z2)) → False 25.56/7.05
eqExp(Var(z0), ITE(z1, z2, z3)) → False 25.56/7.05
eqExp(Var(z0), Bsf(z1, z2, z3)) → False 25.56/7.05
eqExp(Var(z0), Var(z1)) → !EQ(z0, z1) 25.56/7.05
checkConstrExp(Error(z0, z1), Error(z2, z3)) → True 25.56/7.05
checkConstrExp(Error(z0, z1), F) → False 25.56/7.05
checkConstrExp(Error(z0, z1), T) → False 25.56/7.05
checkConstrExp(Error(z0, z1), Fun(z2, z3)) → False 25.56/7.05
checkConstrExp(Error(z0, z1), Eq(z2, z3)) → False 25.56/7.05
checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.05
checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.05
checkConstrExp(Error(z0, z1), Var(z2)) → False 25.56/7.05
checkConstrExp(F, Error(z0, z1)) → False 25.56/7.05
checkConstrExp(F, F) → True 25.56/7.05
checkConstrExp(F, T) → False 25.56/7.05
checkConstrExp(F, Fun(z0, z1)) → False 25.56/7.05
checkConstrExp(F, Eq(z0, z1)) → False 25.56/7.05
checkConstrExp(F, ITE(z0, z1, z2)) → False 25.56/7.05
checkConstrExp(F, Bsf(z0, z1, z2)) → False 25.56/7.05
checkConstrExp(F, Var(z0)) → False 25.56/7.05
checkConstrExp(T, Error(z0, z1)) → False 25.56/7.05
checkConstrExp(T, F) → False 25.56/7.05
checkConstrExp(T, T) → True 25.56/7.05
checkConstrExp(T, Fun(z0, z1)) → False 25.56/7.05
checkConstrExp(T, Eq(z0, z1)) → False 25.56/7.05
checkConstrExp(T, ITE(z0, z1, z2)) → False 25.56/7.05
checkConstrExp(T, Bsf(z0, z1, z2)) → False 25.56/7.05
checkConstrExp(T, Var(z0)) → False 25.56/7.05
checkConstrExp(Fun(z0, z1), Error(z2, z3)) → False 25.56/7.05
checkConstrExp(Fun(z0, z1), F) → False 25.56/7.05
checkConstrExp(Fun(z0, z1), T) → False 25.56/7.05
checkConstrExp(Fun(z0, z1), Fun(z2, z3)) → True 25.56/7.05
checkConstrExp(Fun(z0, z1), Eq(z2, z3)) → False 25.56/7.05
checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.05
checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.05
checkConstrExp(Fun(z0, z1), Var(z2)) → False 25.56/7.05
checkConstrExp(Eq(z0, z1), Error(z2, z3)) → False 25.56/7.05
checkConstrExp(Eq(z0, z1), F) → False 25.56/7.05
checkConstrExp(Eq(z0, z1), T) → False 25.56/7.05
checkConstrExp(Eq(z0, z1), Fun(z2, z3)) → False 25.56/7.05
checkConstrExp(Eq(z0, z1), Eq(z2, z3)) → True 25.56/7.05
checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.05
checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.05
checkConstrExp(Eq(z0, z1), Var(z2)) → False 25.56/7.05
checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.56/7.05
checkConstrExp(ITE(z0, z1, z2), F) → False 25.56/7.05
checkConstrExp(ITE(z0, z1, z2), T) → False 25.56/7.05
checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.05
checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.05
checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → True 25.56/7.05
checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.56/7.05
checkConstrExp(ITE(z0, z1, z2), Var(z3)) → False 25.56/7.05
checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.56/7.05
checkConstrExp(Bsf(z0, z1, z2), F) → False 25.56/7.05
checkConstrExp(Bsf(z0, z1, z2), T) → False 25.56/7.05
checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.05
checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.05
checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.56/7.05
checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → True 25.56/7.05
checkConstrExp(Bsf(z0, z1, z2), Var(z3)) → False 25.56/7.05
checkConstrExp(Var(z0), Error(z1, z2)) → False 25.56/7.05
checkConstrExp(Var(z0), F) → False 25.56/7.05
checkConstrExp(Var(z0), T) → False 25.56/7.05
checkConstrExp(Var(z0), Fun(z1, z2)) → False 25.56/7.05
checkConstrExp(Var(z0), Eq(z1, z2)) → False 25.56/7.05
checkConstrExp(Var(z0), ITE(z1, z2, z3)) → False 25.56/7.05
checkConstrExp(Var(z0), Bsf(z1, z2, z3)) → False 25.56/7.05
checkConstrExp(Var(z0), Var(z1)) → True 25.56/7.05
lookname(z0, Cons(Fun(z1, z2), z3)) → lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.56/7.05
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.56/7.05
getVar(Var(z0)) → z0 25.56/7.05
getIfTrue(ITE(z0, z1, z2)) → z1 25.56/7.05
getIfGuard(ITE(z0, z1, z2)) → z0 25.56/7.05
getIfFalse(ITE(z0, z1, z2)) → z2 25.56/7.05
getFuncName(Fun(z0, z1)) → z0 25.56/7.05
getFuncExp(Fun(z0, z1)) → z1 25.56/7.05
getEqSecond(Eq(z0, z1)) → z1 25.56/7.05
getEqFirst(Eq(z0, z1)) → z0 25.56/7.05
getConst(Cst(z0)) → z0 25.56/7.05
getBsfSecondTerm(Bsf(z0, z1, z2)) → z2 25.56/7.05
getBsfOp(Bsf(z0, z1, z2)) → z0 25.56/7.05
getBsfFirstTerm(Bsf(z0, z1, z2)) → z1 25.56/7.05
apply(z0, z1, z2) → apply[Ite][True][Ite](eqExp(z1, z2), z0, z1, z2) 25.56/7.05
lookvar(z0, Cons(z1, z2), z3) → lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) 25.56/7.05
eqOps(z0, z1) → True
Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.56/7.05
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.56/7.05
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.56/7.05
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.56/7.05
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.56/7.05
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.05
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.05
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.05
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.56/7.05
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.05
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.56/7.05
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.05
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.05
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.05
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
S tuples:

EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.05
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.05
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.05
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.56/7.05
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.05
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.56/7.05
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.05
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.05
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5))
K tuples:

RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2)))) 25.56/7.05
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0))
Defined Rule Symbols:

eeval, run, eqExp, checkConstrExp, lookname, lookbody, getVar, getIfTrue, getIfGuard, getIfFalse, getFuncName, getFuncExp, getEqSecond, getEqFirst, getConst, getBsfSecondTerm, getBsfOp, getBsfFirstTerm, apply, lookvar, eqOps, !EQ, and, lookvar[Ite], lookname[Ite], lookbody[Ite], apply[Ite][True][Ite], run[Let][Let]

Defined Pair Symbols:

!EQ', LOOKVAR[ITE], LOOKNAME[ITE], LOOKBODY[ITE], RUN[LET][LET], EQEXP, LOOKNAME, LOOKBODY, LOOKVAR, RUN

Compound Symbols:

c, c8, c11, c13, c16, c89, c154, c155, c169, c26, c53, c62, c71, c80, c1

25.56/7.05
25.56/7.05

(11) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1))
We considered the (Usable) Rules:

lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.56/7.05
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.56/7.05
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.56/7.05
!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.56/7.05
!EQ(0, S(z0)) → False 25.56/7.05
!EQ(S(z0), 0) → False 25.56/7.05
!EQ(0, 0) → True
And the Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.56/7.05
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.56/7.05
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.56/7.05
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.56/7.05
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.56/7.05
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.05
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.56/7.09
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.09
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.09
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
The order we found is given by the following interpretation:
Polynomial interpretation : 25.56/7.09

POL(!EQ(x1, x2)) = 0    25.56/7.09
POL(!EQ'(x1, x2)) = 0    25.56/7.09
POL(0) = 0    25.56/7.09
POL(Bsf(x1, x2, x3)) = x2 + x3    25.56/7.09
POL(Cons(x1, x2)) = [2] + x1 + x2    25.56/7.09
POL(EQEXP(x1, x2)) = 0    25.56/7.09
POL(Eq(x1, x2)) = x1 + x2    25.56/7.09
POL(Error(x1, x2)) = x1 + x2    25.56/7.09
POL(False) = 0    25.56/7.09
POL(Fun(x1, x2)) = [2]    25.56/7.09
POL(ITE(x1, x2, x3)) = x1 + x2 + x3    25.56/7.09
POL(LOOKBODY(x1, x2)) = [4] + [4]x2    25.56/7.09
POL(LOOKBODY[ITE](x1, x2, x3)) = [4]x3    25.56/7.09
POL(LOOKNAME(x1, x2)) = 0    25.56/7.09
POL(LOOKNAME[ITE](x1, x2, x3)) = 0    25.56/7.09
POL(LOOKVAR(x1, x2, x3)) = 0    25.56/7.09
POL(LOOKVAR[ITE](x1, x2, x3, x4)) = 0    25.56/7.09
POL(RUN(x1, x2)) = [1] + [5]x2    25.56/7.09
POL(RUN[LET][LET](x1, x2, x3, x4)) = 0    25.56/7.09
POL(S(x1)) = x1    25.56/7.09
POL(True) = [3]    25.56/7.09
POL(Var(x1)) = 0    25.56/7.09
POL(c(x1)) = x1    25.56/7.09
POL(c1(x1)) = x1    25.56/7.09
POL(c11(x1)) = x1    25.56/7.09
POL(c13(x1)) = x1    25.56/7.09
POL(c154(x1, x2)) = x1 + x2    25.56/7.09
POL(c155(x1, x2)) = x1 + x2    25.56/7.09
POL(c16(x1)) = x1    25.56/7.09
POL(c169(x1, x2)) = x1 + x2    25.56/7.09
POL(c26(x1, x2)) = x1 + x2    25.56/7.09
POL(c53(x1, x2)) = x1 + x2    25.56/7.09
POL(c62(x1, x2)) = x1 + x2    25.56/7.09
POL(c71(x1, x2, x3)) = x1 + x2 + x3    25.56/7.09
POL(c8(x1)) = x1    25.56/7.09
POL(c80(x1, x2)) = x1 + x2    25.56/7.09
POL(c89(x1)) = x1    25.56/7.09
POL(lookbody(x1, x2)) = 0    25.56/7.09
POL(lookbody[Ite](x1, x2, x3)) = [3] + [3]x2 + [3]x3   
25.56/7.09
25.56/7.09

(12) Obligation:

Complexity Dependency Tuples Problem
Rules:

!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.56/7.09
!EQ(0, S(z0)) → False 25.56/7.09
!EQ(S(z0), 0) → False 25.56/7.09
!EQ(0, 0) → True 25.56/7.09
and(False, False) → False 25.56/7.09
and(True, False) → False 25.56/7.09
and(False, True) → False 25.56/7.09
and(True, True) → True 25.56/7.09
lookvar[Ite](False, z0, Cons(z0, z1), Cons(z2, z3)) → lookvar(z0, z1, z3) 25.56/7.09
lookvar[Ite](True, z0, z1, Cons(z2, z3)) → z2 25.56/7.09
lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z1 25.56/7.09
lookname[Ite](False, z0, Cons(z1, z2)) → lookname(z0, z2) 25.56/7.09
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.56/7.09
lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.56/7.09
apply[Ite][True][Ite](False, z0, z1, z2) → F 25.56/7.09
apply[Ite][True][Ite](True, z0, z1, z2) → T 25.56/7.09
run[Let][Let](z0, z1, z2, z3) → run[Let][Let][Let](z0, z1, z2, z3, lookname(z2, z0)) 25.56/7.09
eeval(Error(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Error(z0, z1), z2, z3, z4) 25.56/7.09
eeval(F, z0, z1, z2) → F 25.56/7.09
eeval(T, z0, z1, z2) → T 25.56/7.09
eeval(Fun(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Fun(z0, z1), z2, z3, z4) 25.56/7.09
eeval(Eq(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Eq(z0, z1), z2, z3, z4) 25.56/7.09
eeval(ITE(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](False, ITE(z0, z1, z2), z3, z4, z5) 25.56/7.09
eeval(Bsf(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](True, Bsf(z0, z1, z2), z3, z4, z5) 25.56/7.09
eeval(Var(z0), z1, z2, z3) → lookvar(z0, z1, z2) 25.56/7.09
run(Cons(Fun(z0, z1), z2), z3) → run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) 25.56/7.09
eqExp(Error(z0, z1), Error(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.56/7.09
eqExp(Error(z0, z1), F) → False 25.56/7.09
eqExp(Error(z0, z1), T) → False 25.56/7.09
eqExp(Error(z0, z1), Fun(z2, z3)) → False 25.56/7.09
eqExp(Error(z0, z1), Eq(z2, z3)) → False 25.56/7.09
eqExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
eqExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
eqExp(Error(z0, z1), Var(z2)) → False 25.56/7.09
eqExp(F, Error(z0, z1)) → False 25.56/7.09
eqExp(F, F) → True 25.56/7.09
eqExp(F, T) → False 25.56/7.09
eqExp(F, Fun(z0, z1)) → False 25.56/7.09
eqExp(F, Eq(z0, z1)) → False 25.56/7.09
eqExp(F, ITE(z0, z1, z2)) → False 25.56/7.09
eqExp(F, Bsf(z0, z1, z2)) → False 25.56/7.09
eqExp(F, Var(z0)) → False 25.56/7.09
eqExp(T, Error(z0, z1)) → False 25.56/7.09
eqExp(T, F) → False 25.56/7.09
eqExp(T, T) → True 25.56/7.09
eqExp(T, Fun(z0, z1)) → False 25.56/7.09
eqExp(T, Eq(z0, z1)) → False 25.56/7.09
eqExp(T, ITE(z0, z1, z2)) → False 25.56/7.09
eqExp(T, Bsf(z0, z1, z2)) → False 25.56/7.09
eqExp(T, Var(z0)) → False 25.56/7.09
eqExp(Fun(z0, z1), Error(z2, z3)) → False 25.56/7.09
eqExp(Fun(z0, z1), F) → False 25.56/7.09
eqExp(Fun(z0, z1), T) → False 25.56/7.09
eqExp(Fun(z0, z1), Fun(z2, z3)) → and(!EQ(z0, z2), eqExp(z1, z3)) 25.56/7.09
eqExp(Fun(z0, z1), Eq(z2, z3)) → False 25.56/7.09
eqExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
eqExp(Fun(z0, z1), Var(z2)) → False 25.56/7.09
eqExp(Eq(z0, z1), Error(z2, z3)) → False 25.56/7.09
eqExp(Eq(z0, z1), F) → False 25.56/7.09
eqExp(Eq(z0, z1), T) → False 25.56/7.09
eqExp(Eq(z0, z1), Fun(z2, z3)) → False 25.56/7.09
eqExp(Eq(z0, z1), Eq(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.56/7.09
eqExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
eqExp(Eq(z0, z1), Var(z2)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), F) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), T) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) 25.56/7.09
eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), Var(z3)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), F) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), T) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → and(True, and(eqExp(z1, z4), eqExp(z2, z5))) 25.56/7.09
eqExp(Bsf(z0, z1, z2), Var(z3)) → False 25.56/7.09
eqExp(Var(z0), Error(z1, z2)) → False 25.56/7.09
eqExp(Var(z0), F) → False 25.56/7.09
eqExp(Var(z0), T) → False 25.56/7.09
eqExp(Var(z0), Fun(z1, z2)) → False 25.56/7.09
eqExp(Var(z0), Eq(z1, z2)) → False 25.56/7.09
eqExp(Var(z0), ITE(z1, z2, z3)) → False 25.56/7.09
eqExp(Var(z0), Bsf(z1, z2, z3)) → False 25.56/7.09
eqExp(Var(z0), Var(z1)) → !EQ(z0, z1) 25.56/7.09
checkConstrExp(Error(z0, z1), Error(z2, z3)) → True 25.56/7.09
checkConstrExp(Error(z0, z1), F) → False 25.56/7.09
checkConstrExp(Error(z0, z1), T) → False 25.56/7.09
checkConstrExp(Error(z0, z1), Fun(z2, z3)) → False 25.56/7.09
checkConstrExp(Error(z0, z1), Eq(z2, z3)) → False 25.56/7.09
checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Error(z0, z1), Var(z2)) → False 25.56/7.09
checkConstrExp(F, Error(z0, z1)) → False 25.56/7.09
checkConstrExp(F, F) → True 25.56/7.09
checkConstrExp(F, T) → False 25.56/7.09
checkConstrExp(F, Fun(z0, z1)) → False 25.56/7.09
checkConstrExp(F, Eq(z0, z1)) → False 25.56/7.09
checkConstrExp(F, ITE(z0, z1, z2)) → False 25.56/7.09
checkConstrExp(F, Bsf(z0, z1, z2)) → False 25.56/7.09
checkConstrExp(F, Var(z0)) → False 25.56/7.09
checkConstrExp(T, Error(z0, z1)) → False 25.56/7.09
checkConstrExp(T, F) → False 25.56/7.09
checkConstrExp(T, T) → True 25.56/7.09
checkConstrExp(T, Fun(z0, z1)) → False 25.56/7.09
checkConstrExp(T, Eq(z0, z1)) → False 25.56/7.09
checkConstrExp(T, ITE(z0, z1, z2)) → False 25.56/7.09
checkConstrExp(T, Bsf(z0, z1, z2)) → False 25.56/7.09
checkConstrExp(T, Var(z0)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), Error(z2, z3)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), F) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), T) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), Fun(z2, z3)) → True 25.56/7.09
checkConstrExp(Fun(z0, z1), Eq(z2, z3)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), Var(z2)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Error(z2, z3)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), F) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), T) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Fun(z2, z3)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Eq(z2, z3)) → True 25.56/7.09
checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Var(z2)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), F) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), T) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → True 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Var(z3)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), F) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), T) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → True 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Var(z3)) → False 25.56/7.09
checkConstrExp(Var(z0), Error(z1, z2)) → False 25.56/7.09
checkConstrExp(Var(z0), F) → False 25.56/7.09
checkConstrExp(Var(z0), T) → False 25.56/7.09
checkConstrExp(Var(z0), Fun(z1, z2)) → False 25.56/7.09
checkConstrExp(Var(z0), Eq(z1, z2)) → False 25.56/7.09
checkConstrExp(Var(z0), ITE(z1, z2, z3)) → False 25.56/7.09
checkConstrExp(Var(z0), Bsf(z1, z2, z3)) → False 25.56/7.09
checkConstrExp(Var(z0), Var(z1)) → True 25.56/7.09
lookname(z0, Cons(Fun(z1, z2), z3)) → lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.56/7.09
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.56/7.09
getVar(Var(z0)) → z0 25.56/7.09
getIfTrue(ITE(z0, z1, z2)) → z1 25.56/7.09
getIfGuard(ITE(z0, z1, z2)) → z0 25.56/7.09
getIfFalse(ITE(z0, z1, z2)) → z2 25.56/7.09
getFuncName(Fun(z0, z1)) → z0 25.56/7.09
getFuncExp(Fun(z0, z1)) → z1 25.56/7.09
getEqSecond(Eq(z0, z1)) → z1 25.56/7.09
getEqFirst(Eq(z0, z1)) → z0 25.56/7.09
getConst(Cst(z0)) → z0 25.56/7.09
getBsfSecondTerm(Bsf(z0, z1, z2)) → z2 25.56/7.09
getBsfOp(Bsf(z0, z1, z2)) → z0 25.56/7.09
getBsfFirstTerm(Bsf(z0, z1, z2)) → z1 25.56/7.09
apply(z0, z1, z2) → apply[Ite][True][Ite](eqExp(z1, z2), z0, z1, z2) 25.56/7.09
lookvar(z0, Cons(z1, z2), z3) → lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) 25.56/7.09
eqOps(z0, z1) → True
Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.56/7.09
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.56/7.09
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.56/7.09
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.56/7.09
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.56/7.09
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.09
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.56/7.09
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.09
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.09
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
S tuples:

EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.09
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.56/7.09
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.09
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5))
K tuples:

RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2)))) 25.56/7.09
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.56/7.09
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1))
Defined Rule Symbols:

eeval, run, eqExp, checkConstrExp, lookname, lookbody, getVar, getIfTrue, getIfGuard, getIfFalse, getFuncName, getFuncExp, getEqSecond, getEqFirst, getConst, getBsfSecondTerm, getBsfOp, getBsfFirstTerm, apply, lookvar, eqOps, !EQ, and, lookvar[Ite], lookname[Ite], lookbody[Ite], apply[Ite][True][Ite], run[Let][Let]

Defined Pair Symbols:

!EQ', LOOKVAR[ITE], LOOKNAME[ITE], LOOKBODY[ITE], RUN[LET][LET], EQEXP, LOOKNAME, LOOKBODY, LOOKVAR, RUN

Compound Symbols:

c, c8, c11, c13, c16, c89, c154, c155, c169, c26, c53, c62, c71, c80, c1

25.56/7.09
25.56/7.09

(13) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5))
We considered the (Usable) Rules:

lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.56/7.09
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.56/7.09
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.56/7.09
!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.56/7.09
!EQ(0, S(z0)) → False 25.56/7.09
!EQ(S(z0), 0) → False 25.56/7.09
!EQ(0, 0) → True
And the Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.56/7.09
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.56/7.09
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.56/7.09
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.56/7.09
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.56/7.09
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.09
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.56/7.09
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.09
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.09
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
The order we found is given by the following interpretation:
Polynomial interpretation : 25.56/7.09

POL(!EQ(x1, x2)) = 0    25.56/7.09
POL(!EQ'(x1, x2)) = 0    25.56/7.09
POL(0) = 0    25.56/7.09
POL(Bsf(x1, x2, x3)) = [4] + x2 + x3    25.56/7.09
POL(Cons(x1, x2)) = 0    25.56/7.09
POL(EQEXP(x1, x2)) = [4]x2    25.56/7.09
POL(Eq(x1, x2)) = x1 + x2    25.56/7.09
POL(Error(x1, x2)) = x1 + x2    25.56/7.09
POL(False) = 0    25.56/7.09
POL(Fun(x1, x2)) = x1 + x2    25.56/7.09
POL(ITE(x1, x2, x3)) = x1 + x2 + x3    25.56/7.09
POL(LOOKBODY(x1, x2)) = 0    25.56/7.09
POL(LOOKBODY[ITE](x1, x2, x3)) = 0    25.56/7.09
POL(LOOKNAME(x1, x2)) = 0    25.56/7.09
POL(LOOKNAME[ITE](x1, x2, x3)) = 0    25.56/7.09
POL(LOOKVAR(x1, x2, x3)) = 0    25.56/7.09
POL(LOOKVAR[ITE](x1, x2, x3, x4)) = 0    25.56/7.09
POL(RUN(x1, x2)) = [4] + [5]x2    25.56/7.09
POL(RUN[LET][LET](x1, x2, x3, x4)) = [2] + [4]x2    25.56/7.09
POL(S(x1)) = x1    25.56/7.09
POL(True) = [3]    25.56/7.09
POL(Var(x1)) = 0    25.56/7.09
POL(c(x1)) = x1    25.56/7.09
POL(c1(x1)) = x1    25.56/7.09
POL(c11(x1)) = x1    25.56/7.09
POL(c13(x1)) = x1    25.56/7.09
POL(c154(x1, x2)) = x1 + x2    25.56/7.09
POL(c155(x1, x2)) = x1 + x2    25.56/7.09
POL(c16(x1)) = x1    25.56/7.09
POL(c169(x1, x2)) = x1 + x2    25.56/7.09
POL(c26(x1, x2)) = x1 + x2    25.56/7.09
POL(c53(x1, x2)) = x1 + x2    25.56/7.09
POL(c62(x1, x2)) = x1 + x2    25.56/7.09
POL(c71(x1, x2, x3)) = x1 + x2 + x3    25.56/7.09
POL(c8(x1)) = x1    25.56/7.09
POL(c80(x1, x2)) = x1 + x2    25.56/7.09
POL(c89(x1)) = x1    25.56/7.09
POL(lookbody(x1, x2)) = 0    25.56/7.09
POL(lookbody[Ite](x1, x2, x3)) = [3] + [3]x2 + [3]x3   
25.56/7.09
25.56/7.09

(14) Obligation:

Complexity Dependency Tuples Problem
Rules:

!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.56/7.09
!EQ(0, S(z0)) → False 25.56/7.09
!EQ(S(z0), 0) → False 25.56/7.09
!EQ(0, 0) → True 25.56/7.09
and(False, False) → False 25.56/7.09
and(True, False) → False 25.56/7.09
and(False, True) → False 25.56/7.09
and(True, True) → True 25.56/7.09
lookvar[Ite](False, z0, Cons(z0, z1), Cons(z2, z3)) → lookvar(z0, z1, z3) 25.56/7.09
lookvar[Ite](True, z0, z1, Cons(z2, z3)) → z2 25.56/7.09
lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z1 25.56/7.09
lookname[Ite](False, z0, Cons(z1, z2)) → lookname(z0, z2) 25.56/7.09
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.56/7.09
lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.56/7.09
apply[Ite][True][Ite](False, z0, z1, z2) → F 25.56/7.09
apply[Ite][True][Ite](True, z0, z1, z2) → T 25.56/7.09
run[Let][Let](z0, z1, z2, z3) → run[Let][Let][Let](z0, z1, z2, z3, lookname(z2, z0)) 25.56/7.09
eeval(Error(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Error(z0, z1), z2, z3, z4) 25.56/7.09
eeval(F, z0, z1, z2) → F 25.56/7.09
eeval(T, z0, z1, z2) → T 25.56/7.09
eeval(Fun(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Fun(z0, z1), z2, z3, z4) 25.56/7.09
eeval(Eq(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Eq(z0, z1), z2, z3, z4) 25.56/7.09
eeval(ITE(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](False, ITE(z0, z1, z2), z3, z4, z5) 25.56/7.09
eeval(Bsf(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](True, Bsf(z0, z1, z2), z3, z4, z5) 25.56/7.09
eeval(Var(z0), z1, z2, z3) → lookvar(z0, z1, z2) 25.56/7.09
run(Cons(Fun(z0, z1), z2), z3) → run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) 25.56/7.09
eqExp(Error(z0, z1), Error(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.56/7.09
eqExp(Error(z0, z1), F) → False 25.56/7.09
eqExp(Error(z0, z1), T) → False 25.56/7.09
eqExp(Error(z0, z1), Fun(z2, z3)) → False 25.56/7.09
eqExp(Error(z0, z1), Eq(z2, z3)) → False 25.56/7.09
eqExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
eqExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
eqExp(Error(z0, z1), Var(z2)) → False 25.56/7.09
eqExp(F, Error(z0, z1)) → False 25.56/7.09
eqExp(F, F) → True 25.56/7.09
eqExp(F, T) → False 25.56/7.09
eqExp(F, Fun(z0, z1)) → False 25.56/7.09
eqExp(F, Eq(z0, z1)) → False 25.56/7.09
eqExp(F, ITE(z0, z1, z2)) → False 25.56/7.09
eqExp(F, Bsf(z0, z1, z2)) → False 25.56/7.09
eqExp(F, Var(z0)) → False 25.56/7.09
eqExp(T, Error(z0, z1)) → False 25.56/7.09
eqExp(T, F) → False 25.56/7.09
eqExp(T, T) → True 25.56/7.09
eqExp(T, Fun(z0, z1)) → False 25.56/7.09
eqExp(T, Eq(z0, z1)) → False 25.56/7.09
eqExp(T, ITE(z0, z1, z2)) → False 25.56/7.09
eqExp(T, Bsf(z0, z1, z2)) → False 25.56/7.09
eqExp(T, Var(z0)) → False 25.56/7.09
eqExp(Fun(z0, z1), Error(z2, z3)) → False 25.56/7.09
eqExp(Fun(z0, z1), F) → False 25.56/7.09
eqExp(Fun(z0, z1), T) → False 25.56/7.09
eqExp(Fun(z0, z1), Fun(z2, z3)) → and(!EQ(z0, z2), eqExp(z1, z3)) 25.56/7.09
eqExp(Fun(z0, z1), Eq(z2, z3)) → False 25.56/7.09
eqExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
eqExp(Fun(z0, z1), Var(z2)) → False 25.56/7.09
eqExp(Eq(z0, z1), Error(z2, z3)) → False 25.56/7.09
eqExp(Eq(z0, z1), F) → False 25.56/7.09
eqExp(Eq(z0, z1), T) → False 25.56/7.09
eqExp(Eq(z0, z1), Fun(z2, z3)) → False 25.56/7.09
eqExp(Eq(z0, z1), Eq(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.56/7.09
eqExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
eqExp(Eq(z0, z1), Var(z2)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), F) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), T) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) 25.56/7.09
eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), Var(z3)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), F) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), T) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → and(True, and(eqExp(z1, z4), eqExp(z2, z5))) 25.56/7.09
eqExp(Bsf(z0, z1, z2), Var(z3)) → False 25.56/7.09
eqExp(Var(z0), Error(z1, z2)) → False 25.56/7.09
eqExp(Var(z0), F) → False 25.56/7.09
eqExp(Var(z0), T) → False 25.56/7.09
eqExp(Var(z0), Fun(z1, z2)) → False 25.56/7.09
eqExp(Var(z0), Eq(z1, z2)) → False 25.56/7.09
eqExp(Var(z0), ITE(z1, z2, z3)) → False 25.56/7.09
eqExp(Var(z0), Bsf(z1, z2, z3)) → False 25.56/7.09
eqExp(Var(z0), Var(z1)) → !EQ(z0, z1) 25.56/7.09
checkConstrExp(Error(z0, z1), Error(z2, z3)) → True 25.56/7.09
checkConstrExp(Error(z0, z1), F) → False 25.56/7.09
checkConstrExp(Error(z0, z1), T) → False 25.56/7.09
checkConstrExp(Error(z0, z1), Fun(z2, z3)) → False 25.56/7.09
checkConstrExp(Error(z0, z1), Eq(z2, z3)) → False 25.56/7.09
checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Error(z0, z1), Var(z2)) → False 25.56/7.09
checkConstrExp(F, Error(z0, z1)) → False 25.56/7.09
checkConstrExp(F, F) → True 25.56/7.09
checkConstrExp(F, T) → False 25.56/7.09
checkConstrExp(F, Fun(z0, z1)) → False 25.56/7.09
checkConstrExp(F, Eq(z0, z1)) → False 25.56/7.09
checkConstrExp(F, ITE(z0, z1, z2)) → False 25.56/7.09
checkConstrExp(F, Bsf(z0, z1, z2)) → False 25.56/7.09
checkConstrExp(F, Var(z0)) → False 25.56/7.09
checkConstrExp(T, Error(z0, z1)) → False 25.56/7.09
checkConstrExp(T, F) → False 25.56/7.09
checkConstrExp(T, T) → True 25.56/7.09
checkConstrExp(T, Fun(z0, z1)) → False 25.56/7.09
checkConstrExp(T, Eq(z0, z1)) → False 25.56/7.09
checkConstrExp(T, ITE(z0, z1, z2)) → False 25.56/7.09
checkConstrExp(T, Bsf(z0, z1, z2)) → False 25.56/7.09
checkConstrExp(T, Var(z0)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), Error(z2, z3)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), F) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), T) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), Fun(z2, z3)) → True 25.56/7.09
checkConstrExp(Fun(z0, z1), Eq(z2, z3)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), Var(z2)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Error(z2, z3)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), F) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), T) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Fun(z2, z3)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Eq(z2, z3)) → True 25.56/7.09
checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Var(z2)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), F) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), T) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → True 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Var(z3)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), F) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), T) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → True 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Var(z3)) → False 25.56/7.09
checkConstrExp(Var(z0), Error(z1, z2)) → False 25.56/7.09
checkConstrExp(Var(z0), F) → False 25.56/7.09
checkConstrExp(Var(z0), T) → False 25.56/7.09
checkConstrExp(Var(z0), Fun(z1, z2)) → False 25.56/7.09
checkConstrExp(Var(z0), Eq(z1, z2)) → False 25.56/7.09
checkConstrExp(Var(z0), ITE(z1, z2, z3)) → False 25.56/7.09
checkConstrExp(Var(z0), Bsf(z1, z2, z3)) → False 25.56/7.09
checkConstrExp(Var(z0), Var(z1)) → True 25.56/7.09
lookname(z0, Cons(Fun(z1, z2), z3)) → lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.56/7.09
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.56/7.09
getVar(Var(z0)) → z0 25.56/7.09
getIfTrue(ITE(z0, z1, z2)) → z1 25.56/7.09
getIfGuard(ITE(z0, z1, z2)) → z0 25.56/7.09
getIfFalse(ITE(z0, z1, z2)) → z2 25.56/7.09
getFuncName(Fun(z0, z1)) → z0 25.56/7.09
getFuncExp(Fun(z0, z1)) → z1 25.56/7.09
getEqSecond(Eq(z0, z1)) → z1 25.56/7.09
getEqFirst(Eq(z0, z1)) → z0 25.56/7.09
getConst(Cst(z0)) → z0 25.56/7.09
getBsfSecondTerm(Bsf(z0, z1, z2)) → z2 25.56/7.09
getBsfOp(Bsf(z0, z1, z2)) → z0 25.56/7.09
getBsfFirstTerm(Bsf(z0, z1, z2)) → z1 25.56/7.09
apply(z0, z1, z2) → apply[Ite][True][Ite](eqExp(z1, z2), z0, z1, z2) 25.56/7.09
lookvar(z0, Cons(z1, z2), z3) → lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) 25.56/7.09
eqOps(z0, z1) → True
Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.56/7.09
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.56/7.09
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.56/7.09
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.56/7.09
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.56/7.09
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.09
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.56/7.09
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.09
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.09
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
S tuples:

EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.09
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.56/7.09
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5))
K tuples:

RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2)))) 25.56/7.09
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.56/7.09
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5))
Defined Rule Symbols:

eeval, run, eqExp, checkConstrExp, lookname, lookbody, getVar, getIfTrue, getIfGuard, getIfFalse, getFuncName, getFuncExp, getEqSecond, getEqFirst, getConst, getBsfSecondTerm, getBsfOp, getBsfFirstTerm, apply, lookvar, eqOps, !EQ, and, lookvar[Ite], lookname[Ite], lookbody[Ite], apply[Ite][True][Ite], run[Let][Let]

Defined Pair Symbols:

!EQ', LOOKVAR[ITE], LOOKNAME[ITE], LOOKBODY[ITE], RUN[LET][LET], EQEXP, LOOKNAME, LOOKBODY, LOOKVAR, RUN

Compound Symbols:

c, c8, c11, c13, c16, c89, c154, c155, c169, c26, c53, c62, c71, c80, c1

25.56/7.09
25.56/7.09

(15) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.09
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5))
We considered the (Usable) Rules:

lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.56/7.09
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.56/7.09
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.56/7.09
!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.56/7.09
!EQ(0, S(z0)) → False 25.56/7.09
!EQ(S(z0), 0) → False 25.56/7.09
!EQ(0, 0) → True
And the Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.56/7.09
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.56/7.09
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.56/7.09
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.56/7.09
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.56/7.09
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.09
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.56/7.09
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.09
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.09
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
The order we found is given by the following interpretation:
Polynomial interpretation : 25.56/7.09

POL(!EQ(x1, x2)) = 0    25.56/7.09
POL(!EQ'(x1, x2)) = 0    25.56/7.09
POL(0) = 0    25.56/7.09
POL(Bsf(x1, x2, x3)) = x2 + x3    25.56/7.09
POL(Cons(x1, x2)) = 0    25.56/7.09
POL(EQEXP(x1, x2)) = [2]x2    25.56/7.09
POL(Eq(x1, x2)) = x1 + x2    25.56/7.09
POL(Error(x1, x2)) = x1 + x2    25.56/7.09
POL(False) = 0    25.56/7.09
POL(Fun(x1, x2)) = x1 + x2    25.56/7.09
POL(ITE(x1, x2, x3)) = [5] + x1 + x2 + x3    25.56/7.09
POL(LOOKBODY(x1, x2)) = 0    25.56/7.09
POL(LOOKBODY[ITE](x1, x2, x3)) = 0    25.56/7.09
POL(LOOKNAME(x1, x2)) = 0    25.56/7.09
POL(LOOKNAME[ITE](x1, x2, x3)) = 0    25.56/7.09
POL(LOOKVAR(x1, x2, x3)) = 0    25.56/7.09
POL(LOOKVAR[ITE](x1, x2, x3, x4)) = 0    25.56/7.09
POL(RUN(x1, x2)) = [5]x2    25.56/7.09
POL(RUN[LET][LET](x1, x2, x3, x4)) = [4]x2    25.56/7.09
POL(S(x1)) = x1    25.56/7.09
POL(True) = [3]    25.56/7.09
POL(Var(x1)) = [4] + x1    25.56/7.09
POL(c(x1)) = x1    25.56/7.09
POL(c1(x1)) = x1    25.56/7.09
POL(c11(x1)) = x1    25.56/7.09
POL(c13(x1)) = x1    25.56/7.09
POL(c154(x1, x2)) = x1 + x2    25.56/7.09
POL(c155(x1, x2)) = x1 + x2    25.56/7.09
POL(c16(x1)) = x1    25.56/7.09
POL(c169(x1, x2)) = x1 + x2    25.56/7.09
POL(c26(x1, x2)) = x1 + x2    25.56/7.09
POL(c53(x1, x2)) = x1 + x2    25.56/7.09
POL(c62(x1, x2)) = x1 + x2    25.56/7.09
POL(c71(x1, x2, x3)) = x1 + x2 + x3    25.56/7.09
POL(c8(x1)) = x1    25.56/7.09
POL(c80(x1, x2)) = x1 + x2    25.56/7.09
POL(c89(x1)) = x1    25.56/7.09
POL(lookbody(x1, x2)) = 0    25.56/7.09
POL(lookbody[Ite](x1, x2, x3)) = [3] + [3]x2 + [3]x3   
25.56/7.09
25.56/7.09

(16) Obligation:

Complexity Dependency Tuples Problem
Rules:

!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.56/7.09
!EQ(0, S(z0)) → False 25.56/7.09
!EQ(S(z0), 0) → False 25.56/7.09
!EQ(0, 0) → True 25.56/7.09
and(False, False) → False 25.56/7.09
and(True, False) → False 25.56/7.09
and(False, True) → False 25.56/7.09
and(True, True) → True 25.56/7.09
lookvar[Ite](False, z0, Cons(z0, z1), Cons(z2, z3)) → lookvar(z0, z1, z3) 25.56/7.09
lookvar[Ite](True, z0, z1, Cons(z2, z3)) → z2 25.56/7.09
lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z1 25.56/7.09
lookname[Ite](False, z0, Cons(z1, z2)) → lookname(z0, z2) 25.56/7.09
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.56/7.09
lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.56/7.09
apply[Ite][True][Ite](False, z0, z1, z2) → F 25.56/7.09
apply[Ite][True][Ite](True, z0, z1, z2) → T 25.56/7.09
run[Let][Let](z0, z1, z2, z3) → run[Let][Let][Let](z0, z1, z2, z3, lookname(z2, z0)) 25.56/7.09
eeval(Error(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Error(z0, z1), z2, z3, z4) 25.56/7.09
eeval(F, z0, z1, z2) → F 25.56/7.09
eeval(T, z0, z1, z2) → T 25.56/7.09
eeval(Fun(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Fun(z0, z1), z2, z3, z4) 25.56/7.09
eeval(Eq(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Eq(z0, z1), z2, z3, z4) 25.56/7.09
eeval(ITE(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](False, ITE(z0, z1, z2), z3, z4, z5) 25.56/7.09
eeval(Bsf(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](True, Bsf(z0, z1, z2), z3, z4, z5) 25.56/7.09
eeval(Var(z0), z1, z2, z3) → lookvar(z0, z1, z2) 25.56/7.09
run(Cons(Fun(z0, z1), z2), z3) → run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) 25.56/7.09
eqExp(Error(z0, z1), Error(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.56/7.09
eqExp(Error(z0, z1), F) → False 25.56/7.09
eqExp(Error(z0, z1), T) → False 25.56/7.09
eqExp(Error(z0, z1), Fun(z2, z3)) → False 25.56/7.09
eqExp(Error(z0, z1), Eq(z2, z3)) → False 25.56/7.09
eqExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
eqExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
eqExp(Error(z0, z1), Var(z2)) → False 25.56/7.09
eqExp(F, Error(z0, z1)) → False 25.56/7.09
eqExp(F, F) → True 25.56/7.09
eqExp(F, T) → False 25.56/7.09
eqExp(F, Fun(z0, z1)) → False 25.56/7.09
eqExp(F, Eq(z0, z1)) → False 25.56/7.09
eqExp(F, ITE(z0, z1, z2)) → False 25.56/7.09
eqExp(F, Bsf(z0, z1, z2)) → False 25.56/7.09
eqExp(F, Var(z0)) → False 25.56/7.09
eqExp(T, Error(z0, z1)) → False 25.56/7.09
eqExp(T, F) → False 25.56/7.09
eqExp(T, T) → True 25.56/7.09
eqExp(T, Fun(z0, z1)) → False 25.56/7.09
eqExp(T, Eq(z0, z1)) → False 25.56/7.09
eqExp(T, ITE(z0, z1, z2)) → False 25.56/7.09
eqExp(T, Bsf(z0, z1, z2)) → False 25.56/7.09
eqExp(T, Var(z0)) → False 25.56/7.09
eqExp(Fun(z0, z1), Error(z2, z3)) → False 25.56/7.09
eqExp(Fun(z0, z1), F) → False 25.56/7.09
eqExp(Fun(z0, z1), T) → False 25.56/7.09
eqExp(Fun(z0, z1), Fun(z2, z3)) → and(!EQ(z0, z2), eqExp(z1, z3)) 25.56/7.09
eqExp(Fun(z0, z1), Eq(z2, z3)) → False 25.56/7.09
eqExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
eqExp(Fun(z0, z1), Var(z2)) → False 25.56/7.09
eqExp(Eq(z0, z1), Error(z2, z3)) → False 25.56/7.09
eqExp(Eq(z0, z1), F) → False 25.56/7.09
eqExp(Eq(z0, z1), T) → False 25.56/7.09
eqExp(Eq(z0, z1), Fun(z2, z3)) → False 25.56/7.09
eqExp(Eq(z0, z1), Eq(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.56/7.09
eqExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
eqExp(Eq(z0, z1), Var(z2)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), F) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), T) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) 25.56/7.09
eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.56/7.09
eqExp(ITE(z0, z1, z2), Var(z3)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), F) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), T) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.56/7.09
eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → and(True, and(eqExp(z1, z4), eqExp(z2, z5))) 25.56/7.09
eqExp(Bsf(z0, z1, z2), Var(z3)) → False 25.56/7.09
eqExp(Var(z0), Error(z1, z2)) → False 25.56/7.09
eqExp(Var(z0), F) → False 25.56/7.09
eqExp(Var(z0), T) → False 25.56/7.09
eqExp(Var(z0), Fun(z1, z2)) → False 25.56/7.09
eqExp(Var(z0), Eq(z1, z2)) → False 25.56/7.09
eqExp(Var(z0), ITE(z1, z2, z3)) → False 25.56/7.09
eqExp(Var(z0), Bsf(z1, z2, z3)) → False 25.56/7.09
eqExp(Var(z0), Var(z1)) → !EQ(z0, z1) 25.56/7.09
checkConstrExp(Error(z0, z1), Error(z2, z3)) → True 25.56/7.09
checkConstrExp(Error(z0, z1), F) → False 25.56/7.09
checkConstrExp(Error(z0, z1), T) → False 25.56/7.09
checkConstrExp(Error(z0, z1), Fun(z2, z3)) → False 25.56/7.09
checkConstrExp(Error(z0, z1), Eq(z2, z3)) → False 25.56/7.09
checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Error(z0, z1), Var(z2)) → False 25.56/7.09
checkConstrExp(F, Error(z0, z1)) → False 25.56/7.09
checkConstrExp(F, F) → True 25.56/7.09
checkConstrExp(F, T) → False 25.56/7.09
checkConstrExp(F, Fun(z0, z1)) → False 25.56/7.09
checkConstrExp(F, Eq(z0, z1)) → False 25.56/7.09
checkConstrExp(F, ITE(z0, z1, z2)) → False 25.56/7.09
checkConstrExp(F, Bsf(z0, z1, z2)) → False 25.56/7.09
checkConstrExp(F, Var(z0)) → False 25.56/7.09
checkConstrExp(T, Error(z0, z1)) → False 25.56/7.09
checkConstrExp(T, F) → False 25.56/7.09
checkConstrExp(T, T) → True 25.56/7.09
checkConstrExp(T, Fun(z0, z1)) → False 25.56/7.09
checkConstrExp(T, Eq(z0, z1)) → False 25.56/7.09
checkConstrExp(T, ITE(z0, z1, z2)) → False 25.56/7.09
checkConstrExp(T, Bsf(z0, z1, z2)) → False 25.56/7.09
checkConstrExp(T, Var(z0)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), Error(z2, z3)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), F) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), T) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), Fun(z2, z3)) → True 25.56/7.09
checkConstrExp(Fun(z0, z1), Eq(z2, z3)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Fun(z0, z1), Var(z2)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Error(z2, z3)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), F) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), T) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Fun(z2, z3)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Eq(z2, z3)) → True 25.56/7.09
checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.56/7.09
checkConstrExp(Eq(z0, z1), Var(z2)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), F) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), T) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → True 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.56/7.09
checkConstrExp(ITE(z0, z1, z2), Var(z3)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), F) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), T) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → True 25.56/7.09
checkConstrExp(Bsf(z0, z1, z2), Var(z3)) → False 25.56/7.09
checkConstrExp(Var(z0), Error(z1, z2)) → False 25.56/7.09
checkConstrExp(Var(z0), F) → False 25.56/7.09
checkConstrExp(Var(z0), T) → False 25.56/7.09
checkConstrExp(Var(z0), Fun(z1, z2)) → False 25.56/7.09
checkConstrExp(Var(z0), Eq(z1, z2)) → False 25.56/7.09
checkConstrExp(Var(z0), ITE(z1, z2, z3)) → False 25.56/7.09
checkConstrExp(Var(z0), Bsf(z1, z2, z3)) → False 25.56/7.09
checkConstrExp(Var(z0), Var(z1)) → True 25.56/7.09
lookname(z0, Cons(Fun(z1, z2), z3)) → lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.56/7.09
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.56/7.09
getVar(Var(z0)) → z0 25.56/7.09
getIfTrue(ITE(z0, z1, z2)) → z1 25.56/7.09
getIfGuard(ITE(z0, z1, z2)) → z0 25.56/7.09
getIfFalse(ITE(z0, z1, z2)) → z2 25.56/7.09
getFuncName(Fun(z0, z1)) → z0 25.56/7.09
getFuncExp(Fun(z0, z1)) → z1 25.56/7.09
getEqSecond(Eq(z0, z1)) → z1 25.56/7.09
getEqFirst(Eq(z0, z1)) → z0 25.56/7.09
getConst(Cst(z0)) → z0 25.56/7.09
getBsfSecondTerm(Bsf(z0, z1, z2)) → z2 25.56/7.09
getBsfOp(Bsf(z0, z1, z2)) → z0 25.56/7.09
getBsfFirstTerm(Bsf(z0, z1, z2)) → z1 25.56/7.09
apply(z0, z1, z2) → apply[Ite][True][Ite](eqExp(z1, z2), z0, z1, z2) 25.56/7.09
lookvar(z0, Cons(z1, z2), z3) → lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) 25.56/7.09
eqOps(z0, z1) → True
Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.56/7.09
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.56/7.09
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.56/7.09
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.56/7.09
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.56/7.09
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.09
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.56/7.09
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.09
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.09
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
S tuples:

LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.56/7.09
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3))
K tuples:

RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2)))) 25.56/7.09
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.56/7.09
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.56/7.09
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.56/7.09
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.56/7.09
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5))
Defined Rule Symbols:

eeval, run, eqExp, checkConstrExp, lookname, lookbody, getVar, getIfTrue, getIfGuard, getIfFalse, getFuncName, getFuncExp, getEqSecond, getEqFirst, getConst, getBsfSecondTerm, getBsfOp, getBsfFirstTerm, apply, lookvar, eqOps, !EQ, and, lookvar[Ite], lookname[Ite], lookbody[Ite], apply[Ite][True][Ite], run[Let][Let]

Defined Pair Symbols:

!EQ', LOOKVAR[ITE], LOOKNAME[ITE], LOOKBODY[ITE], RUN[LET][LET], EQEXP, LOOKNAME, LOOKBODY, LOOKVAR, RUN

Compound Symbols:

c, c8, c11, c13, c16, c89, c154, c155, c169, c26, c53, c62, c71, c80, c1

25.56/7.09
25.56/7.09

(17) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.56/7.09
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3))
We considered the (Usable) Rules:

lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.94/7.16
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.94/7.16
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.94/7.16
!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.94/7.16
!EQ(0, S(z0)) → False 25.94/7.16
!EQ(S(z0), 0) → False 25.94/7.16
!EQ(0, 0) → True
And the Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.94/7.16
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.94/7.16
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.94/7.16
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.94/7.16
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.94/7.16
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.94/7.16
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.94/7.16
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.94/7.16
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.94/7.16
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.94/7.16
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.94/7.16
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
The order we found is given by the following interpretation:
Polynomial interpretation : 25.94/7.16

POL(!EQ(x1, x2)) = 0    25.94/7.16
POL(!EQ'(x1, x2)) = 0    25.94/7.16
POL(0) = 0    25.94/7.16
POL(Bsf(x1, x2, x3)) = x2 + x3    25.94/7.16
POL(Cons(x1, x2)) = 0    25.94/7.16
POL(EQEXP(x1, x2)) = x2    25.94/7.16
POL(Eq(x1, x2)) = [1] + x1 + x2    25.94/7.16
POL(Error(x1, x2)) = [4] + x1 + x2    25.94/7.16
POL(False) = 0    25.94/7.16
POL(Fun(x1, x2)) = x2    25.94/7.16
POL(ITE(x1, x2, x3)) = x1 + x2 + x3    25.94/7.16
POL(LOOKBODY(x1, x2)) = 0    25.94/7.16
POL(LOOKBODY[ITE](x1, x2, x3)) = 0    25.94/7.16
POL(LOOKNAME(x1, x2)) = [2]    25.94/7.16
POL(LOOKNAME[ITE](x1, x2, x3)) = [2]    25.94/7.16
POL(LOOKVAR(x1, x2, x3)) = 0    25.94/7.16
POL(LOOKVAR[ITE](x1, x2, x3, x4)) = 0    25.94/7.16
POL(RUN(x1, x2)) = [4] + [5]x2    25.94/7.16
POL(RUN[LET][LET](x1, x2, x3, x4)) = [4] + [4]x2    25.94/7.16
POL(S(x1)) = x1    25.94/7.16
POL(True) = [3]    25.94/7.16
POL(Var(x1)) = 0    25.94/7.16
POL(c(x1)) = x1    25.94/7.16
POL(c1(x1)) = x1    25.94/7.16
POL(c11(x1)) = x1    25.94/7.16
POL(c13(x1)) = x1    25.94/7.16
POL(c154(x1, x2)) = x1 + x2    25.94/7.16
POL(c155(x1, x2)) = x1 + x2    25.94/7.16
POL(c16(x1)) = x1    25.94/7.16
POL(c169(x1, x2)) = x1 + x2    25.94/7.16
POL(c26(x1, x2)) = x1 + x2    25.94/7.16
POL(c53(x1, x2)) = x1 + x2    25.94/7.16
POL(c62(x1, x2)) = x1 + x2    25.94/7.16
POL(c71(x1, x2, x3)) = x1 + x2 + x3    25.94/7.16
POL(c8(x1)) = x1    25.94/7.16
POL(c80(x1, x2)) = x1 + x2    25.94/7.16
POL(c89(x1)) = x1    25.94/7.16
POL(lookbody(x1, x2)) = 0    25.94/7.16
POL(lookbody[Ite](x1, x2, x3)) = [3] + [3]x2 + [3]x3   
25.94/7.16
25.94/7.16

(18) Obligation:

Complexity Dependency Tuples Problem
Rules:

!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.94/7.16
!EQ(0, S(z0)) → False 25.94/7.16
!EQ(S(z0), 0) → False 25.94/7.16
!EQ(0, 0) → True 25.94/7.16
and(False, False) → False 25.94/7.16
and(True, False) → False 25.94/7.16
and(False, True) → False 25.94/7.16
and(True, True) → True 25.94/7.16
lookvar[Ite](False, z0, Cons(z0, z1), Cons(z2, z3)) → lookvar(z0, z1, z3) 25.94/7.16
lookvar[Ite](True, z0, z1, Cons(z2, z3)) → z2 25.94/7.16
lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z1 25.94/7.16
lookname[Ite](False, z0, Cons(z1, z2)) → lookname(z0, z2) 25.94/7.16
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.94/7.16
lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.94/7.16
apply[Ite][True][Ite](False, z0, z1, z2) → F 25.94/7.16
apply[Ite][True][Ite](True, z0, z1, z2) → T 25.94/7.16
run[Let][Let](z0, z1, z2, z3) → run[Let][Let][Let](z0, z1, z2, z3, lookname(z2, z0)) 25.94/7.16
eeval(Error(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Error(z0, z1), z2, z3, z4) 25.94/7.16
eeval(F, z0, z1, z2) → F 25.94/7.16
eeval(T, z0, z1, z2) → T 25.94/7.16
eeval(Fun(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Fun(z0, z1), z2, z3, z4) 25.94/7.16
eeval(Eq(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Eq(z0, z1), z2, z3, z4) 25.94/7.16
eeval(ITE(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](False, ITE(z0, z1, z2), z3, z4, z5) 25.94/7.16
eeval(Bsf(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](True, Bsf(z0, z1, z2), z3, z4, z5) 25.94/7.16
eeval(Var(z0), z1, z2, z3) → lookvar(z0, z1, z2) 25.94/7.16
run(Cons(Fun(z0, z1), z2), z3) → run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) 25.94/7.16
eqExp(Error(z0, z1), Error(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.94/7.16
eqExp(Error(z0, z1), F) → False 25.94/7.16
eqExp(Error(z0, z1), T) → False 25.94/7.16
eqExp(Error(z0, z1), Fun(z2, z3)) → False 25.94/7.16
eqExp(Error(z0, z1), Eq(z2, z3)) → False 25.94/7.16
eqExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.94/7.16
eqExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.94/7.16
eqExp(Error(z0, z1), Var(z2)) → False 25.94/7.16
eqExp(F, Error(z0, z1)) → False 25.94/7.16
eqExp(F, F) → True 25.94/7.16
eqExp(F, T) → False 25.94/7.16
eqExp(F, Fun(z0, z1)) → False 25.94/7.16
eqExp(F, Eq(z0, z1)) → False 25.94/7.16
eqExp(F, ITE(z0, z1, z2)) → False 25.94/7.16
eqExp(F, Bsf(z0, z1, z2)) → False 25.94/7.16
eqExp(F, Var(z0)) → False 25.94/7.16
eqExp(T, Error(z0, z1)) → False 25.94/7.16
eqExp(T, F) → False 25.94/7.16
eqExp(T, T) → True 25.94/7.16
eqExp(T, Fun(z0, z1)) → False 25.94/7.16
eqExp(T, Eq(z0, z1)) → False 25.94/7.16
eqExp(T, ITE(z0, z1, z2)) → False 25.94/7.16
eqExp(T, Bsf(z0, z1, z2)) → False 25.94/7.16
eqExp(T, Var(z0)) → False 25.94/7.16
eqExp(Fun(z0, z1), Error(z2, z3)) → False 25.94/7.16
eqExp(Fun(z0, z1), F) → False 25.94/7.16
eqExp(Fun(z0, z1), T) → False 25.94/7.16
eqExp(Fun(z0, z1), Fun(z2, z3)) → and(!EQ(z0, z2), eqExp(z1, z3)) 25.94/7.16
eqExp(Fun(z0, z1), Eq(z2, z3)) → False 25.94/7.16
eqExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.94/7.16
eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.94/7.16
eqExp(Fun(z0, z1), Var(z2)) → False 25.94/7.16
eqExp(Eq(z0, z1), Error(z2, z3)) → False 25.94/7.16
eqExp(Eq(z0, z1), F) → False 25.94/7.16
eqExp(Eq(z0, z1), T) → False 25.94/7.16
eqExp(Eq(z0, z1), Fun(z2, z3)) → False 25.94/7.16
eqExp(Eq(z0, z1), Eq(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.94/7.16
eqExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.94/7.16
eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.94/7.16
eqExp(Eq(z0, z1), Var(z2)) → False 25.94/7.16
eqExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.94/7.16
eqExp(ITE(z0, z1, z2), F) → False 25.94/7.16
eqExp(ITE(z0, z1, z2), T) → False 25.94/7.16
eqExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.94/7.16
eqExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.94/7.16
eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) 25.94/7.16
eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.94/7.16
eqExp(ITE(z0, z1, z2), Var(z3)) → False 25.94/7.16
eqExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.94/7.16
eqExp(Bsf(z0, z1, z2), F) → False 25.94/7.16
eqExp(Bsf(z0, z1, z2), T) → False 25.94/7.16
eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.94/7.16
eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.94/7.16
eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.94/7.16
eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → and(True, and(eqExp(z1, z4), eqExp(z2, z5))) 25.94/7.16
eqExp(Bsf(z0, z1, z2), Var(z3)) → False 25.94/7.16
eqExp(Var(z0), Error(z1, z2)) → False 25.94/7.16
eqExp(Var(z0), F) → False 25.94/7.16
eqExp(Var(z0), T) → False 25.94/7.16
eqExp(Var(z0), Fun(z1, z2)) → False 25.94/7.16
eqExp(Var(z0), Eq(z1, z2)) → False 25.94/7.16
eqExp(Var(z0), ITE(z1, z2, z3)) → False 25.94/7.16
eqExp(Var(z0), Bsf(z1, z2, z3)) → False 25.94/7.16
eqExp(Var(z0), Var(z1)) → !EQ(z0, z1) 25.94/7.16
checkConstrExp(Error(z0, z1), Error(z2, z3)) → True 25.94/7.16
checkConstrExp(Error(z0, z1), F) → False 25.94/7.16
checkConstrExp(Error(z0, z1), T) → False 25.94/7.16
checkConstrExp(Error(z0, z1), Fun(z2, z3)) → False 25.94/7.16
checkConstrExp(Error(z0, z1), Eq(z2, z3)) → False 25.94/7.16
checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.94/7.16
checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.94/7.16
checkConstrExp(Error(z0, z1), Var(z2)) → False 25.94/7.16
checkConstrExp(F, Error(z0, z1)) → False 25.94/7.16
checkConstrExp(F, F) → True 25.94/7.16
checkConstrExp(F, T) → False 25.94/7.16
checkConstrExp(F, Fun(z0, z1)) → False 25.94/7.16
checkConstrExp(F, Eq(z0, z1)) → False 25.94/7.16
checkConstrExp(F, ITE(z0, z1, z2)) → False 25.94/7.16
checkConstrExp(F, Bsf(z0, z1, z2)) → False 25.94/7.16
checkConstrExp(F, Var(z0)) → False 25.94/7.16
checkConstrExp(T, Error(z0, z1)) → False 25.94/7.16
checkConstrExp(T, F) → False 25.94/7.16
checkConstrExp(T, T) → True 25.94/7.16
checkConstrExp(T, Fun(z0, z1)) → False 25.94/7.16
checkConstrExp(T, Eq(z0, z1)) → False 25.94/7.16
checkConstrExp(T, ITE(z0, z1, z2)) → False 25.94/7.16
checkConstrExp(T, Bsf(z0, z1, z2)) → False 25.94/7.16
checkConstrExp(T, Var(z0)) → False 25.94/7.16
checkConstrExp(Fun(z0, z1), Error(z2, z3)) → False 25.94/7.16
checkConstrExp(Fun(z0, z1), F) → False 25.94/7.16
checkConstrExp(Fun(z0, z1), T) → False 25.94/7.16
checkConstrExp(Fun(z0, z1), Fun(z2, z3)) → True 25.94/7.16
checkConstrExp(Fun(z0, z1), Eq(z2, z3)) → False 25.94/7.16
checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.94/7.16
checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.94/7.16
checkConstrExp(Fun(z0, z1), Var(z2)) → False 25.94/7.16
checkConstrExp(Eq(z0, z1), Error(z2, z3)) → False 25.94/7.16
checkConstrExp(Eq(z0, z1), F) → False 25.94/7.16
checkConstrExp(Eq(z0, z1), T) → False 25.94/7.16
checkConstrExp(Eq(z0, z1), Fun(z2, z3)) → False 25.94/7.16
checkConstrExp(Eq(z0, z1), Eq(z2, z3)) → True 25.94/7.16
checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.94/7.16
checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.94/7.16
checkConstrExp(Eq(z0, z1), Var(z2)) → False 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), F) → False 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), T) → False 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → True 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), Var(z3)) → False 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), F) → False 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), T) → False 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → True 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), Var(z3)) → False 25.94/7.16
checkConstrExp(Var(z0), Error(z1, z2)) → False 25.94/7.16
checkConstrExp(Var(z0), F) → False 25.94/7.16
checkConstrExp(Var(z0), T) → False 25.94/7.16
checkConstrExp(Var(z0), Fun(z1, z2)) → False 25.94/7.16
checkConstrExp(Var(z0), Eq(z1, z2)) → False 25.94/7.16
checkConstrExp(Var(z0), ITE(z1, z2, z3)) → False 25.94/7.16
checkConstrExp(Var(z0), Bsf(z1, z2, z3)) → False 25.94/7.16
checkConstrExp(Var(z0), Var(z1)) → True 25.94/7.16
lookname(z0, Cons(Fun(z1, z2), z3)) → lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.94/7.16
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.94/7.16
getVar(Var(z0)) → z0 25.94/7.16
getIfTrue(ITE(z0, z1, z2)) → z1 25.94/7.16
getIfGuard(ITE(z0, z1, z2)) → z0 25.94/7.16
getIfFalse(ITE(z0, z1, z2)) → z2 25.94/7.16
getFuncName(Fun(z0, z1)) → z0 25.94/7.16
getFuncExp(Fun(z0, z1)) → z1 25.94/7.16
getEqSecond(Eq(z0, z1)) → z1 25.94/7.16
getEqFirst(Eq(z0, z1)) → z0 25.94/7.16
getConst(Cst(z0)) → z0 25.94/7.16
getBsfSecondTerm(Bsf(z0, z1, z2)) → z2 25.94/7.16
getBsfOp(Bsf(z0, z1, z2)) → z0 25.94/7.16
getBsfFirstTerm(Bsf(z0, z1, z2)) → z1 25.94/7.16
apply(z0, z1, z2) → apply[Ite][True][Ite](eqExp(z1, z2), z0, z1, z2) 25.94/7.16
lookvar(z0, Cons(z1, z2), z3) → lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) 25.94/7.16
eqOps(z0, z1) → True
Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.94/7.16
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.94/7.16
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.94/7.16
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.94/7.16
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.94/7.16
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.94/7.16
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.94/7.16
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.94/7.16
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.94/7.16
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.94/7.16
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.94/7.16
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
S tuples:

LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.94/7.16
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.94/7.16
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3))
K tuples:

RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2)))) 25.94/7.16
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.94/7.16
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.94/7.16
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.94/7.16
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.94/7.16
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.94/7.16
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3))
Defined Rule Symbols:

eeval, run, eqExp, checkConstrExp, lookname, lookbody, getVar, getIfTrue, getIfGuard, getIfFalse, getFuncName, getFuncExp, getEqSecond, getEqFirst, getConst, getBsfSecondTerm, getBsfOp, getBsfFirstTerm, apply, lookvar, eqOps, !EQ, and, lookvar[Ite], lookname[Ite], lookbody[Ite], apply[Ite][True][Ite], run[Let][Let]

Defined Pair Symbols:

!EQ', LOOKVAR[ITE], LOOKNAME[ITE], LOOKBODY[ITE], RUN[LET][LET], EQEXP, LOOKNAME, LOOKBODY, LOOKVAR, RUN

Compound Symbols:

c, c8, c11, c13, c16, c89, c154, c155, c169, c26, c53, c62, c71, c80, c1

25.94/7.16
25.94/7.16

(19) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3))
We considered the (Usable) Rules:

lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.94/7.16
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.94/7.16
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.94/7.16
!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.94/7.16
!EQ(0, S(z0)) → False 25.94/7.16
!EQ(S(z0), 0) → False 25.94/7.16
!EQ(0, 0) → True
And the Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.94/7.16
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.94/7.16
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.94/7.16
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.94/7.16
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.94/7.16
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.94/7.16
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.94/7.16
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.94/7.16
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.94/7.16
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.94/7.16
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.94/7.16
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
The order we found is given by the following interpretation:
Polynomial interpretation : 25.94/7.16

POL(!EQ(x1, x2)) = 0    25.94/7.16
POL(!EQ'(x1, x2)) = 0    25.94/7.16
POL(0) = 0    25.94/7.16
POL(Bsf(x1, x2, x3)) = x2 + x3    25.94/7.16
POL(Cons(x1, x2)) = 0    25.94/7.16
POL(EQEXP(x1, x2)) = x2    25.94/7.16
POL(Eq(x1, x2)) = x1 + x2    25.94/7.16
POL(Error(x1, x2)) = x1 + x2    25.94/7.16
POL(False) = 0    25.94/7.16
POL(Fun(x1, x2)) = [2] + x2    25.94/7.16
POL(ITE(x1, x2, x3)) = x1 + x2 + x3    25.94/7.16
POL(LOOKBODY(x1, x2)) = 0    25.94/7.16
POL(LOOKBODY[ITE](x1, x2, x3)) = 0    25.94/7.16
POL(LOOKNAME(x1, x2)) = 0    25.94/7.16
POL(LOOKNAME[ITE](x1, x2, x3)) = 0    25.94/7.16
POL(LOOKVAR(x1, x2, x3)) = 0    25.94/7.16
POL(LOOKVAR[ITE](x1, x2, x3, x4)) = 0    25.94/7.16
POL(RUN(x1, x2)) = [3]x2    25.94/7.16
POL(RUN[LET][LET](x1, x2, x3, x4)) = x1 + [2]x2    25.94/7.16
POL(S(x1)) = x1    25.94/7.16
POL(True) = [3]    25.94/7.16
POL(Var(x1)) = 0    25.94/7.16
POL(c(x1)) = x1    25.94/7.16
POL(c1(x1)) = x1    25.94/7.16
POL(c11(x1)) = x1    25.94/7.16
POL(c13(x1)) = x1    25.94/7.16
POL(c154(x1, x2)) = x1 + x2    25.94/7.16
POL(c155(x1, x2)) = x1 + x2    25.94/7.16
POL(c16(x1)) = x1    25.94/7.16
POL(c169(x1, x2)) = x1 + x2    25.94/7.16
POL(c26(x1, x2)) = x1 + x2    25.94/7.16
POL(c53(x1, x2)) = x1 + x2    25.94/7.16
POL(c62(x1, x2)) = x1 + x2    25.94/7.16
POL(c71(x1, x2, x3)) = x1 + x2 + x3    25.94/7.16
POL(c8(x1)) = x1    25.94/7.16
POL(c80(x1, x2)) = x1 + x2    25.94/7.16
POL(c89(x1)) = x1    25.94/7.16
POL(lookbody(x1, x2)) = 0    25.94/7.16
POL(lookbody[Ite](x1, x2, x3)) = [3] + [3]x2 + [3]x3   
25.94/7.16
25.94/7.16

(20) Obligation:

Complexity Dependency Tuples Problem
Rules:

!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.94/7.16
!EQ(0, S(z0)) → False 25.94/7.16
!EQ(S(z0), 0) → False 25.94/7.16
!EQ(0, 0) → True 25.94/7.16
and(False, False) → False 25.94/7.16
and(True, False) → False 25.94/7.16
and(False, True) → False 25.94/7.16
and(True, True) → True 25.94/7.16
lookvar[Ite](False, z0, Cons(z0, z1), Cons(z2, z3)) → lookvar(z0, z1, z3) 25.94/7.16
lookvar[Ite](True, z0, z1, Cons(z2, z3)) → z2 25.94/7.16
lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z1 25.94/7.16
lookname[Ite](False, z0, Cons(z1, z2)) → lookname(z0, z2) 25.94/7.16
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.94/7.16
lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.94/7.16
apply[Ite][True][Ite](False, z0, z1, z2) → F 25.94/7.16
apply[Ite][True][Ite](True, z0, z1, z2) → T 25.94/7.16
run[Let][Let](z0, z1, z2, z3) → run[Let][Let][Let](z0, z1, z2, z3, lookname(z2, z0)) 25.94/7.16
eeval(Error(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Error(z0, z1), z2, z3, z4) 25.94/7.16
eeval(F, z0, z1, z2) → F 25.94/7.16
eeval(T, z0, z1, z2) → T 25.94/7.16
eeval(Fun(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Fun(z0, z1), z2, z3, z4) 25.94/7.16
eeval(Eq(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Eq(z0, z1), z2, z3, z4) 25.94/7.16
eeval(ITE(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](False, ITE(z0, z1, z2), z3, z4, z5) 25.94/7.16
eeval(Bsf(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](True, Bsf(z0, z1, z2), z3, z4, z5) 25.94/7.16
eeval(Var(z0), z1, z2, z3) → lookvar(z0, z1, z2) 25.94/7.16
run(Cons(Fun(z0, z1), z2), z3) → run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) 25.94/7.16
eqExp(Error(z0, z1), Error(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.94/7.16
eqExp(Error(z0, z1), F) → False 25.94/7.16
eqExp(Error(z0, z1), T) → False 25.94/7.16
eqExp(Error(z0, z1), Fun(z2, z3)) → False 25.94/7.16
eqExp(Error(z0, z1), Eq(z2, z3)) → False 25.94/7.16
eqExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.94/7.16
eqExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.94/7.16
eqExp(Error(z0, z1), Var(z2)) → False 25.94/7.16
eqExp(F, Error(z0, z1)) → False 25.94/7.16
eqExp(F, F) → True 25.94/7.16
eqExp(F, T) → False 25.94/7.16
eqExp(F, Fun(z0, z1)) → False 25.94/7.16
eqExp(F, Eq(z0, z1)) → False 25.94/7.16
eqExp(F, ITE(z0, z1, z2)) → False 25.94/7.16
eqExp(F, Bsf(z0, z1, z2)) → False 25.94/7.16
eqExp(F, Var(z0)) → False 25.94/7.16
eqExp(T, Error(z0, z1)) → False 25.94/7.16
eqExp(T, F) → False 25.94/7.16
eqExp(T, T) → True 25.94/7.16
eqExp(T, Fun(z0, z1)) → False 25.94/7.16
eqExp(T, Eq(z0, z1)) → False 25.94/7.16
eqExp(T, ITE(z0, z1, z2)) → False 25.94/7.16
eqExp(T, Bsf(z0, z1, z2)) → False 25.94/7.16
eqExp(T, Var(z0)) → False 25.94/7.16
eqExp(Fun(z0, z1), Error(z2, z3)) → False 25.94/7.16
eqExp(Fun(z0, z1), F) → False 25.94/7.16
eqExp(Fun(z0, z1), T) → False 25.94/7.16
eqExp(Fun(z0, z1), Fun(z2, z3)) → and(!EQ(z0, z2), eqExp(z1, z3)) 25.94/7.16
eqExp(Fun(z0, z1), Eq(z2, z3)) → False 25.94/7.16
eqExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.94/7.16
eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.94/7.16
eqExp(Fun(z0, z1), Var(z2)) → False 25.94/7.16
eqExp(Eq(z0, z1), Error(z2, z3)) → False 25.94/7.16
eqExp(Eq(z0, z1), F) → False 25.94/7.16
eqExp(Eq(z0, z1), T) → False 25.94/7.16
eqExp(Eq(z0, z1), Fun(z2, z3)) → False 25.94/7.16
eqExp(Eq(z0, z1), Eq(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 25.94/7.16
eqExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.94/7.16
eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.94/7.16
eqExp(Eq(z0, z1), Var(z2)) → False 25.94/7.16
eqExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.94/7.16
eqExp(ITE(z0, z1, z2), F) → False 25.94/7.16
eqExp(ITE(z0, z1, z2), T) → False 25.94/7.16
eqExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.94/7.16
eqExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.94/7.16
eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) 25.94/7.16
eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.94/7.16
eqExp(ITE(z0, z1, z2), Var(z3)) → False 25.94/7.16
eqExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.94/7.16
eqExp(Bsf(z0, z1, z2), F) → False 25.94/7.16
eqExp(Bsf(z0, z1, z2), T) → False 25.94/7.16
eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.94/7.16
eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.94/7.16
eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.94/7.16
eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → and(True, and(eqExp(z1, z4), eqExp(z2, z5))) 25.94/7.16
eqExp(Bsf(z0, z1, z2), Var(z3)) → False 25.94/7.16
eqExp(Var(z0), Error(z1, z2)) → False 25.94/7.16
eqExp(Var(z0), F) → False 25.94/7.16
eqExp(Var(z0), T) → False 25.94/7.16
eqExp(Var(z0), Fun(z1, z2)) → False 25.94/7.16
eqExp(Var(z0), Eq(z1, z2)) → False 25.94/7.16
eqExp(Var(z0), ITE(z1, z2, z3)) → False 25.94/7.16
eqExp(Var(z0), Bsf(z1, z2, z3)) → False 25.94/7.16
eqExp(Var(z0), Var(z1)) → !EQ(z0, z1) 25.94/7.16
checkConstrExp(Error(z0, z1), Error(z2, z3)) → True 25.94/7.16
checkConstrExp(Error(z0, z1), F) → False 25.94/7.16
checkConstrExp(Error(z0, z1), T) → False 25.94/7.16
checkConstrExp(Error(z0, z1), Fun(z2, z3)) → False 25.94/7.16
checkConstrExp(Error(z0, z1), Eq(z2, z3)) → False 25.94/7.16
checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) → False 25.94/7.16
checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 25.94/7.16
checkConstrExp(Error(z0, z1), Var(z2)) → False 25.94/7.16
checkConstrExp(F, Error(z0, z1)) → False 25.94/7.16
checkConstrExp(F, F) → True 25.94/7.16
checkConstrExp(F, T) → False 25.94/7.16
checkConstrExp(F, Fun(z0, z1)) → False 25.94/7.16
checkConstrExp(F, Eq(z0, z1)) → False 25.94/7.16
checkConstrExp(F, ITE(z0, z1, z2)) → False 25.94/7.16
checkConstrExp(F, Bsf(z0, z1, z2)) → False 25.94/7.16
checkConstrExp(F, Var(z0)) → False 25.94/7.16
checkConstrExp(T, Error(z0, z1)) → False 25.94/7.16
checkConstrExp(T, F) → False 25.94/7.16
checkConstrExp(T, T) → True 25.94/7.16
checkConstrExp(T, Fun(z0, z1)) → False 25.94/7.16
checkConstrExp(T, Eq(z0, z1)) → False 25.94/7.16
checkConstrExp(T, ITE(z0, z1, z2)) → False 25.94/7.16
checkConstrExp(T, Bsf(z0, z1, z2)) → False 25.94/7.16
checkConstrExp(T, Var(z0)) → False 25.94/7.16
checkConstrExp(Fun(z0, z1), Error(z2, z3)) → False 25.94/7.16
checkConstrExp(Fun(z0, z1), F) → False 25.94/7.16
checkConstrExp(Fun(z0, z1), T) → False 25.94/7.16
checkConstrExp(Fun(z0, z1), Fun(z2, z3)) → True 25.94/7.16
checkConstrExp(Fun(z0, z1), Eq(z2, z3)) → False 25.94/7.16
checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 25.94/7.16
checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 25.94/7.16
checkConstrExp(Fun(z0, z1), Var(z2)) → False 25.94/7.16
checkConstrExp(Eq(z0, z1), Error(z2, z3)) → False 25.94/7.16
checkConstrExp(Eq(z0, z1), F) → False 25.94/7.16
checkConstrExp(Eq(z0, z1), T) → False 25.94/7.16
checkConstrExp(Eq(z0, z1), Fun(z2, z3)) → False 25.94/7.16
checkConstrExp(Eq(z0, z1), Eq(z2, z3)) → True 25.94/7.16
checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 25.94/7.16
checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 25.94/7.16
checkConstrExp(Eq(z0, z1), Var(z2)) → False 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) → False 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), F) → False 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), T) → False 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → True 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 25.94/7.16
checkConstrExp(ITE(z0, z1, z2), Var(z3)) → False 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), F) → False 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), T) → False 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → True 25.94/7.16
checkConstrExp(Bsf(z0, z1, z2), Var(z3)) → False 25.94/7.16
checkConstrExp(Var(z0), Error(z1, z2)) → False 25.94/7.16
checkConstrExp(Var(z0), F) → False 25.94/7.16
checkConstrExp(Var(z0), T) → False 25.94/7.16
checkConstrExp(Var(z0), Fun(z1, z2)) → False 25.94/7.16
checkConstrExp(Var(z0), Eq(z1, z2)) → False 25.94/7.16
checkConstrExp(Var(z0), ITE(z1, z2, z3)) → False 25.94/7.16
checkConstrExp(Var(z0), Bsf(z1, z2, z3)) → False 25.94/7.16
checkConstrExp(Var(z0), Var(z1)) → True 25.94/7.16
lookname(z0, Cons(Fun(z1, z2), z3)) → lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.94/7.16
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.94/7.16
getVar(Var(z0)) → z0 25.94/7.16
getIfTrue(ITE(z0, z1, z2)) → z1 25.94/7.16
getIfGuard(ITE(z0, z1, z2)) → z0 25.94/7.16
getIfFalse(ITE(z0, z1, z2)) → z2 25.94/7.16
getFuncName(Fun(z0, z1)) → z0 25.94/7.16
getFuncExp(Fun(z0, z1)) → z1 25.94/7.16
getEqSecond(Eq(z0, z1)) → z1 25.94/7.16
getEqFirst(Eq(z0, z1)) → z0 25.94/7.16
getConst(Cst(z0)) → z0 25.94/7.16
getBsfSecondTerm(Bsf(z0, z1, z2)) → z2 25.94/7.16
getBsfOp(Bsf(z0, z1, z2)) → z0 25.94/7.16
getBsfFirstTerm(Bsf(z0, z1, z2)) → z1 25.94/7.16
apply(z0, z1, z2) → apply[Ite][True][Ite](eqExp(z1, z2), z0, z1, z2) 25.94/7.16
lookvar(z0, Cons(z1, z2), z3) → lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) 25.94/7.16
eqOps(z0, z1) → True
Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.94/7.16
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.94/7.16
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.94/7.16
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 25.94/7.16
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.94/7.16
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.94/7.16
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.94/7.16
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.94/7.16
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 25.94/7.16
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.94/7.16
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.94/7.16
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
S tuples:

LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.94/7.16
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1))
K tuples:

RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2)))) 25.94/7.16
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 25.94/7.16
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 25.94/7.16
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 25.94/7.16
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 25.94/7.16
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 25.94/7.16
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 25.94/7.16
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3))
Defined Rule Symbols:

eeval, run, eqExp, checkConstrExp, lookname, lookbody, getVar, getIfTrue, getIfGuard, getIfFalse, getFuncName, getFuncExp, getEqSecond, getEqFirst, getConst, getBsfSecondTerm, getBsfOp, getBsfFirstTerm, apply, lookvar, eqOps, !EQ, and, lookvar[Ite], lookname[Ite], lookbody[Ite], apply[Ite][True][Ite], run[Let][Let]

Defined Pair Symbols:

!EQ', LOOKVAR[ITE], LOOKNAME[ITE], LOOKBODY[ITE], RUN[LET][LET], EQEXP, LOOKNAME, LOOKBODY, LOOKVAR, RUN

Compound Symbols:

c, c8, c11, c13, c16, c89, c154, c155, c169, c26, c53, c62, c71, c80, c1

25.94/7.16
25.94/7.16

(21) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1))
We considered the (Usable) Rules:

lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 25.94/7.16
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 25.94/7.16
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 25.94/7.16
!EQ(S(z0), S(z1)) → !EQ(z0, z1) 25.94/7.16
!EQ(0, S(z0)) → False 25.94/7.16
!EQ(S(z0), 0) → False 25.94/7.16
!EQ(0, 0) → True
And the Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 25.94/7.16
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 25.94/7.16
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 25.94/7.16
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 26.34/7.20
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 26.34/7.20
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 26.34/7.20
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 26.34/7.20
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 26.34/7.20
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 26.34/7.20
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 26.34/7.20
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 26.34/7.20
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
The order we found is given by the following interpretation:
Polynomial interpretation : 26.34/7.20

POL(!EQ(x1, x2)) = 0    26.34/7.20
POL(!EQ'(x1, x2)) = 0    26.34/7.20
POL(0) = 0    26.34/7.20
POL(Bsf(x1, x2, x3)) = x2 + x3    26.34/7.20
POL(Cons(x1, x2)) = [2] + x2    26.34/7.20
POL(EQEXP(x1, x2)) = 0    26.34/7.20
POL(Eq(x1, x2)) = x1    26.34/7.20
POL(Error(x1, x2)) = x1 + x2    26.34/7.20
POL(False) = 0    26.34/7.20
POL(Fun(x1, x2)) = 0    26.34/7.20
POL(ITE(x1, x2, x3)) = x2 + x3    26.34/7.20
POL(LOOKBODY(x1, x2)) = 0    26.34/7.20
POL(LOOKBODY[ITE](x1, x2, x3)) = 0    26.34/7.20
POL(LOOKNAME(x1, x2)) = 0    26.34/7.20
POL(LOOKNAME[ITE](x1, x2, x3)) = 0    26.34/7.20
POL(LOOKVAR(x1, x2, x3)) = [1] + [4]x2    26.34/7.20
POL(LOOKVAR[ITE](x1, x2, x3, x4)) = [4]x3    26.34/7.20
POL(RUN(x1, x2)) = [3]x2    26.34/7.20
POL(RUN[LET][LET](x1, x2, x3, x4)) = [2]x2    26.34/7.20
POL(S(x1)) = x1    26.34/7.20
POL(True) = [3]    26.34/7.20
POL(Var(x1)) = 0    26.34/7.20
POL(c(x1)) = x1    26.34/7.20
POL(c1(x1)) = x1    26.34/7.20
POL(c11(x1)) = x1    26.34/7.20
POL(c13(x1)) = x1    26.34/7.20
POL(c154(x1, x2)) = x1 + x2    26.34/7.20
POL(c155(x1, x2)) = x1 + x2    26.34/7.20
POL(c16(x1)) = x1    26.34/7.20
POL(c169(x1, x2)) = x1 + x2    26.34/7.20
POL(c26(x1, x2)) = x1 + x2    26.34/7.20
POL(c53(x1, x2)) = x1 + x2    26.34/7.20
POL(c62(x1, x2)) = x1 + x2    26.34/7.20
POL(c71(x1, x2, x3)) = x1 + x2 + x3    26.34/7.20
POL(c8(x1)) = x1    26.34/7.20
POL(c80(x1, x2)) = x1 + x2    26.34/7.20
POL(c89(x1)) = x1    26.34/7.20
POL(lookbody(x1, x2)) = 0    26.34/7.20
POL(lookbody[Ite](x1, x2, x3)) = [3] + [3]x2 + [3]x3   
26.34/7.20
26.34/7.20

(22) Obligation:

Complexity Dependency Tuples Problem
Rules:

!EQ(S(z0), S(z1)) → !EQ(z0, z1) 26.34/7.20
!EQ(0, S(z0)) → False 26.34/7.20
!EQ(S(z0), 0) → False 26.34/7.20
!EQ(0, 0) → True 26.34/7.20
and(False, False) → False 26.34/7.20
and(True, False) → False 26.34/7.20
and(False, True) → False 26.34/7.20
and(True, True) → True 26.34/7.20
lookvar[Ite](False, z0, Cons(z0, z1), Cons(z2, z3)) → lookvar(z0, z1, z3) 26.34/7.20
lookvar[Ite](True, z0, z1, Cons(z2, z3)) → z2 26.34/7.20
lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z1 26.34/7.20
lookname[Ite](False, z0, Cons(z1, z2)) → lookname(z0, z2) 26.34/7.20
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 26.34/7.20
lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 26.34/7.20
apply[Ite][True][Ite](False, z0, z1, z2) → F 26.34/7.20
apply[Ite][True][Ite](True, z0, z1, z2) → T 26.34/7.20
run[Let][Let](z0, z1, z2, z3) → run[Let][Let][Let](z0, z1, z2, z3, lookname(z2, z0)) 26.34/7.20
eeval(Error(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Error(z0, z1), z2, z3, z4) 26.34/7.20
eeval(F, z0, z1, z2) → F 26.34/7.20
eeval(T, z0, z1, z2) → T 26.34/7.20
eeval(Fun(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Fun(z0, z1), z2, z3, z4) 26.34/7.20
eeval(Eq(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Eq(z0, z1), z2, z3, z4) 26.34/7.20
eeval(ITE(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](False, ITE(z0, z1, z2), z3, z4, z5) 26.34/7.20
eeval(Bsf(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](True, Bsf(z0, z1, z2), z3, z4, z5) 26.34/7.20
eeval(Var(z0), z1, z2, z3) → lookvar(z0, z1, z2) 26.34/7.20
run(Cons(Fun(z0, z1), z2), z3) → run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) 26.34/7.20
eqExp(Error(z0, z1), Error(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 26.34/7.20
eqExp(Error(z0, z1), F) → False 26.34/7.20
eqExp(Error(z0, z1), T) → False 26.34/7.20
eqExp(Error(z0, z1), Fun(z2, z3)) → False 26.34/7.20
eqExp(Error(z0, z1), Eq(z2, z3)) → False 26.34/7.20
eqExp(Error(z0, z1), ITE(z2, z3, z4)) → False 26.34/7.20
eqExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 26.34/7.20
eqExp(Error(z0, z1), Var(z2)) → False 26.34/7.20
eqExp(F, Error(z0, z1)) → False 26.34/7.20
eqExp(F, F) → True 26.34/7.20
eqExp(F, T) → False 26.34/7.20
eqExp(F, Fun(z0, z1)) → False 26.34/7.20
eqExp(F, Eq(z0, z1)) → False 26.34/7.20
eqExp(F, ITE(z0, z1, z2)) → False 26.34/7.20
eqExp(F, Bsf(z0, z1, z2)) → False 26.34/7.20
eqExp(F, Var(z0)) → False 26.34/7.20
eqExp(T, Error(z0, z1)) → False 26.34/7.20
eqExp(T, F) → False 26.34/7.20
eqExp(T, T) → True 26.34/7.20
eqExp(T, Fun(z0, z1)) → False 26.34/7.20
eqExp(T, Eq(z0, z1)) → False 26.34/7.20
eqExp(T, ITE(z0, z1, z2)) → False 26.34/7.20
eqExp(T, Bsf(z0, z1, z2)) → False 26.34/7.20
eqExp(T, Var(z0)) → False 26.34/7.20
eqExp(Fun(z0, z1), Error(z2, z3)) → False 26.34/7.20
eqExp(Fun(z0, z1), F) → False 26.34/7.20
eqExp(Fun(z0, z1), T) → False 26.34/7.20
eqExp(Fun(z0, z1), Fun(z2, z3)) → and(!EQ(z0, z2), eqExp(z1, z3)) 26.34/7.20
eqExp(Fun(z0, z1), Eq(z2, z3)) → False 26.34/7.20
eqExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 26.34/7.20
eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 26.34/7.20
eqExp(Fun(z0, z1), Var(z2)) → False 26.34/7.20
eqExp(Eq(z0, z1), Error(z2, z3)) → False 26.34/7.20
eqExp(Eq(z0, z1), F) → False 26.34/7.20
eqExp(Eq(z0, z1), T) → False 26.34/7.20
eqExp(Eq(z0, z1), Fun(z2, z3)) → False 26.34/7.20
eqExp(Eq(z0, z1), Eq(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 26.34/7.20
eqExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 26.34/7.20
eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 26.34/7.20
eqExp(Eq(z0, z1), Var(z2)) → False 26.34/7.20
eqExp(ITE(z0, z1, z2), Error(z3, z4)) → False 26.34/7.20
eqExp(ITE(z0, z1, z2), F) → False 26.34/7.20
eqExp(ITE(z0, z1, z2), T) → False 26.34/7.20
eqExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 26.34/7.20
eqExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 26.34/7.20
eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) 26.34/7.20
eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 26.34/7.20
eqExp(ITE(z0, z1, z2), Var(z3)) → False 26.34/7.20
eqExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 26.34/7.20
eqExp(Bsf(z0, z1, z2), F) → False 26.34/7.20
eqExp(Bsf(z0, z1, z2), T) → False 26.34/7.20
eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 26.34/7.20
eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 26.34/7.20
eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 26.34/7.20
eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → and(True, and(eqExp(z1, z4), eqExp(z2, z5))) 26.34/7.20
eqExp(Bsf(z0, z1, z2), Var(z3)) → False 26.34/7.20
eqExp(Var(z0), Error(z1, z2)) → False 26.34/7.20
eqExp(Var(z0), F) → False 26.34/7.20
eqExp(Var(z0), T) → False 26.34/7.20
eqExp(Var(z0), Fun(z1, z2)) → False 26.34/7.20
eqExp(Var(z0), Eq(z1, z2)) → False 26.34/7.20
eqExp(Var(z0), ITE(z1, z2, z3)) → False 26.34/7.20
eqExp(Var(z0), Bsf(z1, z2, z3)) → False 26.34/7.20
eqExp(Var(z0), Var(z1)) → !EQ(z0, z1) 26.34/7.20
checkConstrExp(Error(z0, z1), Error(z2, z3)) → True 26.34/7.20
checkConstrExp(Error(z0, z1), F) → False 26.34/7.20
checkConstrExp(Error(z0, z1), T) → False 26.34/7.20
checkConstrExp(Error(z0, z1), Fun(z2, z3)) → False 26.34/7.20
checkConstrExp(Error(z0, z1), Eq(z2, z3)) → False 26.34/7.20
checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) → False 26.34/7.20
checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 26.34/7.20
checkConstrExp(Error(z0, z1), Var(z2)) → False 26.34/7.20
checkConstrExp(F, Error(z0, z1)) → False 26.34/7.20
checkConstrExp(F, F) → True 26.34/7.20
checkConstrExp(F, T) → False 26.34/7.20
checkConstrExp(F, Fun(z0, z1)) → False 26.34/7.20
checkConstrExp(F, Eq(z0, z1)) → False 26.34/7.20
checkConstrExp(F, ITE(z0, z1, z2)) → False 26.34/7.20
checkConstrExp(F, Bsf(z0, z1, z2)) → False 26.34/7.20
checkConstrExp(F, Var(z0)) → False 26.34/7.20
checkConstrExp(T, Error(z0, z1)) → False 26.34/7.20
checkConstrExp(T, F) → False 26.34/7.20
checkConstrExp(T, T) → True 26.34/7.20
checkConstrExp(T, Fun(z0, z1)) → False 26.34/7.20
checkConstrExp(T, Eq(z0, z1)) → False 26.34/7.20
checkConstrExp(T, ITE(z0, z1, z2)) → False 26.34/7.20
checkConstrExp(T, Bsf(z0, z1, z2)) → False 26.34/7.20
checkConstrExp(T, Var(z0)) → False 26.34/7.20
checkConstrExp(Fun(z0, z1), Error(z2, z3)) → False 26.34/7.20
checkConstrExp(Fun(z0, z1), F) → False 26.34/7.20
checkConstrExp(Fun(z0, z1), T) → False 26.34/7.20
checkConstrExp(Fun(z0, z1), Fun(z2, z3)) → True 26.34/7.20
checkConstrExp(Fun(z0, z1), Eq(z2, z3)) → False 26.34/7.20
checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 26.34/7.20
checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 26.34/7.20
checkConstrExp(Fun(z0, z1), Var(z2)) → False 26.34/7.20
checkConstrExp(Eq(z0, z1), Error(z2, z3)) → False 26.34/7.20
checkConstrExp(Eq(z0, z1), F) → False 26.34/7.20
checkConstrExp(Eq(z0, z1), T) → False 26.34/7.20
checkConstrExp(Eq(z0, z1), Fun(z2, z3)) → False 26.34/7.20
checkConstrExp(Eq(z0, z1), Eq(z2, z3)) → True 26.34/7.20
checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 26.34/7.20
checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 26.34/7.20
checkConstrExp(Eq(z0, z1), Var(z2)) → False 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) → False 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), F) → False 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), T) → False 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → True 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), Var(z3)) → False 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), F) → False 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), T) → False 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → True 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), Var(z3)) → False 26.34/7.20
checkConstrExp(Var(z0), Error(z1, z2)) → False 26.34/7.20
checkConstrExp(Var(z0), F) → False 26.34/7.20
checkConstrExp(Var(z0), T) → False 26.34/7.20
checkConstrExp(Var(z0), Fun(z1, z2)) → False 26.34/7.20
checkConstrExp(Var(z0), Eq(z1, z2)) → False 26.34/7.20
checkConstrExp(Var(z0), ITE(z1, z2, z3)) → False 26.34/7.20
checkConstrExp(Var(z0), Bsf(z1, z2, z3)) → False 26.34/7.20
checkConstrExp(Var(z0), Var(z1)) → True 26.34/7.20
lookname(z0, Cons(Fun(z1, z2), z3)) → lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 26.34/7.20
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 26.34/7.20
getVar(Var(z0)) → z0 26.34/7.20
getIfTrue(ITE(z0, z1, z2)) → z1 26.34/7.20
getIfGuard(ITE(z0, z1, z2)) → z0 26.34/7.20
getIfFalse(ITE(z0, z1, z2)) → z2 26.34/7.20
getFuncName(Fun(z0, z1)) → z0 26.34/7.20
getFuncExp(Fun(z0, z1)) → z1 26.34/7.20
getEqSecond(Eq(z0, z1)) → z1 26.34/7.20
getEqFirst(Eq(z0, z1)) → z0 26.34/7.20
getConst(Cst(z0)) → z0 26.34/7.20
getBsfSecondTerm(Bsf(z0, z1, z2)) → z2 26.34/7.20
getBsfOp(Bsf(z0, z1, z2)) → z0 26.34/7.20
getBsfFirstTerm(Bsf(z0, z1, z2)) → z1 26.34/7.20
apply(z0, z1, z2) → apply[Ite][True][Ite](eqExp(z1, z2), z0, z1, z2) 26.34/7.20
lookvar(z0, Cons(z1, z2), z3) → lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) 26.34/7.20
eqOps(z0, z1) → True
Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 26.34/7.20
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 26.34/7.20
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 26.34/7.20
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 26.34/7.20
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 26.34/7.20
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 26.34/7.20
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 26.34/7.20
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 26.34/7.20
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 26.34/7.20
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 26.34/7.20
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 26.34/7.20
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
S tuples:

LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1))
K tuples:

RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2)))) 26.34/7.20
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 26.34/7.20
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 26.34/7.20
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 26.34/7.20
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 26.34/7.20
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 26.34/7.20
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 26.34/7.20
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1))
Defined Rule Symbols:

eeval, run, eqExp, checkConstrExp, lookname, lookbody, getVar, getIfTrue, getIfGuard, getIfFalse, getFuncName, getFuncExp, getEqSecond, getEqFirst, getConst, getBsfSecondTerm, getBsfOp, getBsfFirstTerm, apply, lookvar, eqOps, !EQ, and, lookvar[Ite], lookname[Ite], lookbody[Ite], apply[Ite][True][Ite], run[Let][Let]

Defined Pair Symbols:

!EQ', LOOKVAR[ITE], LOOKNAME[ITE], LOOKBODY[ITE], RUN[LET][LET], EQEXP, LOOKNAME, LOOKBODY, LOOKVAR, RUN

Compound Symbols:

c, c8, c11, c13, c16, c89, c154, c155, c169, c26, c53, c62, c71, c80, c1

26.34/7.20
26.34/7.20

(23) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1))
We considered the (Usable) Rules:

lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 26.34/7.20
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 26.34/7.20
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 26.34/7.20
!EQ(S(z0), S(z1)) → !EQ(z0, z1) 26.34/7.20
!EQ(0, S(z0)) → False 26.34/7.20
!EQ(S(z0), 0) → False 26.34/7.20
!EQ(0, 0) → True
And the Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 26.34/7.20
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 26.34/7.20
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 26.34/7.20
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 26.34/7.20
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 26.34/7.20
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 26.34/7.20
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 26.34/7.20
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 26.34/7.20
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 26.34/7.20
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 26.34/7.20
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 26.34/7.20
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
The order we found is given by the following interpretation:
Polynomial interpretation : 26.34/7.20

POL(!EQ(x1, x2)) = 0    26.34/7.20
POL(!EQ'(x1, x2)) = 0    26.34/7.20
POL(0) = 0    26.34/7.20
POL(Bsf(x1, x2, x3)) = [4] + x2 + x3    26.34/7.20
POL(Cons(x1, x2)) = [2] + x2    26.34/7.20
POL(EQEXP(x1, x2)) = [2] + x1    26.34/7.20
POL(Eq(x1, x2)) = [4] + x1 + x2    26.34/7.20
POL(Error(x1, x2)) = [4] + x1 + x2    26.34/7.20
POL(False) = 0    26.34/7.20
POL(Fun(x1, x2)) = x2    26.34/7.20
POL(ITE(x1, x2, x3)) = [4] + x1 + x2 + x3    26.34/7.20
POL(LOOKBODY(x1, x2)) = 0    26.34/7.20
POL(LOOKBODY[ITE](x1, x2, x3)) = 0    26.34/7.20
POL(LOOKNAME(x1, x2)) = [2] + x2    26.34/7.20
POL(LOOKNAME[ITE](x1, x2, x3)) = x3    26.34/7.20
POL(LOOKVAR(x1, x2, x3)) = 0    26.34/7.20
POL(LOOKVAR[ITE](x1, x2, x3, x4)) = 0    26.34/7.20
POL(RUN(x1, x2)) = [4] + x1 + [3]x2    26.34/7.20
POL(RUN[LET][LET](x1, x2, x3, x4)) = [3] + x1 + [3]x2    26.34/7.20
POL(S(x1)) = x1    26.34/7.20
POL(True) = [3]    26.34/7.20
POL(Var(x1)) = [2] + x1    26.34/7.20
POL(c(x1)) = x1    26.34/7.20
POL(c1(x1)) = x1    26.34/7.20
POL(c11(x1)) = x1    26.34/7.20
POL(c13(x1)) = x1    26.34/7.20
POL(c154(x1, x2)) = x1 + x2    26.34/7.20
POL(c155(x1, x2)) = x1 + x2    26.34/7.20
POL(c16(x1)) = x1    26.34/7.20
POL(c169(x1, x2)) = x1 + x2    26.34/7.20
POL(c26(x1, x2)) = x1 + x2    26.34/7.20
POL(c53(x1, x2)) = x1 + x2    26.34/7.20
POL(c62(x1, x2)) = x1 + x2    26.34/7.20
POL(c71(x1, x2, x3)) = x1 + x2 + x3    26.34/7.20
POL(c8(x1)) = x1    26.34/7.20
POL(c80(x1, x2)) = x1 + x2    26.34/7.20
POL(c89(x1)) = x1    26.34/7.20
POL(lookbody(x1, x2)) = 0    26.34/7.20
POL(lookbody[Ite](x1, x2, x3)) = [3] + [3]x2 + [3]x3   
26.34/7.20
26.34/7.20

(24) Obligation:

Complexity Dependency Tuples Problem
Rules:

!EQ(S(z0), S(z1)) → !EQ(z0, z1) 26.34/7.20
!EQ(0, S(z0)) → False 26.34/7.20
!EQ(S(z0), 0) → False 26.34/7.20
!EQ(0, 0) → True 26.34/7.20
and(False, False) → False 26.34/7.20
and(True, False) → False 26.34/7.20
and(False, True) → False 26.34/7.20
and(True, True) → True 26.34/7.20
lookvar[Ite](False, z0, Cons(z0, z1), Cons(z2, z3)) → lookvar(z0, z1, z3) 26.34/7.20
lookvar[Ite](True, z0, z1, Cons(z2, z3)) → z2 26.34/7.20
lookname[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z1 26.34/7.20
lookname[Ite](False, z0, Cons(z1, z2)) → lookname(z0, z2) 26.34/7.20
lookbody[Ite](True, z0, Cons(Fun(z1, z2), z3)) → z2 26.34/7.20
lookbody[Ite](False, z0, Cons(z1, z2)) → lookbody(z0, z2) 26.34/7.20
apply[Ite][True][Ite](False, z0, z1, z2) → F 26.34/7.20
apply[Ite][True][Ite](True, z0, z1, z2) → T 26.34/7.20
run[Let][Let](z0, z1, z2, z3) → run[Let][Let][Let](z0, z1, z2, z3, lookname(z2, z0)) 26.34/7.20
eeval(Error(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Error(z0, z1), z2, z3, z4) 26.34/7.20
eeval(F, z0, z1, z2) → F 26.34/7.20
eeval(T, z0, z1, z2) → T 26.34/7.20
eeval(Fun(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Fun(z0, z1), z2, z3, z4) 26.34/7.20
eeval(Eq(z0, z1), z2, z3, z4) → eeval[Ite][False][Ite][False][Ite](False, Eq(z0, z1), z2, z3, z4) 26.34/7.20
eeval(ITE(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](False, ITE(z0, z1, z2), z3, z4, z5) 26.34/7.20
eeval(Bsf(z0, z1, z2), z3, z4, z5) → eeval[Ite][False][Ite][False][Ite](True, Bsf(z0, z1, z2), z3, z4, z5) 26.34/7.20
eeval(Var(z0), z1, z2, z3) → lookvar(z0, z1, z2) 26.34/7.20
run(Cons(Fun(z0, z1), z2), z3) → run[Let][Let](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))) 26.34/7.20
eqExp(Error(z0, z1), Error(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 26.34/7.20
eqExp(Error(z0, z1), F) → False 26.34/7.20
eqExp(Error(z0, z1), T) → False 26.34/7.20
eqExp(Error(z0, z1), Fun(z2, z3)) → False 26.34/7.20
eqExp(Error(z0, z1), Eq(z2, z3)) → False 26.34/7.20
eqExp(Error(z0, z1), ITE(z2, z3, z4)) → False 26.34/7.20
eqExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 26.34/7.20
eqExp(Error(z0, z1), Var(z2)) → False 26.34/7.20
eqExp(F, Error(z0, z1)) → False 26.34/7.20
eqExp(F, F) → True 26.34/7.20
eqExp(F, T) → False 26.34/7.20
eqExp(F, Fun(z0, z1)) → False 26.34/7.20
eqExp(F, Eq(z0, z1)) → False 26.34/7.20
eqExp(F, ITE(z0, z1, z2)) → False 26.34/7.20
eqExp(F, Bsf(z0, z1, z2)) → False 26.34/7.20
eqExp(F, Var(z0)) → False 26.34/7.20
eqExp(T, Error(z0, z1)) → False 26.34/7.20
eqExp(T, F) → False 26.34/7.20
eqExp(T, T) → True 26.34/7.20
eqExp(T, Fun(z0, z1)) → False 26.34/7.20
eqExp(T, Eq(z0, z1)) → False 26.34/7.20
eqExp(T, ITE(z0, z1, z2)) → False 26.34/7.20
eqExp(T, Bsf(z0, z1, z2)) → False 26.34/7.20
eqExp(T, Var(z0)) → False 26.34/7.20
eqExp(Fun(z0, z1), Error(z2, z3)) → False 26.34/7.20
eqExp(Fun(z0, z1), F) → False 26.34/7.20
eqExp(Fun(z0, z1), T) → False 26.34/7.20
eqExp(Fun(z0, z1), Fun(z2, z3)) → and(!EQ(z0, z2), eqExp(z1, z3)) 26.34/7.20
eqExp(Fun(z0, z1), Eq(z2, z3)) → False 26.34/7.20
eqExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 26.34/7.20
eqExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 26.34/7.20
eqExp(Fun(z0, z1), Var(z2)) → False 26.34/7.20
eqExp(Eq(z0, z1), Error(z2, z3)) → False 26.34/7.20
eqExp(Eq(z0, z1), F) → False 26.34/7.20
eqExp(Eq(z0, z1), T) → False 26.34/7.20
eqExp(Eq(z0, z1), Fun(z2, z3)) → False 26.34/7.20
eqExp(Eq(z0, z1), Eq(z2, z3)) → and(eqExp(z0, z2), eqExp(z1, z3)) 26.34/7.20
eqExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 26.34/7.20
eqExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 26.34/7.20
eqExp(Eq(z0, z1), Var(z2)) → False 26.34/7.20
eqExp(ITE(z0, z1, z2), Error(z3, z4)) → False 26.34/7.20
eqExp(ITE(z0, z1, z2), F) → False 26.34/7.20
eqExp(ITE(z0, z1, z2), T) → False 26.34/7.20
eqExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 26.34/7.20
eqExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 26.34/7.20
eqExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → and(eqExp(z0, z3), and(eqExp(z1, z4), eqExp(z2, z5))) 26.34/7.20
eqExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 26.34/7.20
eqExp(ITE(z0, z1, z2), Var(z3)) → False 26.34/7.20
eqExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 26.34/7.20
eqExp(Bsf(z0, z1, z2), F) → False 26.34/7.20
eqExp(Bsf(z0, z1, z2), T) → False 26.34/7.20
eqExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 26.34/7.20
eqExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 26.34/7.20
eqExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 26.34/7.20
eqExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → and(True, and(eqExp(z1, z4), eqExp(z2, z5))) 26.34/7.20
eqExp(Bsf(z0, z1, z2), Var(z3)) → False 26.34/7.20
eqExp(Var(z0), Error(z1, z2)) → False 26.34/7.20
eqExp(Var(z0), F) → False 26.34/7.20
eqExp(Var(z0), T) → False 26.34/7.20
eqExp(Var(z0), Fun(z1, z2)) → False 26.34/7.20
eqExp(Var(z0), Eq(z1, z2)) → False 26.34/7.20
eqExp(Var(z0), ITE(z1, z2, z3)) → False 26.34/7.20
eqExp(Var(z0), Bsf(z1, z2, z3)) → False 26.34/7.20
eqExp(Var(z0), Var(z1)) → !EQ(z0, z1) 26.34/7.20
checkConstrExp(Error(z0, z1), Error(z2, z3)) → True 26.34/7.20
checkConstrExp(Error(z0, z1), F) → False 26.34/7.20
checkConstrExp(Error(z0, z1), T) → False 26.34/7.20
checkConstrExp(Error(z0, z1), Fun(z2, z3)) → False 26.34/7.20
checkConstrExp(Error(z0, z1), Eq(z2, z3)) → False 26.34/7.20
checkConstrExp(Error(z0, z1), ITE(z2, z3, z4)) → False 26.34/7.20
checkConstrExp(Error(z0, z1), Bsf(z2, z3, z4)) → False 26.34/7.20
checkConstrExp(Error(z0, z1), Var(z2)) → False 26.34/7.20
checkConstrExp(F, Error(z0, z1)) → False 26.34/7.20
checkConstrExp(F, F) → True 26.34/7.20
checkConstrExp(F, T) → False 26.34/7.20
checkConstrExp(F, Fun(z0, z1)) → False 26.34/7.20
checkConstrExp(F, Eq(z0, z1)) → False 26.34/7.20
checkConstrExp(F, ITE(z0, z1, z2)) → False 26.34/7.20
checkConstrExp(F, Bsf(z0, z1, z2)) → False 26.34/7.20
checkConstrExp(F, Var(z0)) → False 26.34/7.20
checkConstrExp(T, Error(z0, z1)) → False 26.34/7.20
checkConstrExp(T, F) → False 26.34/7.20
checkConstrExp(T, T) → True 26.34/7.20
checkConstrExp(T, Fun(z0, z1)) → False 26.34/7.20
checkConstrExp(T, Eq(z0, z1)) → False 26.34/7.20
checkConstrExp(T, ITE(z0, z1, z2)) → False 26.34/7.20
checkConstrExp(T, Bsf(z0, z1, z2)) → False 26.34/7.20
checkConstrExp(T, Var(z0)) → False 26.34/7.20
checkConstrExp(Fun(z0, z1), Error(z2, z3)) → False 26.34/7.20
checkConstrExp(Fun(z0, z1), F) → False 26.34/7.20
checkConstrExp(Fun(z0, z1), T) → False 26.34/7.20
checkConstrExp(Fun(z0, z1), Fun(z2, z3)) → True 26.34/7.20
checkConstrExp(Fun(z0, z1), Eq(z2, z3)) → False 26.34/7.20
checkConstrExp(Fun(z0, z1), ITE(z2, z3, z4)) → False 26.34/7.20
checkConstrExp(Fun(z0, z1), Bsf(z2, z3, z4)) → False 26.34/7.20
checkConstrExp(Fun(z0, z1), Var(z2)) → False 26.34/7.20
checkConstrExp(Eq(z0, z1), Error(z2, z3)) → False 26.34/7.20
checkConstrExp(Eq(z0, z1), F) → False 26.34/7.20
checkConstrExp(Eq(z0, z1), T) → False 26.34/7.20
checkConstrExp(Eq(z0, z1), Fun(z2, z3)) → False 26.34/7.20
checkConstrExp(Eq(z0, z1), Eq(z2, z3)) → True 26.34/7.20
checkConstrExp(Eq(z0, z1), ITE(z2, z3, z4)) → False 26.34/7.20
checkConstrExp(Eq(z0, z1), Bsf(z2, z3, z4)) → False 26.34/7.20
checkConstrExp(Eq(z0, z1), Var(z2)) → False 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), Error(z3, z4)) → False 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), F) → False 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), T) → False 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), Fun(z3, z4)) → False 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), Eq(z3, z4)) → False 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), ITE(z3, z4, z5)) → True 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), Bsf(z3, z4, z5)) → False 26.34/7.20
checkConstrExp(ITE(z0, z1, z2), Var(z3)) → False 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), Error(z3, z4)) → False 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), F) → False 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), T) → False 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), Fun(z3, z4)) → False 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), Eq(z3, z4)) → False 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), ITE(z3, z4, z5)) → False 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → True 26.34/7.20
checkConstrExp(Bsf(z0, z1, z2), Var(z3)) → False 26.34/7.20
checkConstrExp(Var(z0), Error(z1, z2)) → False 26.34/7.20
checkConstrExp(Var(z0), F) → False 26.34/7.20
checkConstrExp(Var(z0), T) → False 26.34/7.20
checkConstrExp(Var(z0), Fun(z1, z2)) → False 26.34/7.20
checkConstrExp(Var(z0), Eq(z1, z2)) → False 26.34/7.20
checkConstrExp(Var(z0), ITE(z1, z2, z3)) → False 26.34/7.20
checkConstrExp(Var(z0), Bsf(z1, z2, z3)) → False 26.34/7.20
checkConstrExp(Var(z0), Var(z1)) → True 26.34/7.20
lookname(z0, Cons(Fun(z1, z2), z3)) → lookname[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 26.34/7.20
lookbody(z0, Cons(Fun(z1, z2), z3)) → lookbody[Ite](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)) 26.34/7.20
getVar(Var(z0)) → z0 26.34/7.20
getIfTrue(ITE(z0, z1, z2)) → z1 26.34/7.20
getIfGuard(ITE(z0, z1, z2)) → z0 26.34/7.20
getIfFalse(ITE(z0, z1, z2)) → z2 26.34/7.20
getFuncName(Fun(z0, z1)) → z0 26.34/7.20
getFuncExp(Fun(z0, z1)) → z1 26.34/7.20
getEqSecond(Eq(z0, z1)) → z1 26.34/7.20
getEqFirst(Eq(z0, z1)) → z0 26.34/7.20
getConst(Cst(z0)) → z0 26.34/7.20
getBsfSecondTerm(Bsf(z0, z1, z2)) → z2 26.34/7.20
getBsfOp(Bsf(z0, z1, z2)) → z0 26.34/7.20
getBsfFirstTerm(Bsf(z0, z1, z2)) → z1 26.34/7.20
apply(z0, z1, z2) → apply[Ite][True][Ite](eqExp(z1, z2), z0, z1, z2) 26.34/7.20
lookvar(z0, Cons(z1, z2), z3) → lookvar[Ite](!EQ(z0, z1), z0, Cons(z1, z2), z3) 26.34/7.20
eqOps(z0, z1) → True
Tuples:

!EQ'(S(z0), S(z1)) → c(!EQ'(z0, z1)) 26.34/7.20
LOOKVAR[ITE](False, z0, Cons(z0, z1), Cons(z2, z3)) → c8(LOOKVAR(z0, z1, z3)) 26.34/7.20
LOOKNAME[ITE](False, z0, Cons(z1, z2)) → c11(LOOKNAME(z0, z2)) 26.34/7.20
LOOKBODY[ITE](False, z0, Cons(z1, z2)) → c13(LOOKBODY(z0, z2)) 26.34/7.20
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 26.34/7.20
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 26.34/7.20
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 26.34/7.20
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 26.34/7.20
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 26.34/7.20
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 26.34/7.20
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 26.34/7.20
RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2))))
S tuples:none
K tuples:

RUN(Cons(Fun(z0, z1), z2), z3) → c1(RUN[LET][LET](Cons(Fun(z0, z1), z2), z3, z0, lookbody(z0, Cons(Fun(z0, z1), z2)))) 26.34/7.20
RUN[LET][LET](z0, z1, z2, z3) → c16(LOOKNAME(z2, z0)) 26.34/7.20
LOOKBODY(z0, Cons(Fun(z1, z2), z3)) → c155(LOOKBODY[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1)) 26.34/7.20
EQEXP(Bsf(z0, z1, z2), Bsf(z3, z4, z5)) → c80(EQEXP(z1, z4), EQEXP(z2, z5)) 26.34/7.20
EQEXP(Var(z0), Var(z1)) → c89(!EQ'(z0, z1)) 26.34/7.20
EQEXP(ITE(z0, z1, z2), ITE(z3, z4, z5)) → c71(EQEXP(z0, z3), EQEXP(z1, z4), EQEXP(z2, z5)) 26.34/7.20
EQEXP(Error(z0, z1), Error(z2, z3)) → c26(EQEXP(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(Eq(z0, z1), Eq(z2, z3)) → c62(EQEXP(z0, z2), EQEXP(z1, z3)) 26.34/7.20
EQEXP(Fun(z0, z1), Fun(z2, z3)) → c53(!EQ'(z0, z2), EQEXP(z1, z3)) 26.34/7.20
LOOKVAR(z0, Cons(z1, z2), z3) → c169(LOOKVAR[ITE](!EQ(z0, z1), z0, Cons(z1, z2), z3), !EQ'(z0, z1)) 26.34/7.20
LOOKNAME(z0, Cons(Fun(z1, z2), z3)) → c154(LOOKNAME[ITE](!EQ(z0, z1), z0, Cons(Fun(z1, z2), z3)), !EQ'(z0, z1))
Defined Rule Symbols:

eeval, run, eqExp, checkConstrExp, lookname, lookbody, getVar, getIfTrue, getIfGuard, getIfFalse, getFuncName, getFuncExp, getEqSecond, getEqFirst, getConst, getBsfSecondTerm, getBsfOp, getBsfFirstTerm, apply, lookvar, eqOps, !EQ, and, lookvar[Ite], lookname[Ite], lookbody[Ite], apply[Ite][True][Ite], run[Let][Let]

Defined Pair Symbols:

!EQ', LOOKVAR[ITE], LOOKNAME[ITE], LOOKBODY[ITE], RUN[LET][LET], EQEXP, LOOKNAME, LOOKBODY, LOOKVAR, RUN

Compound Symbols:

c, c8, c11, c13, c16, c89, c154, c155, c169, c26, c53, c62, c71, c80, c1

26.34/7.20
26.34/7.20

(25) SIsEmptyProof (BOTH BOUNDS(ID, ID) transformation)

The set S is empty
26.34/7.20
26.34/7.20

(26) BOUNDS(O(1), O(1))

26.34/7.20
26.34/7.20
26.34/7.28 EOF